warscript 0.0.1-dev.f48f7bb → 0.0.1-dev.f566ce7
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 +1 -3
- package/core/types/effect.lua +26 -29
- package/core/types/frame.lua +71 -22
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +100 -25
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.lua +6 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +12 -3
- package/engine/behaviour/ability/damage.lua +33 -39
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +23 -7
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -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 +15 -5
- package/engine/behaviour/ability.lua +72 -24
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +113 -53
- package/engine/buff.lua +544 -288
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +64 -26
- package/engine/internal/item/ability.lua +66 -14
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +16 -19
- package/engine/internal/item.lua +174 -94
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +8 -0
- package/engine/internal/unit/bonus.lua +50 -3
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/item.lua +3 -48
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +44 -25
- package/engine/internal/unit.lua +393 -260
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +7 -0
- package/engine/local-client.lua +86 -1
- 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/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +21 -17
- package/engine/object-data/entry/ability-type.lua +169 -28
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +28 -2
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/item-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.lua +4 -4
- 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-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +360 -119
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- 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 +7 -0
- package/engine/unit.lua +7 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/objutil/object.lua +1 -1
- package/objutil/unit.lua +8 -0
- package/operation.lua +1 -4
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- 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/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +5 -1
- package/utility/linked-set.lua +49 -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/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/internal/unit.lua
CHANGED
|
@@ -53,33 +53,40 @@ local ____math = require("math")
|
|
|
53
53
|
local min = ____math.min
|
|
54
54
|
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
55
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
|
|
56
69
|
local match = string.match
|
|
57
70
|
local ____tostring = _G.tostring
|
|
58
71
|
local setUnitAnimation = SetUnitAnimation
|
|
59
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
60
72
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
61
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
62
73
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
63
74
|
local getUnitRealField = BlzGetUnitRealField
|
|
64
75
|
local getHeroStr = GetHeroStr
|
|
65
76
|
local getHeroAgi = GetHeroAgi
|
|
66
77
|
local getHeroInt = GetHeroInt
|
|
67
|
-
local setHeroStr = SetHeroStr
|
|
68
|
-
local setHeroAgi = SetHeroAgi
|
|
69
|
-
local setHeroInt = SetHeroInt
|
|
70
78
|
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
71
79
|
local getUnitStringField = BlzGetUnitStringField
|
|
72
80
|
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
73
81
|
local setUnitRealField = BlzSetUnitRealField
|
|
74
82
|
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
75
83
|
local setUnitStringField = BlzSetUnitStringField
|
|
76
|
-
local setUnitScale = SetUnitScale
|
|
77
84
|
local setUnitPosition = SetUnitPosition
|
|
78
85
|
local setUnitTimeScale = SetUnitTimeScale
|
|
79
86
|
local getHandleId = GetHandleId
|
|
87
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
80
88
|
local createUnit = CreateUnit
|
|
81
89
|
local killUnit = KillUnit
|
|
82
|
-
local setUnitExploded = SetUnitExploded
|
|
83
90
|
local removeUnit = RemoveUnit
|
|
84
91
|
local getUnitTypeId = GetUnitTypeId
|
|
85
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -95,15 +102,12 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
95
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
96
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
97
104
|
local isUnitInRange = IsUnitInRange
|
|
98
|
-
local setResourceAmount = SetResourceAmount
|
|
99
|
-
local getResourceAmount = GetResourceAmount
|
|
100
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
101
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
102
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
103
108
|
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
104
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
105
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
106
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
107
111
|
local isUnitInvisible = IsUnitInvisible
|
|
108
112
|
local isUnitVisible = IsUnitVisible
|
|
109
113
|
local getUnitX = GetUnitX
|
|
@@ -120,15 +124,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
120
124
|
local getIssuedOrderId = GetIssuedOrderId
|
|
121
125
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
122
126
|
local unitAlive = UnitAlive
|
|
123
|
-
local unitAddType = UnitAddType
|
|
124
|
-
local unitRemoveType = UnitRemoveType
|
|
125
|
-
local isUnitIllusion = IsUnitIllusion
|
|
126
|
-
local isUnitType = IsUnitType
|
|
127
127
|
local isUnitAlly = IsUnitAlly
|
|
128
128
|
local isUnitEnemy = IsUnitEnemy
|
|
129
129
|
local getOwningPlayer = GetOwningPlayer
|
|
130
|
-
local setUnitColor = SetUnitColor
|
|
131
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
132
130
|
____exports.UnitClassification = {}
|
|
133
131
|
local UnitClassification = ____exports.UnitClassification
|
|
134
132
|
do
|
|
@@ -138,6 +136,7 @@ do
|
|
|
138
136
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
139
137
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
140
138
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
139
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
141
140
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
142
141
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
143
142
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -345,6 +344,9 @@ local function dispatchAbility(event)
|
|
|
345
344
|
}
|
|
346
345
|
)
|
|
347
346
|
end
|
|
347
|
+
local function damagingEventPreventRetaliation(self)
|
|
348
|
+
self[0] = true
|
|
349
|
+
end
|
|
348
350
|
local function damageEventPreventDeath(self, callback, ...)
|
|
349
351
|
if self[0] ~= nil then
|
|
350
352
|
return
|
|
@@ -356,7 +358,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
356
358
|
rawset(self, 1 + i, (select(i, ...)))
|
|
357
359
|
end
|
|
358
360
|
end
|
|
359
|
-
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
|
+
}
|
|
360
369
|
local jlimitopByOperator = {
|
|
361
370
|
[0] = LESS_THAN_OR_EQUAL,
|
|
362
371
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -374,15 +383,27 @@ local modifiers = {
|
|
|
374
383
|
end,
|
|
375
384
|
armor = function(unit, value)
|
|
376
385
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
377
|
-
assert(
|
|
386
|
+
assert(
|
|
387
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
388
|
+
"armor bonus ability must be made permanent",
|
|
389
|
+
unit
|
|
390
|
+
)
|
|
378
391
|
end
|
|
379
|
-
local ability = assert(
|
|
380
|
-
|
|
381
|
-
ability,
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
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
|
+
)
|
|
386
407
|
end
|
|
387
408
|
}
|
|
388
409
|
local getters = {
|
|
@@ -400,6 +421,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
400
421
|
self.unit = unit
|
|
401
422
|
self.index = index
|
|
402
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
|
+
)
|
|
403
437
|
__TS__SetDescriptor(
|
|
404
438
|
UnitWeapon.prototype,
|
|
405
439
|
"cooldown",
|
|
@@ -434,6 +468,19 @@ __TS__SetDescriptor(
|
|
|
434
468
|
},
|
|
435
469
|
true
|
|
436
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
|
+
)
|
|
437
484
|
__TS__SetDescriptor(
|
|
438
485
|
UnitWeapon.prototype,
|
|
439
486
|
"damageBase",
|
|
@@ -610,26 +657,30 @@ local fieldSetters = {
|
|
|
610
657
|
}
|
|
611
658
|
local dummies = {}
|
|
612
659
|
for ____, player in ipairs(Player.all) do
|
|
613
|
-
local dummy = assert(
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
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
|
+
)
|
|
620
671
|
ShowUnit(dummy, false)
|
|
621
672
|
dummies[player] = dummy
|
|
622
673
|
end
|
|
623
674
|
local function delayHealthChecksCallback(unit)
|
|
624
|
-
local counter = (unit[
|
|
675
|
+
local counter = (unit[104] or 0) - 1
|
|
625
676
|
if counter ~= 0 then
|
|
626
|
-
unit[
|
|
677
|
+
unit[104] = counter
|
|
627
678
|
return
|
|
628
679
|
end
|
|
629
|
-
unit[
|
|
630
|
-
local healthBonus = unit[
|
|
680
|
+
unit[104] = nil
|
|
681
|
+
local healthBonus = unit[105]
|
|
631
682
|
if healthBonus ~= nil then
|
|
632
|
-
unit[
|
|
683
|
+
unit[105] = nil
|
|
633
684
|
local handle = unit.handle
|
|
634
685
|
BlzSetUnitMaxHP(
|
|
635
686
|
handle,
|
|
@@ -638,50 +689,78 @@ local function delayHealthChecksCallback(unit)
|
|
|
638
689
|
end
|
|
639
690
|
end
|
|
640
691
|
local nextSyncId = 1
|
|
641
|
-
local unitBySyncId = setmetatable({}, {__mode = "
|
|
692
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
693
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
694
|
+
local function addAbility(unit, abilityTypeId)
|
|
695
|
+
local ____unitAddAbility_result_0
|
|
696
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
697
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
698
|
+
else
|
|
699
|
+
____unitAddAbility_result_0 = nil
|
|
700
|
+
end
|
|
701
|
+
return ____unitAddAbility_result_0
|
|
702
|
+
end
|
|
642
703
|
____exports.Unit = __TS__Class()
|
|
643
704
|
local Unit = ____exports.Unit
|
|
644
705
|
Unit.name = "Unit"
|
|
645
706
|
__TS__ClassExtends(Unit, Handle)
|
|
646
707
|
function Unit.prototype.____constructor(self, handle)
|
|
647
708
|
Handle.prototype.____constructor(self, handle)
|
|
648
|
-
local
|
|
649
|
-
nextSyncId =
|
|
650
|
-
self.syncId =
|
|
709
|
+
local ____nextSyncId_1 = nextSyncId
|
|
710
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
711
|
+
self.syncId = ____nextSyncId_1
|
|
651
712
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
652
|
-
assert(
|
|
653
|
-
|
|
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
|
+
)
|
|
654
723
|
if unitAddAbility(
|
|
655
724
|
handle,
|
|
656
725
|
fourCC("Amrf")
|
|
657
726
|
) then
|
|
658
|
-
assert(
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
727
|
+
assert(
|
|
728
|
+
unitRemoveAbility(
|
|
729
|
+
handle,
|
|
730
|
+
fourCC("Amrf")
|
|
731
|
+
),
|
|
732
|
+
"fly ability must be removed after addition",
|
|
733
|
+
self
|
|
734
|
+
)
|
|
662
735
|
end
|
|
663
736
|
unitBySyncId[self.syncId] = self
|
|
664
737
|
local ____ = self.abilities
|
|
665
738
|
end
|
|
666
|
-
function Unit.prototype.getEvent(self,
|
|
667
|
-
self.events = self.events or (
|
|
668
|
-
local eventId = GetHandleId(
|
|
669
|
-
|
|
670
|
-
|
|
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(
|
|
671
745
|
TriggerEvent,
|
|
672
746
|
function(trigger)
|
|
673
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
747
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
674
748
|
end,
|
|
675
749
|
collector or (function() return {} end)
|
|
676
750
|
)
|
|
751
|
+
self.events:put(eventId, event)
|
|
677
752
|
end
|
|
678
|
-
return
|
|
753
|
+
return event
|
|
754
|
+
end
|
|
755
|
+
function Unit.prototype.saveData(self)
|
|
756
|
+
local handle = self.handle
|
|
757
|
+
self[108] = self[108] or getUnitX(handle)
|
|
758
|
+
self[109] = self[109] or getUnitY(handle)
|
|
759
|
+
self._owner = self._owner or Player:of(getOwningPlayer(handle))
|
|
679
760
|
end
|
|
680
761
|
function Unit.prototype.onDestroy(self)
|
|
681
762
|
local handle = self.handle
|
|
682
|
-
|
|
683
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
684
|
-
end
|
|
763
|
+
self:saveData()
|
|
685
764
|
local abilities = self.abilities
|
|
686
765
|
for ____, ability in ipairs(abilities) do
|
|
687
766
|
ability:destroy()
|
|
@@ -717,7 +796,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
717
796
|
self._attackHandlers = handlers
|
|
718
797
|
if #handlers == 1 then
|
|
719
798
|
local handle = self.handle
|
|
720
|
-
assert(
|
|
799
|
+
assert(
|
|
800
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
801
|
+
"attack handler ability must be added",
|
|
802
|
+
self
|
|
803
|
+
)
|
|
721
804
|
end
|
|
722
805
|
return handler
|
|
723
806
|
end
|
|
@@ -746,17 +829,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
746
829
|
end}
|
|
747
830
|
end
|
|
748
831
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
749
|
-
local
|
|
750
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
832
|
+
local ____combatClassification_2 = combatClassification
|
|
833
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
751
834
|
end
|
|
752
835
|
function Unit.prototype.addClassification(self, classification)
|
|
753
|
-
return
|
|
836
|
+
return UnitAddType(self.handle, classification)
|
|
754
837
|
end
|
|
755
838
|
function Unit.prototype.removeClassification(self, classification)
|
|
756
|
-
return
|
|
839
|
+
return UnitRemoveType(self.handle, classification)
|
|
757
840
|
end
|
|
758
841
|
function Unit.prototype.hasClassification(self, classification)
|
|
759
|
-
return
|
|
842
|
+
return IsUnitType(self.handle, classification)
|
|
760
843
|
end
|
|
761
844
|
function Unit.prototype.isVisibleTo(self, player)
|
|
762
845
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -765,13 +848,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
765
848
|
return isUnitInvisible(self.handle, player.handle)
|
|
766
849
|
end
|
|
767
850
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
768
|
-
local
|
|
851
|
+
local ____temp_3
|
|
769
852
|
if type(x) == "number" then
|
|
770
|
-
|
|
853
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
771
854
|
else
|
|
772
|
-
|
|
855
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
773
856
|
end
|
|
774
|
-
return
|
|
857
|
+
return ____temp_3
|
|
775
858
|
end
|
|
776
859
|
function Unit.prototype.isAllyOf(self, unit)
|
|
777
860
|
return isUnitAlly(
|
|
@@ -789,16 +872,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
789
872
|
if type(animation) == "number" then
|
|
790
873
|
setUnitAnimationByIndex(self.handle, animation)
|
|
791
874
|
elseif rarity then
|
|
792
|
-
|
|
875
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
793
876
|
else
|
|
794
877
|
setUnitAnimation(self.handle, animation)
|
|
795
878
|
end
|
|
796
879
|
end
|
|
880
|
+
function Unit.prototype.resetAnimation(self)
|
|
881
|
+
ResetUnitAnimation(self.handle)
|
|
882
|
+
end
|
|
797
883
|
function Unit.prototype.queueAnimation(self, animation)
|
|
798
|
-
|
|
884
|
+
QueueUnitAnimation(self.handle, animation)
|
|
885
|
+
end
|
|
886
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
887
|
+
local firstWeapon = self.firstWeapon
|
|
888
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
889
|
+
return firstWeapon
|
|
890
|
+
end
|
|
891
|
+
local secondWeapon = self.secondWeapon
|
|
892
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
893
|
+
return secondWeapon
|
|
894
|
+
end
|
|
895
|
+
return nil
|
|
799
896
|
end
|
|
800
897
|
function Unit.prototype.delayHealthChecks(self)
|
|
801
|
-
self[
|
|
898
|
+
self[104] = (self[104] or 0) + 1
|
|
802
899
|
Timer:run(delayHealthChecksCallback, self)
|
|
803
900
|
end
|
|
804
901
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -808,21 +905,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
808
905
|
return IsUnitSelected(self.handle, player.handle)
|
|
809
906
|
end
|
|
810
907
|
function Unit.prototype.explode(self)
|
|
811
|
-
|
|
908
|
+
SetUnitExploded(self.handle, true)
|
|
812
909
|
killUnit(self.handle)
|
|
813
910
|
end
|
|
814
911
|
function Unit.prototype.kill(self)
|
|
815
912
|
killUnit(self.handle)
|
|
816
913
|
end
|
|
817
914
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
818
|
-
local
|
|
819
|
-
local
|
|
820
|
-
local
|
|
821
|
-
if
|
|
822
|
-
|
|
915
|
+
local ____ReviveHero_6 = ReviveHero
|
|
916
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
917
|
+
local ____doEffect_4 = doEffect
|
|
918
|
+
if ____doEffect_4 == nil then
|
|
919
|
+
____doEffect_4 = false
|
|
823
920
|
end
|
|
824
|
-
__TS__SparseArrayPush(
|
|
825
|
-
|
|
921
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
922
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
826
923
|
end
|
|
827
924
|
function Unit.prototype.healTarget(self, target, amount)
|
|
828
925
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -865,17 +962,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
865
962
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
866
963
|
end
|
|
867
964
|
function Unit.prototype.addAbility(self, abilityId)
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
965
|
+
local ability = UnitAbility:of(
|
|
966
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
967
|
+
abilityId,
|
|
968
|
+
self
|
|
969
|
+
)
|
|
970
|
+
if ability ~= nil then
|
|
874
971
|
local abilities = self.abilities
|
|
875
972
|
abilities[#abilities + 1] = ability
|
|
876
|
-
return ability
|
|
877
973
|
end
|
|
878
|
-
return
|
|
974
|
+
return ability
|
|
879
975
|
end
|
|
880
976
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
881
977
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -889,31 +985,21 @@ end
|
|
|
889
985
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
890
986
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
891
987
|
end
|
|
892
|
-
function Unit.prototype.
|
|
893
|
-
local
|
|
894
|
-
|
|
895
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
896
|
-
return nil
|
|
897
|
-
end
|
|
898
|
-
return UnitAbility:of(
|
|
899
|
-
getUnitAbility(self.handle, abilityId),
|
|
900
|
-
abilityId,
|
|
901
|
-
self
|
|
902
|
-
)
|
|
988
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
989
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
990
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
903
991
|
end
|
|
904
|
-
function Unit.prototype.removeAbility(self,
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
end
|
|
992
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
993
|
+
local abilities = self.abilities
|
|
994
|
+
for i = 1, #abilities do
|
|
995
|
+
if abilities[i].typeId == abilityTypeId then
|
|
996
|
+
local ability = abilities[i]
|
|
997
|
+
tremove(abilities, i)
|
|
998
|
+
ability:destroy()
|
|
999
|
+
return true
|
|
913
1000
|
end
|
|
914
|
-
return true
|
|
915
1001
|
end
|
|
916
|
-
return
|
|
1002
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
917
1003
|
end
|
|
918
1004
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
919
1005
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -927,9 +1013,6 @@ end
|
|
|
927
1013
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
928
1014
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
929
1015
|
end
|
|
930
|
-
function Unit.prototype.interruptAttack(self)
|
|
931
|
-
unitInterruptAttack(self.handle)
|
|
932
|
-
end
|
|
933
1016
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
934
1017
|
local handle = self.handle
|
|
935
1018
|
unitDisableAbility(handle, abilityId, true, false)
|
|
@@ -1000,18 +1083,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
1000
1083
|
end
|
|
1001
1084
|
function Unit.prototype.incrementStunCounter(self)
|
|
1002
1085
|
local stunCounter = self[102] or 0
|
|
1003
|
-
if not self[101] or stunCounter >= 0 then
|
|
1086
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
1004
1087
|
BlzPauseUnitEx(self.handle, true)
|
|
1005
1088
|
end
|
|
1006
1089
|
self[102] = stunCounter + 1
|
|
1007
1090
|
end
|
|
1008
1091
|
function Unit.prototype.decrementStunCounter(self)
|
|
1009
1092
|
local stunCounter = self[102] or 0
|
|
1010
|
-
if not self[101] or stunCounter >= 1 then
|
|
1093
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1011
1094
|
BlzPauseUnitEx(self.handle, false)
|
|
1012
1095
|
end
|
|
1013
1096
|
self[102] = stunCounter - 1
|
|
1014
1097
|
end
|
|
1098
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1099
|
+
local forceStunCounter = self[103] or 0
|
|
1100
|
+
if forceStunCounter == 0 then
|
|
1101
|
+
local handle = self.handle
|
|
1102
|
+
if not self[101] then
|
|
1103
|
+
for _ = self[102] or 0, -1 do
|
|
1104
|
+
BlzPauseUnitEx(handle, true)
|
|
1105
|
+
end
|
|
1106
|
+
end
|
|
1107
|
+
BlzPauseUnitEx(handle, true)
|
|
1108
|
+
end
|
|
1109
|
+
self[103] = forceStunCounter + 1
|
|
1110
|
+
end
|
|
1111
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1112
|
+
local forceStunCounter = self[103] or 0
|
|
1113
|
+
if forceStunCounter == 1 then
|
|
1114
|
+
local handle = self.handle
|
|
1115
|
+
if not self[101] then
|
|
1116
|
+
for _ = self[102] or 0, -1 do
|
|
1117
|
+
BlzPauseUnitEx(handle, false)
|
|
1118
|
+
end
|
|
1119
|
+
end
|
|
1120
|
+
BlzPauseUnitEx(handle, false)
|
|
1121
|
+
end
|
|
1122
|
+
self[103] = forceStunCounter - 1
|
|
1123
|
+
end
|
|
1015
1124
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1016
1125
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
1017
1126
|
owner.handle,
|
|
@@ -1200,7 +1309,15 @@ __TS__SetDescriptor(
|
|
|
1200
1309
|
Unit.prototype,
|
|
1201
1310
|
"isIllusion",
|
|
1202
1311
|
{get = function(self)
|
|
1203
|
-
return
|
|
1312
|
+
return IsUnitIllusion(self.handle)
|
|
1313
|
+
end},
|
|
1314
|
+
true
|
|
1315
|
+
)
|
|
1316
|
+
__TS__SetDescriptor(
|
|
1317
|
+
Unit.prototype,
|
|
1318
|
+
"isStunned",
|
|
1319
|
+
{get = function(self)
|
|
1320
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1204
1321
|
end},
|
|
1205
1322
|
true
|
|
1206
1323
|
)
|
|
@@ -1279,13 +1396,13 @@ __TS__SetDescriptor(
|
|
|
1279
1396
|
)
|
|
1280
1397
|
__TS__SetDescriptor(
|
|
1281
1398
|
Unit.prototype,
|
|
1282
|
-
"
|
|
1399
|
+
"primaryAttribute",
|
|
1283
1400
|
{
|
|
1284
1401
|
get = function(self)
|
|
1285
|
-
return
|
|
1402
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1286
1403
|
end,
|
|
1287
|
-
set = function(self,
|
|
1288
|
-
|
|
1404
|
+
set = function(self, primaryAttribute)
|
|
1405
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1289
1406
|
end
|
|
1290
1407
|
},
|
|
1291
1408
|
true
|
|
@@ -1307,19 +1424,6 @@ __TS__SetDescriptor(
|
|
|
1307
1424
|
end},
|
|
1308
1425
|
true
|
|
1309
1426
|
)
|
|
1310
|
-
__TS__SetDescriptor(
|
|
1311
|
-
Unit.prototype,
|
|
1312
|
-
"agilityBase",
|
|
1313
|
-
{
|
|
1314
|
-
get = function(self)
|
|
1315
|
-
return getHeroAgi(self.handle, false)
|
|
1316
|
-
end,
|
|
1317
|
-
set = function(self, agilityBase)
|
|
1318
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1319
|
-
end
|
|
1320
|
-
},
|
|
1321
|
-
true
|
|
1322
|
-
)
|
|
1323
1427
|
__TS__SetDescriptor(
|
|
1324
1428
|
Unit.prototype,
|
|
1325
1429
|
"agilityBonus",
|
|
@@ -1337,19 +1441,6 @@ __TS__SetDescriptor(
|
|
|
1337
1441
|
end},
|
|
1338
1442
|
true
|
|
1339
1443
|
)
|
|
1340
|
-
__TS__SetDescriptor(
|
|
1341
|
-
Unit.prototype,
|
|
1342
|
-
"intelligenceBase",
|
|
1343
|
-
{
|
|
1344
|
-
get = function(self)
|
|
1345
|
-
return getHeroInt(self.handle, false)
|
|
1346
|
-
end,
|
|
1347
|
-
set = function(self, intelligenceBase)
|
|
1348
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1349
|
-
end
|
|
1350
|
-
},
|
|
1351
|
-
true
|
|
1352
|
-
)
|
|
1353
1444
|
__TS__SetDescriptor(
|
|
1354
1445
|
Unit.prototype,
|
|
1355
1446
|
"intelligenceBonus",
|
|
@@ -1398,17 +1489,17 @@ __TS__SetDescriptor(
|
|
|
1398
1489
|
"isTeamGlowVisible",
|
|
1399
1490
|
{
|
|
1400
1491
|
get = function(self)
|
|
1401
|
-
return not self[
|
|
1492
|
+
return not self[107]
|
|
1402
1493
|
end,
|
|
1403
1494
|
set = function(self, isTeamGlowVisible)
|
|
1404
|
-
|
|
1405
|
-
local
|
|
1495
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1496
|
+
local ____temp_7
|
|
1406
1497
|
if not isTeamGlowVisible then
|
|
1407
|
-
|
|
1498
|
+
____temp_7 = true
|
|
1408
1499
|
else
|
|
1409
|
-
|
|
1500
|
+
____temp_7 = nil
|
|
1410
1501
|
end
|
|
1411
|
-
self[
|
|
1502
|
+
self[107] = ____temp_7
|
|
1412
1503
|
end
|
|
1413
1504
|
},
|
|
1414
1505
|
true
|
|
@@ -1417,9 +1508,9 @@ __TS__SetDescriptor(
|
|
|
1417
1508
|
Unit.prototype,
|
|
1418
1509
|
"color",
|
|
1419
1510
|
{set = function(self, color)
|
|
1420
|
-
|
|
1421
|
-
if self[
|
|
1422
|
-
|
|
1511
|
+
SetUnitColor(self.handle, color.handle)
|
|
1512
|
+
if self[107] then
|
|
1513
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1423
1514
|
end
|
|
1424
1515
|
end},
|
|
1425
1516
|
true
|
|
@@ -1442,14 +1533,14 @@ __TS__SetDescriptor(
|
|
|
1442
1533
|
"maxHealth",
|
|
1443
1534
|
{
|
|
1444
1535
|
get = function(self)
|
|
1445
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1536
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1446
1537
|
end,
|
|
1447
1538
|
set = function(self, maxHealth)
|
|
1448
|
-
if maxHealth < 1 and self[
|
|
1449
|
-
self[
|
|
1539
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1540
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1450
1541
|
maxHealth = 1
|
|
1451
1542
|
end
|
|
1452
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1543
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1453
1544
|
end
|
|
1454
1545
|
},
|
|
1455
1546
|
true
|
|
@@ -1491,10 +1582,10 @@ __TS__SetDescriptor(
|
|
|
1491
1582
|
"health",
|
|
1492
1583
|
{
|
|
1493
1584
|
get = function(self)
|
|
1494
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1585
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1495
1586
|
end,
|
|
1496
1587
|
set = function(self, health)
|
|
1497
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1588
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1498
1589
|
end
|
|
1499
1590
|
},
|
|
1500
1591
|
true
|
|
@@ -1570,25 +1661,12 @@ __TS__SetDescriptor(
|
|
|
1570
1661
|
},
|
|
1571
1662
|
true
|
|
1572
1663
|
)
|
|
1573
|
-
__TS__SetDescriptor(
|
|
1574
|
-
Unit.prototype,
|
|
1575
|
-
"flyHeight",
|
|
1576
|
-
{
|
|
1577
|
-
get = function(self)
|
|
1578
|
-
return getUnitFlyHeight(self.handle)
|
|
1579
|
-
end,
|
|
1580
|
-
set = function(self, v)
|
|
1581
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1582
|
-
end
|
|
1583
|
-
},
|
|
1584
|
-
true
|
|
1585
|
-
)
|
|
1586
1664
|
__TS__SetDescriptor(
|
|
1587
1665
|
Unit.prototype,
|
|
1588
1666
|
"x",
|
|
1589
1667
|
{
|
|
1590
1668
|
get = function(self)
|
|
1591
|
-
return getUnitX(self.handle)
|
|
1669
|
+
return self[108] or getUnitX(self.handle)
|
|
1592
1670
|
end,
|
|
1593
1671
|
set = function(self, v)
|
|
1594
1672
|
SetUnitX(self.handle, v)
|
|
@@ -1601,7 +1679,7 @@ __TS__SetDescriptor(
|
|
|
1601
1679
|
"y",
|
|
1602
1680
|
{
|
|
1603
1681
|
get = function(self)
|
|
1604
|
-
return getUnitY(self.handle)
|
|
1682
|
+
return self[109] or getUnitY(self.handle)
|
|
1605
1683
|
end,
|
|
1606
1684
|
set = function(self, v)
|
|
1607
1685
|
SetUnitY(self.handle, v)
|
|
@@ -1687,10 +1765,10 @@ __TS__SetDescriptor(
|
|
|
1687
1765
|
"gold",
|
|
1688
1766
|
{
|
|
1689
1767
|
get = function(self)
|
|
1690
|
-
return
|
|
1768
|
+
return GetResourceAmount(self.handle)
|
|
1691
1769
|
end,
|
|
1692
1770
|
set = function(self, gold)
|
|
1693
|
-
|
|
1771
|
+
SetResourceAmount(self.handle, gold)
|
|
1694
1772
|
end
|
|
1695
1773
|
},
|
|
1696
1774
|
true
|
|
@@ -1706,14 +1784,18 @@ __TS__SetDescriptor(
|
|
|
1706
1784
|
local handle = self.handle
|
|
1707
1785
|
if isPaused and not IsUnitPaused(handle) then
|
|
1708
1786
|
self[101] = true
|
|
1709
|
-
|
|
1710
|
-
|
|
1787
|
+
if (self[103] or 0) <= 0 then
|
|
1788
|
+
for _ = self[102] or 0, -1 do
|
|
1789
|
+
BlzPauseUnitEx(handle, true)
|
|
1790
|
+
end
|
|
1711
1791
|
end
|
|
1712
1792
|
PauseUnit(handle, true)
|
|
1713
1793
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1714
1794
|
PauseUnit(handle, false)
|
|
1715
|
-
|
|
1716
|
-
|
|
1795
|
+
if (self[103] or 0) <= 0 then
|
|
1796
|
+
for _ = self[102] or 0, -1 do
|
|
1797
|
+
BlzPauseUnitEx(handle, false)
|
|
1798
|
+
end
|
|
1717
1799
|
end
|
|
1718
1800
|
self[101] = nil
|
|
1719
1801
|
end
|
|
@@ -1771,20 +1853,6 @@ __TS__SetDescriptor(
|
|
|
1771
1853
|
},
|
|
1772
1854
|
true
|
|
1773
1855
|
)
|
|
1774
|
-
__TS__SetDescriptor(
|
|
1775
|
-
Unit.prototype,
|
|
1776
|
-
"scale",
|
|
1777
|
-
{
|
|
1778
|
-
get = function(self)
|
|
1779
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1780
|
-
end,
|
|
1781
|
-
set = function(self, v)
|
|
1782
|
-
setUnitScale(self.handle, v, v, v)
|
|
1783
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1784
|
-
end
|
|
1785
|
-
},
|
|
1786
|
-
true
|
|
1787
|
-
)
|
|
1788
1856
|
__TS__SetDescriptor(
|
|
1789
1857
|
Unit.prototype,
|
|
1790
1858
|
"timeScale",
|
|
@@ -1818,6 +1886,19 @@ __TS__SetDescriptor(
|
|
|
1818
1886
|
end},
|
|
1819
1887
|
true
|
|
1820
1888
|
)
|
|
1889
|
+
__TS__SetDescriptor(
|
|
1890
|
+
Unit.prototype,
|
|
1891
|
+
"movementType",
|
|
1892
|
+
{
|
|
1893
|
+
get = function(self)
|
|
1894
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1895
|
+
end,
|
|
1896
|
+
set = function(self, movementType)
|
|
1897
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1898
|
+
end
|
|
1899
|
+
},
|
|
1900
|
+
true
|
|
1901
|
+
)
|
|
1821
1902
|
__TS__SetDescriptor(
|
|
1822
1903
|
Unit.prototype,
|
|
1823
1904
|
"pathing",
|
|
@@ -1908,30 +1989,6 @@ __TS__SetDescriptor(
|
|
|
1908
1989
|
end},
|
|
1909
1990
|
true
|
|
1910
1991
|
)
|
|
1911
|
-
__TS__SetDescriptor(
|
|
1912
|
-
Unit.prototype,
|
|
1913
|
-
"onUnitInRange",
|
|
1914
|
-
{get = function(self)
|
|
1915
|
-
local handle = self.handle
|
|
1916
|
-
local onUnitInRange = setmetatable(
|
|
1917
|
-
{},
|
|
1918
|
-
{__index = function(self, value)
|
|
1919
|
-
local event = __TS__New(
|
|
1920
|
-
TriggerEvent,
|
|
1921
|
-
function(trigger)
|
|
1922
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
1923
|
-
end,
|
|
1924
|
-
function() return ____exports.Unit:of(handle) end
|
|
1925
|
-
)
|
|
1926
|
-
rawset(self, value, event)
|
|
1927
|
-
return event
|
|
1928
|
-
end}
|
|
1929
|
-
)
|
|
1930
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
1931
|
-
return onUnitInRange
|
|
1932
|
-
end},
|
|
1933
|
-
true
|
|
1934
|
-
)
|
|
1935
1992
|
__TS__SetDescriptor(
|
|
1936
1993
|
Unit.prototype,
|
|
1937
1994
|
"onManaEqual",
|
|
@@ -1999,6 +2056,14 @@ __TS__SetDescriptor(
|
|
|
1999
2056
|
end},
|
|
2000
2057
|
true
|
|
2001
2058
|
)
|
|
2059
|
+
__TS__SetDescriptor(
|
|
2060
|
+
Unit.prototype,
|
|
2061
|
+
"targetAcquiredEvent",
|
|
2062
|
+
{get = function(self)
|
|
2063
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2064
|
+
end},
|
|
2065
|
+
true
|
|
2066
|
+
)
|
|
2002
2067
|
__TS__SetDescriptor(
|
|
2003
2068
|
Unit.prototype,
|
|
2004
2069
|
"onSelect",
|
|
@@ -2059,6 +2124,11 @@ __TS__SetDescriptor(
|
|
|
2059
2124
|
end},
|
|
2060
2125
|
true
|
|
2061
2126
|
)
|
|
2127
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2128
|
+
____exports.UnitTriggerEvent,
|
|
2129
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2130
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2131
|
+
)
|
|
2062
2132
|
Unit.deathEvent = __TS__New(
|
|
2063
2133
|
____exports.UnitTriggerEvent,
|
|
2064
2134
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2134,25 +2204,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2134
2204
|
InitializingEvent,
|
|
2135
2205
|
function(event)
|
|
2136
2206
|
local function listener(unit, id)
|
|
2137
|
-
local
|
|
2207
|
+
local ____GetSpellTargetUnit_result_10
|
|
2138
2208
|
if GetSpellTargetUnit() then
|
|
2139
|
-
|
|
2209
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2140
2210
|
else
|
|
2141
|
-
local
|
|
2211
|
+
local ____GetSpellTargetItem_result_9
|
|
2142
2212
|
if GetSpellTargetItem() then
|
|
2143
|
-
|
|
2213
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2144
2214
|
else
|
|
2145
|
-
local
|
|
2215
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2146
2216
|
if GetSpellTargetDestructable() then
|
|
2147
|
-
|
|
2217
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2148
2218
|
else
|
|
2149
|
-
|
|
2219
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2150
2220
|
end
|
|
2151
|
-
|
|
2221
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2152
2222
|
end
|
|
2153
|
-
|
|
2223
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2154
2224
|
end
|
|
2155
|
-
local target =
|
|
2225
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2156
2226
|
if target then
|
|
2157
2227
|
invoke(event, unit, id, target)
|
|
2158
2228
|
end
|
|
@@ -2360,38 +2430,57 @@ Unit.onDamaging = (function()
|
|
|
2360
2430
|
if source and source.typeId == dummyUnitId then
|
|
2361
2431
|
source = nil
|
|
2362
2432
|
end
|
|
2363
|
-
local target = BlzGetEventDamageTarget()
|
|
2433
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2434
|
+
local metadata = damageMetadataByTarget[target]
|
|
2435
|
+
damageMetadataByTarget[target] = nil
|
|
2364
2436
|
local data = {
|
|
2365
2437
|
amount = GetEventDamage(),
|
|
2366
|
-
attackType = BlzGetEventAttackType(),
|
|
2438
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2367
2439
|
damageType = BlzGetEventDamageType(),
|
|
2368
2440
|
weaponType = BlzGetEventWeaponType(),
|
|
2369
|
-
|
|
2441
|
+
metadata = metadata,
|
|
2442
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2443
|
+
originalAmount = GetEventDamage(),
|
|
2444
|
+
originalMetadata = metadata,
|
|
2445
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2370
2446
|
}
|
|
2371
2447
|
if data.isAttack and source then
|
|
2372
|
-
|
|
2373
|
-
if weapon == -1 then
|
|
2374
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2375
|
-
weapon = 0
|
|
2376
|
-
end
|
|
2377
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2448
|
+
data.weapon = source:chooseWeapon(target)
|
|
2378
2449
|
end
|
|
2379
2450
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2380
2451
|
invoke(
|
|
2381
2452
|
event,
|
|
2382
2453
|
source,
|
|
2383
|
-
|
|
2454
|
+
target,
|
|
2384
2455
|
setmetatable(
|
|
2385
2456
|
{},
|
|
2386
2457
|
{
|
|
2387
2458
|
__index = data,
|
|
2388
2459
|
__newindex = function(self, key, value)
|
|
2389
|
-
damageSetters[key]
|
|
2460
|
+
local damageSetter = damageSetters[key]
|
|
2461
|
+
if damageSetter ~= nil then
|
|
2462
|
+
damageSetter(value)
|
|
2463
|
+
end
|
|
2390
2464
|
data[key] = value
|
|
2391
2465
|
end
|
|
2392
2466
|
}
|
|
2393
2467
|
)
|
|
2394
2468
|
)
|
|
2469
|
+
if data[0] and source then
|
|
2470
|
+
local sourceOwner = source.owner.handle
|
|
2471
|
+
data[1] = sourceOwner
|
|
2472
|
+
local targetOwner = target.owner.handle
|
|
2473
|
+
data[2] = targetOwner
|
|
2474
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2475
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2476
|
+
data[3] = true
|
|
2477
|
+
end
|
|
2478
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2479
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2480
|
+
data[4] = true
|
|
2481
|
+
end
|
|
2482
|
+
end
|
|
2483
|
+
damagingEventByTarget[target] = data
|
|
2395
2484
|
return
|
|
2396
2485
|
end
|
|
2397
2486
|
BlzSetEventDamage(0)
|
|
@@ -2399,7 +2488,7 @@ Unit.onDamaging = (function()
|
|
|
2399
2488
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2400
2489
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2401
2490
|
local sourceOwner = source.owner.handle
|
|
2402
|
-
local targetOwner =
|
|
2491
|
+
local targetOwner = target.owner.handle
|
|
2403
2492
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2404
2493
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2405
2494
|
Timer:run(function()
|
|
@@ -2415,23 +2504,19 @@ Unit.onDamaging = (function()
|
|
|
2415
2504
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2416
2505
|
local condition = ____value[1]
|
|
2417
2506
|
local action = ____value[2]
|
|
2418
|
-
if condition(
|
|
2419
|
-
source,
|
|
2420
|
-
____exports.Unit:of(target),
|
|
2421
|
-
data
|
|
2422
|
-
) then
|
|
2507
|
+
if condition(source, target, data) then
|
|
2423
2508
|
action(
|
|
2424
2509
|
source,
|
|
2425
|
-
|
|
2510
|
+
target,
|
|
2426
2511
|
setmetatable(
|
|
2427
2512
|
{fire = function()
|
|
2428
2513
|
UnitDamageTarget(
|
|
2429
2514
|
source.handle,
|
|
2430
|
-
target,
|
|
2515
|
+
target.handle,
|
|
2431
2516
|
data.amount,
|
|
2432
2517
|
true,
|
|
2433
2518
|
true,
|
|
2434
|
-
data.attackType,
|
|
2519
|
+
attackTypeToNative(data.attackType),
|
|
2435
2520
|
data.damageType,
|
|
2436
2521
|
data.weaponType
|
|
2437
2522
|
)
|
|
@@ -2458,30 +2543,54 @@ Unit.onDamage = __TS__New(
|
|
|
2458
2543
|
if source and source.typeId == dummyUnitId then
|
|
2459
2544
|
source = nil
|
|
2460
2545
|
end
|
|
2546
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2547
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2548
|
+
damagingEventByTarget[target] = nil
|
|
2461
2549
|
local data = {
|
|
2462
2550
|
amount = GetEventDamage(),
|
|
2463
|
-
attackType = BlzGetEventAttackType(),
|
|
2551
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2464
2552
|
damageType = BlzGetEventDamageType(),
|
|
2465
2553
|
weaponType = BlzGetEventWeaponType(),
|
|
2554
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2466
2555
|
isAttack = BlzGetEventIsAttack(),
|
|
2467
|
-
originalAmount = GetEventDamage(),
|
|
2556
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2557
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2468
2558
|
preventDeath = damageEventPreventDeath
|
|
2469
2559
|
}
|
|
2560
|
+
if damagingEvent then
|
|
2561
|
+
for key, value in pairs(damagingEvent) do
|
|
2562
|
+
if isAttribute(key) then
|
|
2563
|
+
data[key] = value
|
|
2564
|
+
end
|
|
2565
|
+
end
|
|
2566
|
+
local sourceOwner = damagingEvent[1]
|
|
2567
|
+
if sourceOwner then
|
|
2568
|
+
local targetOwner = damagingEvent[2]
|
|
2569
|
+
if damagingEvent[3] then
|
|
2570
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2571
|
+
end
|
|
2572
|
+
if damagingEvent[4] then
|
|
2573
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2574
|
+
end
|
|
2575
|
+
end
|
|
2576
|
+
end
|
|
2470
2577
|
local evData = setmetatable(
|
|
2471
2578
|
{},
|
|
2472
2579
|
{
|
|
2473
2580
|
__index = data,
|
|
2474
2581
|
__newindex = function(self, key, value)
|
|
2475
|
-
damageSetters[key]
|
|
2582
|
+
local damageSetter = damageSetters[key]
|
|
2583
|
+
if damageSetter ~= nil then
|
|
2584
|
+
damageSetter(value)
|
|
2585
|
+
end
|
|
2476
2586
|
data[key] = value
|
|
2477
2587
|
end
|
|
2478
2588
|
}
|
|
2479
2589
|
)
|
|
2480
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2481
2590
|
invoke(event, source, target, evData)
|
|
2482
2591
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2483
2592
|
local bonusHealth = math.ceil(evData.amount)
|
|
2484
|
-
target[
|
|
2593
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2485
2594
|
BlzSetUnitMaxHP(
|
|
2486
2595
|
target.handle,
|
|
2487
2596
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2495,7 +2604,7 @@ Unit.onDamage = __TS__New(
|
|
|
2495
2604
|
evData[0],
|
|
2496
2605
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2497
2606
|
)
|
|
2498
|
-
target[
|
|
2607
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2499
2608
|
SetWidgetLife(
|
|
2500
2609
|
target.handle,
|
|
2501
2610
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2531,10 +2640,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2531
2640
|
____exports.UnitTriggerEvent,
|
|
2532
2641
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2533
2642
|
function()
|
|
2534
|
-
local
|
|
2535
|
-
local
|
|
2536
|
-
if getUnitTypeId(
|
|
2537
|
-
|
|
2643
|
+
local unitHandle = getTriggerUnit()
|
|
2644
|
+
local itemHandle = getManipulatedItem()
|
|
2645
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2646
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2647
|
+
local item = Item:of(itemHandle)
|
|
2648
|
+
if item.owner ~= unit then
|
|
2649
|
+
return unit, item
|
|
2650
|
+
end
|
|
2538
2651
|
end
|
|
2539
2652
|
return IgnoreEvent
|
|
2540
2653
|
end
|
|
@@ -2554,7 +2667,22 @@ Unit.itemUsedEvent = __TS__New(
|
|
|
2554
2667
|
Unit.itemStackedEvent = __TS__New(
|
|
2555
2668
|
____exports.UnitTriggerEvent,
|
|
2556
2669
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2557
|
-
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(
|
|
2670
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2671
|
+
)
|
|
2672
|
+
__TS__ObjectDefineProperty(
|
|
2673
|
+
Unit,
|
|
2674
|
+
"itemChargesChangedEvent",
|
|
2675
|
+
{get = function(self)
|
|
2676
|
+
local event = __TS__New(Event)
|
|
2677
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2678
|
+
local unit = item.owner
|
|
2679
|
+
if unit ~= nil then
|
|
2680
|
+
invoke(event, unit, item)
|
|
2681
|
+
end
|
|
2682
|
+
end)
|
|
2683
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2684
|
+
return event
|
|
2685
|
+
end}
|
|
2558
2686
|
)
|
|
2559
2687
|
__TS__ObjectDefineProperty(
|
|
2560
2688
|
Unit,
|
|
@@ -2626,6 +2754,10 @@ __TS__ObjectDefineProperty(
|
|
|
2626
2754
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2627
2755
|
return destroyEvent
|
|
2628
2756
|
end}
|
|
2757
|
+
)
|
|
2758
|
+
Unit.synchronize = synchronizer(
|
|
2759
|
+
function(unit) return unit.syncId end,
|
|
2760
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2629
2761
|
);
|
|
2630
2762
|
(function(self)
|
|
2631
2763
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2655,7 +2787,8 @@ __TS__ObjectDefineProperty(
|
|
|
2655
2787
|
return
|
|
2656
2788
|
end
|
|
2657
2789
|
end
|
|
2658
|
-
unit:
|
|
2790
|
+
unit:saveData()
|
|
2791
|
+
Timer:run(unit, "destroy")
|
|
2659
2792
|
end)
|
|
2660
2793
|
end
|
|
2661
2794
|
end)(Unit)
|