warscript 0.0.1-dev.aefeacb → 0.0.1-dev.b23de5c
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/core/types/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- package/core/types/frame.lua +24 -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 -25
- package/core/types/sound.lua +85 -44
- 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/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.lua +5 -5
- 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 +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -3
- 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 -6
- package/engine/behaviour/ability.lua +56 -21
- 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 +58 -18
- package/engine/buff.lua +347 -150
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +49 -9
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +18 -17
- package/engine/internal/item.lua +135 -49
- 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.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/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/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 +2 -0
- package/engine/internal/unit/bonus.lua +10 -0
- 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/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+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 +43 -25
- package/engine/internal/unit.lua +384 -260
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -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/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/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/curse.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/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/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/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 +13 -11
- package/engine/object-data/entry/ability-type.lua +119 -17
- package/engine/object-data/entry/buff-type/applicable.lua +5 -0
- package/engine/object-data/entry/buff-type.d.ts +5 -11
- package/engine/object-data/entry/buff-type.lua +11 -27
- package/engine/object-data/entry/destructible-type.d.ts +27 -1
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/sound-preset.d.ts +17 -0
- package/engine/object-data/entry/sound-preset.lua +104 -0
- package/engine/object-data/entry/unit-type.d.ts +17 -4
- package/engine/object-data/entry/unit-type.lua +197 -85
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +7 -6
- 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 +357 -118
- 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/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -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 +6 -0
- package/engine/unit.lua +6 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/package.json +2 -2
- 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 +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +43 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/records.lua +20 -1
- package/utility/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
|
@@ -53,34 +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
|
|
80
87
|
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
81
88
|
local createUnit = CreateUnit
|
|
82
89
|
local killUnit = KillUnit
|
|
83
|
-
local setUnitExploded = SetUnitExploded
|
|
84
90
|
local removeUnit = RemoveUnit
|
|
85
91
|
local getUnitTypeId = GetUnitTypeId
|
|
86
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -96,15 +102,12 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
96
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
97
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
98
104
|
local isUnitInRange = IsUnitInRange
|
|
99
|
-
local setResourceAmount = SetResourceAmount
|
|
100
|
-
local getResourceAmount = GetResourceAmount
|
|
101
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
102
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
103
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
104
108
|
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
105
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
106
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
107
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
108
111
|
local isUnitInvisible = IsUnitInvisible
|
|
109
112
|
local isUnitVisible = IsUnitVisible
|
|
110
113
|
local getUnitX = GetUnitX
|
|
@@ -121,15 +124,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
121
124
|
local getIssuedOrderId = GetIssuedOrderId
|
|
122
125
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
123
126
|
local unitAlive = UnitAlive
|
|
124
|
-
local unitAddType = UnitAddType
|
|
125
|
-
local unitRemoveType = UnitRemoveType
|
|
126
|
-
local isUnitIllusion = IsUnitIllusion
|
|
127
|
-
local isUnitType = IsUnitType
|
|
128
127
|
local isUnitAlly = IsUnitAlly
|
|
129
128
|
local isUnitEnemy = IsUnitEnemy
|
|
130
129
|
local getOwningPlayer = GetOwningPlayer
|
|
131
|
-
local setUnitColor = SetUnitColor
|
|
132
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
133
130
|
____exports.UnitClassification = {}
|
|
134
131
|
local UnitClassification = ____exports.UnitClassification
|
|
135
132
|
do
|
|
@@ -139,6 +136,7 @@ do
|
|
|
139
136
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
140
137
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
141
138
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
139
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
142
140
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
143
141
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
144
142
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -346,6 +344,9 @@ local function dispatchAbility(event)
|
|
|
346
344
|
}
|
|
347
345
|
)
|
|
348
346
|
end
|
|
347
|
+
local function damagingEventPreventRetaliation(self)
|
|
348
|
+
self[0] = true
|
|
349
|
+
end
|
|
349
350
|
local function damageEventPreventDeath(self, callback, ...)
|
|
350
351
|
if self[0] ~= nil then
|
|
351
352
|
return
|
|
@@ -357,7 +358,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
357
358
|
rawset(self, 1 + i, (select(i, ...)))
|
|
358
359
|
end
|
|
359
360
|
end
|
|
360
|
-
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
|
+
}
|
|
361
369
|
local jlimitopByOperator = {
|
|
362
370
|
[0] = LESS_THAN_OR_EQUAL,
|
|
363
371
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -375,15 +383,27 @@ local modifiers = {
|
|
|
375
383
|
end,
|
|
376
384
|
armor = function(unit, value)
|
|
377
385
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
378
|
-
assert(
|
|
386
|
+
assert(
|
|
387
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
388
|
+
"armor bonus ability must be made permanent",
|
|
389
|
+
unit
|
|
390
|
+
)
|
|
379
391
|
end
|
|
380
|
-
local ability = assert(
|
|
381
|
-
|
|
382
|
-
ability,
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
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
|
+
)
|
|
387
407
|
end
|
|
388
408
|
}
|
|
389
409
|
local getters = {
|
|
@@ -401,6 +421,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
401
421
|
self.unit = unit
|
|
402
422
|
self.index = index
|
|
403
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
|
+
)
|
|
404
437
|
__TS__SetDescriptor(
|
|
405
438
|
UnitWeapon.prototype,
|
|
406
439
|
"cooldown",
|
|
@@ -435,6 +468,19 @@ __TS__SetDescriptor(
|
|
|
435
468
|
},
|
|
436
469
|
true
|
|
437
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
|
+
)
|
|
438
484
|
__TS__SetDescriptor(
|
|
439
485
|
UnitWeapon.prototype,
|
|
440
486
|
"damageBase",
|
|
@@ -611,26 +657,30 @@ local fieldSetters = {
|
|
|
611
657
|
}
|
|
612
658
|
local dummies = {}
|
|
613
659
|
for ____, player in ipairs(Player.all) do
|
|
614
|
-
local dummy = assert(
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
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
|
+
)
|
|
621
671
|
ShowUnit(dummy, false)
|
|
622
672
|
dummies[player] = dummy
|
|
623
673
|
end
|
|
624
674
|
local function delayHealthChecksCallback(unit)
|
|
625
|
-
local counter = (unit[
|
|
675
|
+
local counter = (unit[104] or 0) - 1
|
|
626
676
|
if counter ~= 0 then
|
|
627
|
-
unit[
|
|
677
|
+
unit[104] = counter
|
|
628
678
|
return
|
|
629
679
|
end
|
|
630
|
-
unit[
|
|
631
|
-
local healthBonus = unit[
|
|
680
|
+
unit[104] = nil
|
|
681
|
+
local healthBonus = unit[105]
|
|
632
682
|
if healthBonus ~= nil then
|
|
633
|
-
unit[
|
|
683
|
+
unit[105] = nil
|
|
634
684
|
local handle = unit.handle
|
|
635
685
|
BlzSetUnitMaxHP(
|
|
636
686
|
handle,
|
|
@@ -639,50 +689,78 @@ local function delayHealthChecksCallback(unit)
|
|
|
639
689
|
end
|
|
640
690
|
end
|
|
641
691
|
local nextSyncId = 1
|
|
642
|
-
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
|
|
643
703
|
____exports.Unit = __TS__Class()
|
|
644
704
|
local Unit = ____exports.Unit
|
|
645
705
|
Unit.name = "Unit"
|
|
646
706
|
__TS__ClassExtends(Unit, Handle)
|
|
647
707
|
function Unit.prototype.____constructor(self, handle)
|
|
648
708
|
Handle.prototype.____constructor(self, handle)
|
|
649
|
-
local
|
|
650
|
-
nextSyncId =
|
|
651
|
-
self.syncId =
|
|
709
|
+
local ____nextSyncId_1 = nextSyncId
|
|
710
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
711
|
+
self.syncId = ____nextSyncId_1
|
|
652
712
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
653
|
-
assert(
|
|
654
|
-
|
|
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
|
+
)
|
|
655
723
|
if unitAddAbility(
|
|
656
724
|
handle,
|
|
657
725
|
fourCC("Amrf")
|
|
658
726
|
) then
|
|
659
|
-
assert(
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
727
|
+
assert(
|
|
728
|
+
unitRemoveAbility(
|
|
729
|
+
handle,
|
|
730
|
+
fourCC("Amrf")
|
|
731
|
+
),
|
|
732
|
+
"fly ability must be removed after addition",
|
|
733
|
+
self
|
|
734
|
+
)
|
|
663
735
|
end
|
|
664
736
|
unitBySyncId[self.syncId] = self
|
|
665
737
|
local ____ = self.abilities
|
|
666
738
|
end
|
|
667
|
-
function Unit.prototype.getEvent(self,
|
|
668
|
-
self.events = self.events or (
|
|
669
|
-
local eventId = GetHandleId(
|
|
670
|
-
|
|
671
|
-
|
|
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(
|
|
672
745
|
TriggerEvent,
|
|
673
746
|
function(trigger)
|
|
674
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
747
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
675
748
|
end,
|
|
676
749
|
collector or (function() return {} end)
|
|
677
750
|
)
|
|
751
|
+
self.events:put(eventId, event)
|
|
678
752
|
end
|
|
679
|
-
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))
|
|
680
760
|
end
|
|
681
761
|
function Unit.prototype.onDestroy(self)
|
|
682
762
|
local handle = self.handle
|
|
683
|
-
|
|
684
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
685
|
-
end
|
|
763
|
+
self:saveData()
|
|
686
764
|
local abilities = self.abilities
|
|
687
765
|
for ____, ability in ipairs(abilities) do
|
|
688
766
|
ability:destroy()
|
|
@@ -718,7 +796,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
718
796
|
self._attackHandlers = handlers
|
|
719
797
|
if #handlers == 1 then
|
|
720
798
|
local handle = self.handle
|
|
721
|
-
assert(
|
|
799
|
+
assert(
|
|
800
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
801
|
+
"attack handler ability must be added",
|
|
802
|
+
self
|
|
803
|
+
)
|
|
722
804
|
end
|
|
723
805
|
return handler
|
|
724
806
|
end
|
|
@@ -747,17 +829,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
747
829
|
end}
|
|
748
830
|
end
|
|
749
831
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
750
|
-
local
|
|
751
|
-
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
|
|
752
834
|
end
|
|
753
835
|
function Unit.prototype.addClassification(self, classification)
|
|
754
|
-
return
|
|
836
|
+
return UnitAddType(self.handle, classification)
|
|
755
837
|
end
|
|
756
838
|
function Unit.prototype.removeClassification(self, classification)
|
|
757
|
-
return
|
|
839
|
+
return UnitRemoveType(self.handle, classification)
|
|
758
840
|
end
|
|
759
841
|
function Unit.prototype.hasClassification(self, classification)
|
|
760
|
-
return
|
|
842
|
+
return IsUnitType(self.handle, classification)
|
|
761
843
|
end
|
|
762
844
|
function Unit.prototype.isVisibleTo(self, player)
|
|
763
845
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -766,13 +848,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
766
848
|
return isUnitInvisible(self.handle, player.handle)
|
|
767
849
|
end
|
|
768
850
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
769
|
-
local
|
|
851
|
+
local ____temp_3
|
|
770
852
|
if type(x) == "number" then
|
|
771
|
-
|
|
853
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
772
854
|
else
|
|
773
|
-
|
|
855
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
774
856
|
end
|
|
775
|
-
return
|
|
857
|
+
return ____temp_3
|
|
776
858
|
end
|
|
777
859
|
function Unit.prototype.isAllyOf(self, unit)
|
|
778
860
|
return isUnitAlly(
|
|
@@ -790,16 +872,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
790
872
|
if type(animation) == "number" then
|
|
791
873
|
setUnitAnimationByIndex(self.handle, animation)
|
|
792
874
|
elseif rarity then
|
|
793
|
-
|
|
875
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
794
876
|
else
|
|
795
877
|
setUnitAnimation(self.handle, animation)
|
|
796
878
|
end
|
|
797
879
|
end
|
|
880
|
+
function Unit.prototype.resetAnimation(self)
|
|
881
|
+
ResetUnitAnimation(self.handle)
|
|
882
|
+
end
|
|
798
883
|
function Unit.prototype.queueAnimation(self, animation)
|
|
799
|
-
|
|
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
|
|
800
896
|
end
|
|
801
897
|
function Unit.prototype.delayHealthChecks(self)
|
|
802
|
-
self[
|
|
898
|
+
self[104] = (self[104] or 0) + 1
|
|
803
899
|
Timer:run(delayHealthChecksCallback, self)
|
|
804
900
|
end
|
|
805
901
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -809,21 +905,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
809
905
|
return IsUnitSelected(self.handle, player.handle)
|
|
810
906
|
end
|
|
811
907
|
function Unit.prototype.explode(self)
|
|
812
|
-
|
|
908
|
+
SetUnitExploded(self.handle, true)
|
|
813
909
|
killUnit(self.handle)
|
|
814
910
|
end
|
|
815
911
|
function Unit.prototype.kill(self)
|
|
816
912
|
killUnit(self.handle)
|
|
817
913
|
end
|
|
818
914
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
819
|
-
local
|
|
820
|
-
local
|
|
821
|
-
local
|
|
822
|
-
if
|
|
823
|
-
|
|
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
|
|
824
920
|
end
|
|
825
|
-
__TS__SparseArrayPush(
|
|
826
|
-
|
|
921
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
922
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
827
923
|
end
|
|
828
924
|
function Unit.prototype.healTarget(self, target, amount)
|
|
829
925
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -866,17 +962,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
866
962
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
867
963
|
end
|
|
868
964
|
function Unit.prototype.addAbility(self, abilityId)
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
965
|
+
local ability = UnitAbility:of(
|
|
966
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
967
|
+
abilityId,
|
|
968
|
+
self
|
|
969
|
+
)
|
|
970
|
+
if ability ~= nil then
|
|
875
971
|
local abilities = self.abilities
|
|
876
972
|
abilities[#abilities + 1] = ability
|
|
877
|
-
return ability
|
|
878
973
|
end
|
|
879
|
-
return
|
|
974
|
+
return ability
|
|
880
975
|
end
|
|
881
976
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
882
977
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -890,31 +985,21 @@ end
|
|
|
890
985
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
891
986
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
892
987
|
end
|
|
893
|
-
function Unit.prototype.
|
|
894
|
-
local
|
|
895
|
-
|
|
896
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
897
|
-
return nil
|
|
898
|
-
end
|
|
899
|
-
return UnitAbility:of(
|
|
900
|
-
getUnitAbility(self.handle, abilityId),
|
|
901
|
-
abilityId,
|
|
902
|
-
self
|
|
903
|
-
)
|
|
988
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
989
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
990
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
904
991
|
end
|
|
905
|
-
function Unit.prototype.removeAbility(self,
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
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
|
|
914
1000
|
end
|
|
915
|
-
return true
|
|
916
1001
|
end
|
|
917
|
-
return
|
|
1002
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
918
1003
|
end
|
|
919
1004
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
920
1005
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -928,9 +1013,6 @@ end
|
|
|
928
1013
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
929
1014
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
930
1015
|
end
|
|
931
|
-
function Unit.prototype.interruptAttack(self)
|
|
932
|
-
unitInterruptAttack(self.handle)
|
|
933
|
-
end
|
|
934
1016
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
935
1017
|
local handle = self.handle
|
|
936
1018
|
unitDisableAbility(handle, abilityId, true, false)
|
|
@@ -1001,18 +1083,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
1001
1083
|
end
|
|
1002
1084
|
function Unit.prototype.incrementStunCounter(self)
|
|
1003
1085
|
local stunCounter = self[102] or 0
|
|
1004
|
-
if not self[101] or stunCounter >= 0 then
|
|
1086
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
1005
1087
|
BlzPauseUnitEx(self.handle, true)
|
|
1006
1088
|
end
|
|
1007
1089
|
self[102] = stunCounter + 1
|
|
1008
1090
|
end
|
|
1009
1091
|
function Unit.prototype.decrementStunCounter(self)
|
|
1010
1092
|
local stunCounter = self[102] or 0
|
|
1011
|
-
if not self[101] or stunCounter >= 1 then
|
|
1093
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1012
1094
|
BlzPauseUnitEx(self.handle, false)
|
|
1013
1095
|
end
|
|
1014
1096
|
self[102] = stunCounter - 1
|
|
1015
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
|
|
1016
1124
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1017
1125
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
1018
1126
|
owner.handle,
|
|
@@ -1201,7 +1309,7 @@ __TS__SetDescriptor(
|
|
|
1201
1309
|
Unit.prototype,
|
|
1202
1310
|
"isIllusion",
|
|
1203
1311
|
{get = function(self)
|
|
1204
|
-
return
|
|
1312
|
+
return IsUnitIllusion(self.handle)
|
|
1205
1313
|
end},
|
|
1206
1314
|
true
|
|
1207
1315
|
)
|
|
@@ -1288,13 +1396,13 @@ __TS__SetDescriptor(
|
|
|
1288
1396
|
)
|
|
1289
1397
|
__TS__SetDescriptor(
|
|
1290
1398
|
Unit.prototype,
|
|
1291
|
-
"
|
|
1399
|
+
"primaryAttribute",
|
|
1292
1400
|
{
|
|
1293
1401
|
get = function(self)
|
|
1294
|
-
return
|
|
1402
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1295
1403
|
end,
|
|
1296
|
-
set = function(self,
|
|
1297
|
-
|
|
1404
|
+
set = function(self, primaryAttribute)
|
|
1405
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1298
1406
|
end
|
|
1299
1407
|
},
|
|
1300
1408
|
true
|
|
@@ -1316,19 +1424,6 @@ __TS__SetDescriptor(
|
|
|
1316
1424
|
end},
|
|
1317
1425
|
true
|
|
1318
1426
|
)
|
|
1319
|
-
__TS__SetDescriptor(
|
|
1320
|
-
Unit.prototype,
|
|
1321
|
-
"agilityBase",
|
|
1322
|
-
{
|
|
1323
|
-
get = function(self)
|
|
1324
|
-
return getHeroAgi(self.handle, false)
|
|
1325
|
-
end,
|
|
1326
|
-
set = function(self, agilityBase)
|
|
1327
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1328
|
-
end
|
|
1329
|
-
},
|
|
1330
|
-
true
|
|
1331
|
-
)
|
|
1332
1427
|
__TS__SetDescriptor(
|
|
1333
1428
|
Unit.prototype,
|
|
1334
1429
|
"agilityBonus",
|
|
@@ -1346,19 +1441,6 @@ __TS__SetDescriptor(
|
|
|
1346
1441
|
end},
|
|
1347
1442
|
true
|
|
1348
1443
|
)
|
|
1349
|
-
__TS__SetDescriptor(
|
|
1350
|
-
Unit.prototype,
|
|
1351
|
-
"intelligenceBase",
|
|
1352
|
-
{
|
|
1353
|
-
get = function(self)
|
|
1354
|
-
return getHeroInt(self.handle, false)
|
|
1355
|
-
end,
|
|
1356
|
-
set = function(self, intelligenceBase)
|
|
1357
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1358
|
-
end
|
|
1359
|
-
},
|
|
1360
|
-
true
|
|
1361
|
-
)
|
|
1362
1444
|
__TS__SetDescriptor(
|
|
1363
1445
|
Unit.prototype,
|
|
1364
1446
|
"intelligenceBonus",
|
|
@@ -1407,17 +1489,17 @@ __TS__SetDescriptor(
|
|
|
1407
1489
|
"isTeamGlowVisible",
|
|
1408
1490
|
{
|
|
1409
1491
|
get = function(self)
|
|
1410
|
-
return not self[
|
|
1492
|
+
return not self[107]
|
|
1411
1493
|
end,
|
|
1412
1494
|
set = function(self, isTeamGlowVisible)
|
|
1413
|
-
|
|
1414
|
-
local
|
|
1495
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1496
|
+
local ____temp_7
|
|
1415
1497
|
if not isTeamGlowVisible then
|
|
1416
|
-
|
|
1498
|
+
____temp_7 = true
|
|
1417
1499
|
else
|
|
1418
|
-
|
|
1500
|
+
____temp_7 = nil
|
|
1419
1501
|
end
|
|
1420
|
-
self[
|
|
1502
|
+
self[107] = ____temp_7
|
|
1421
1503
|
end
|
|
1422
1504
|
},
|
|
1423
1505
|
true
|
|
@@ -1426,9 +1508,9 @@ __TS__SetDescriptor(
|
|
|
1426
1508
|
Unit.prototype,
|
|
1427
1509
|
"color",
|
|
1428
1510
|
{set = function(self, color)
|
|
1429
|
-
|
|
1430
|
-
if self[
|
|
1431
|
-
|
|
1511
|
+
SetUnitColor(self.handle, color.handle)
|
|
1512
|
+
if self[107] then
|
|
1513
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1432
1514
|
end
|
|
1433
1515
|
end},
|
|
1434
1516
|
true
|
|
@@ -1451,14 +1533,14 @@ __TS__SetDescriptor(
|
|
|
1451
1533
|
"maxHealth",
|
|
1452
1534
|
{
|
|
1453
1535
|
get = function(self)
|
|
1454
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1536
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1455
1537
|
end,
|
|
1456
1538
|
set = function(self, maxHealth)
|
|
1457
|
-
if maxHealth < 1 and self[
|
|
1458
|
-
self[
|
|
1539
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1540
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1459
1541
|
maxHealth = 1
|
|
1460
1542
|
end
|
|
1461
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1543
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1462
1544
|
end
|
|
1463
1545
|
},
|
|
1464
1546
|
true
|
|
@@ -1500,10 +1582,10 @@ __TS__SetDescriptor(
|
|
|
1500
1582
|
"health",
|
|
1501
1583
|
{
|
|
1502
1584
|
get = function(self)
|
|
1503
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1585
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1504
1586
|
end,
|
|
1505
1587
|
set = function(self, health)
|
|
1506
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1588
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1507
1589
|
end
|
|
1508
1590
|
},
|
|
1509
1591
|
true
|
|
@@ -1579,25 +1661,12 @@ __TS__SetDescriptor(
|
|
|
1579
1661
|
},
|
|
1580
1662
|
true
|
|
1581
1663
|
)
|
|
1582
|
-
__TS__SetDescriptor(
|
|
1583
|
-
Unit.prototype,
|
|
1584
|
-
"flyHeight",
|
|
1585
|
-
{
|
|
1586
|
-
get = function(self)
|
|
1587
|
-
return getUnitFlyHeight(self.handle)
|
|
1588
|
-
end,
|
|
1589
|
-
set = function(self, v)
|
|
1590
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1591
|
-
end
|
|
1592
|
-
},
|
|
1593
|
-
true
|
|
1594
|
-
)
|
|
1595
1664
|
__TS__SetDescriptor(
|
|
1596
1665
|
Unit.prototype,
|
|
1597
1666
|
"x",
|
|
1598
1667
|
{
|
|
1599
1668
|
get = function(self)
|
|
1600
|
-
return getUnitX(self.handle)
|
|
1669
|
+
return self[108] or getUnitX(self.handle)
|
|
1601
1670
|
end,
|
|
1602
1671
|
set = function(self, v)
|
|
1603
1672
|
SetUnitX(self.handle, v)
|
|
@@ -1610,7 +1679,7 @@ __TS__SetDescriptor(
|
|
|
1610
1679
|
"y",
|
|
1611
1680
|
{
|
|
1612
1681
|
get = function(self)
|
|
1613
|
-
return getUnitY(self.handle)
|
|
1682
|
+
return self[109] or getUnitY(self.handle)
|
|
1614
1683
|
end,
|
|
1615
1684
|
set = function(self, v)
|
|
1616
1685
|
SetUnitY(self.handle, v)
|
|
@@ -1696,10 +1765,10 @@ __TS__SetDescriptor(
|
|
|
1696
1765
|
"gold",
|
|
1697
1766
|
{
|
|
1698
1767
|
get = function(self)
|
|
1699
|
-
return
|
|
1768
|
+
return GetResourceAmount(self.handle)
|
|
1700
1769
|
end,
|
|
1701
1770
|
set = function(self, gold)
|
|
1702
|
-
|
|
1771
|
+
SetResourceAmount(self.handle, gold)
|
|
1703
1772
|
end
|
|
1704
1773
|
},
|
|
1705
1774
|
true
|
|
@@ -1715,14 +1784,18 @@ __TS__SetDescriptor(
|
|
|
1715
1784
|
local handle = self.handle
|
|
1716
1785
|
if isPaused and not IsUnitPaused(handle) then
|
|
1717
1786
|
self[101] = true
|
|
1718
|
-
|
|
1719
|
-
|
|
1787
|
+
if (self[103] or 0) <= 0 then
|
|
1788
|
+
for _ = self[102] or 0, -1 do
|
|
1789
|
+
BlzPauseUnitEx(handle, true)
|
|
1790
|
+
end
|
|
1720
1791
|
end
|
|
1721
1792
|
PauseUnit(handle, true)
|
|
1722
1793
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1723
1794
|
PauseUnit(handle, false)
|
|
1724
|
-
|
|
1725
|
-
|
|
1795
|
+
if (self[103] or 0) <= 0 then
|
|
1796
|
+
for _ = self[102] or 0, -1 do
|
|
1797
|
+
BlzPauseUnitEx(handle, false)
|
|
1798
|
+
end
|
|
1726
1799
|
end
|
|
1727
1800
|
self[101] = nil
|
|
1728
1801
|
end
|
|
@@ -1780,20 +1853,6 @@ __TS__SetDescriptor(
|
|
|
1780
1853
|
},
|
|
1781
1854
|
true
|
|
1782
1855
|
)
|
|
1783
|
-
__TS__SetDescriptor(
|
|
1784
|
-
Unit.prototype,
|
|
1785
|
-
"scale",
|
|
1786
|
-
{
|
|
1787
|
-
get = function(self)
|
|
1788
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1789
|
-
end,
|
|
1790
|
-
set = function(self, v)
|
|
1791
|
-
setUnitScale(self.handle, v, v, v)
|
|
1792
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1793
|
-
end
|
|
1794
|
-
},
|
|
1795
|
-
true
|
|
1796
|
-
)
|
|
1797
1856
|
__TS__SetDescriptor(
|
|
1798
1857
|
Unit.prototype,
|
|
1799
1858
|
"timeScale",
|
|
@@ -1827,6 +1886,19 @@ __TS__SetDescriptor(
|
|
|
1827
1886
|
end},
|
|
1828
1887
|
true
|
|
1829
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
|
+
)
|
|
1830
1902
|
__TS__SetDescriptor(
|
|
1831
1903
|
Unit.prototype,
|
|
1832
1904
|
"pathing",
|
|
@@ -1917,30 +1989,6 @@ __TS__SetDescriptor(
|
|
|
1917
1989
|
end},
|
|
1918
1990
|
true
|
|
1919
1991
|
)
|
|
1920
|
-
__TS__SetDescriptor(
|
|
1921
|
-
Unit.prototype,
|
|
1922
|
-
"onUnitInRange",
|
|
1923
|
-
{get = function(self)
|
|
1924
|
-
local handle = self.handle
|
|
1925
|
-
local onUnitInRange = setmetatable(
|
|
1926
|
-
{},
|
|
1927
|
-
{__index = function(self, value)
|
|
1928
|
-
local event = __TS__New(
|
|
1929
|
-
TriggerEvent,
|
|
1930
|
-
function(trigger)
|
|
1931
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
1932
|
-
end,
|
|
1933
|
-
function() return ____exports.Unit:of(handle) end
|
|
1934
|
-
)
|
|
1935
|
-
rawset(self, value, event)
|
|
1936
|
-
return event
|
|
1937
|
-
end}
|
|
1938
|
-
)
|
|
1939
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
1940
|
-
return onUnitInRange
|
|
1941
|
-
end},
|
|
1942
|
-
true
|
|
1943
|
-
)
|
|
1944
1992
|
__TS__SetDescriptor(
|
|
1945
1993
|
Unit.prototype,
|
|
1946
1994
|
"onManaEqual",
|
|
@@ -2008,6 +2056,14 @@ __TS__SetDescriptor(
|
|
|
2008
2056
|
end},
|
|
2009
2057
|
true
|
|
2010
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
|
+
)
|
|
2011
2067
|
__TS__SetDescriptor(
|
|
2012
2068
|
Unit.prototype,
|
|
2013
2069
|
"onSelect",
|
|
@@ -2068,6 +2124,11 @@ __TS__SetDescriptor(
|
|
|
2068
2124
|
end},
|
|
2069
2125
|
true
|
|
2070
2126
|
)
|
|
2127
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2128
|
+
____exports.UnitTriggerEvent,
|
|
2129
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2130
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2131
|
+
)
|
|
2071
2132
|
Unit.deathEvent = __TS__New(
|
|
2072
2133
|
____exports.UnitTriggerEvent,
|
|
2073
2134
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2143,25 +2204,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2143
2204
|
InitializingEvent,
|
|
2144
2205
|
function(event)
|
|
2145
2206
|
local function listener(unit, id)
|
|
2146
|
-
local
|
|
2207
|
+
local ____GetSpellTargetUnit_result_10
|
|
2147
2208
|
if GetSpellTargetUnit() then
|
|
2148
|
-
|
|
2209
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2149
2210
|
else
|
|
2150
|
-
local
|
|
2211
|
+
local ____GetSpellTargetItem_result_9
|
|
2151
2212
|
if GetSpellTargetItem() then
|
|
2152
|
-
|
|
2213
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2153
2214
|
else
|
|
2154
|
-
local
|
|
2215
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2155
2216
|
if GetSpellTargetDestructable() then
|
|
2156
|
-
|
|
2217
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2157
2218
|
else
|
|
2158
|
-
|
|
2219
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2159
2220
|
end
|
|
2160
|
-
|
|
2221
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2161
2222
|
end
|
|
2162
|
-
|
|
2223
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2163
2224
|
end
|
|
2164
|
-
local target =
|
|
2225
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2165
2226
|
if target then
|
|
2166
2227
|
invoke(event, unit, id, target)
|
|
2167
2228
|
end
|
|
@@ -2369,38 +2430,57 @@ Unit.onDamaging = (function()
|
|
|
2369
2430
|
if source and source.typeId == dummyUnitId then
|
|
2370
2431
|
source = nil
|
|
2371
2432
|
end
|
|
2372
|
-
local target = BlzGetEventDamageTarget()
|
|
2433
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2434
|
+
local metadata = damageMetadataByTarget[target]
|
|
2435
|
+
damageMetadataByTarget[target] = nil
|
|
2373
2436
|
local data = {
|
|
2374
2437
|
amount = GetEventDamage(),
|
|
2375
|
-
attackType = BlzGetEventAttackType(),
|
|
2438
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2376
2439
|
damageType = BlzGetEventDamageType(),
|
|
2377
2440
|
weaponType = BlzGetEventWeaponType(),
|
|
2378
|
-
|
|
2441
|
+
metadata = metadata,
|
|
2442
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2443
|
+
originalAmount = GetEventDamage(),
|
|
2444
|
+
originalMetadata = metadata,
|
|
2445
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2379
2446
|
}
|
|
2380
2447
|
if data.isAttack and source then
|
|
2381
|
-
|
|
2382
|
-
if weapon == -1 then
|
|
2383
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2384
|
-
weapon = 0
|
|
2385
|
-
end
|
|
2386
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2448
|
+
data.weapon = source:chooseWeapon(target)
|
|
2387
2449
|
end
|
|
2388
2450
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2389
2451
|
invoke(
|
|
2390
2452
|
event,
|
|
2391
2453
|
source,
|
|
2392
|
-
|
|
2454
|
+
target,
|
|
2393
2455
|
setmetatable(
|
|
2394
2456
|
{},
|
|
2395
2457
|
{
|
|
2396
2458
|
__index = data,
|
|
2397
2459
|
__newindex = function(self, key, value)
|
|
2398
|
-
damageSetters[key]
|
|
2460
|
+
local damageSetter = damageSetters[key]
|
|
2461
|
+
if damageSetter ~= nil then
|
|
2462
|
+
damageSetter(value)
|
|
2463
|
+
end
|
|
2399
2464
|
data[key] = value
|
|
2400
2465
|
end
|
|
2401
2466
|
}
|
|
2402
2467
|
)
|
|
2403
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
|
|
2404
2484
|
return
|
|
2405
2485
|
end
|
|
2406
2486
|
BlzSetEventDamage(0)
|
|
@@ -2408,7 +2488,7 @@ Unit.onDamaging = (function()
|
|
|
2408
2488
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2409
2489
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2410
2490
|
local sourceOwner = source.owner.handle
|
|
2411
|
-
local targetOwner =
|
|
2491
|
+
local targetOwner = target.owner.handle
|
|
2412
2492
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2413
2493
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2414
2494
|
Timer:run(function()
|
|
@@ -2424,23 +2504,19 @@ Unit.onDamaging = (function()
|
|
|
2424
2504
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2425
2505
|
local condition = ____value[1]
|
|
2426
2506
|
local action = ____value[2]
|
|
2427
|
-
if condition(
|
|
2428
|
-
source,
|
|
2429
|
-
____exports.Unit:of(target),
|
|
2430
|
-
data
|
|
2431
|
-
) then
|
|
2507
|
+
if condition(source, target, data) then
|
|
2432
2508
|
action(
|
|
2433
2509
|
source,
|
|
2434
|
-
|
|
2510
|
+
target,
|
|
2435
2511
|
setmetatable(
|
|
2436
2512
|
{fire = function()
|
|
2437
2513
|
UnitDamageTarget(
|
|
2438
2514
|
source.handle,
|
|
2439
|
-
target,
|
|
2515
|
+
target.handle,
|
|
2440
2516
|
data.amount,
|
|
2441
2517
|
true,
|
|
2442
2518
|
true,
|
|
2443
|
-
data.attackType,
|
|
2519
|
+
attackTypeToNative(data.attackType),
|
|
2444
2520
|
data.damageType,
|
|
2445
2521
|
data.weaponType
|
|
2446
2522
|
)
|
|
@@ -2467,30 +2543,54 @@ Unit.onDamage = __TS__New(
|
|
|
2467
2543
|
if source and source.typeId == dummyUnitId then
|
|
2468
2544
|
source = nil
|
|
2469
2545
|
end
|
|
2546
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2547
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2548
|
+
damagingEventByTarget[target] = nil
|
|
2470
2549
|
local data = {
|
|
2471
2550
|
amount = GetEventDamage(),
|
|
2472
|
-
attackType = BlzGetEventAttackType(),
|
|
2551
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2473
2552
|
damageType = BlzGetEventDamageType(),
|
|
2474
2553
|
weaponType = BlzGetEventWeaponType(),
|
|
2554
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2475
2555
|
isAttack = BlzGetEventIsAttack(),
|
|
2476
|
-
originalAmount = GetEventDamage(),
|
|
2556
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2557
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2477
2558
|
preventDeath = damageEventPreventDeath
|
|
2478
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
|
|
2479
2577
|
local evData = setmetatable(
|
|
2480
2578
|
{},
|
|
2481
2579
|
{
|
|
2482
2580
|
__index = data,
|
|
2483
2581
|
__newindex = function(self, key, value)
|
|
2484
|
-
damageSetters[key]
|
|
2582
|
+
local damageSetter = damageSetters[key]
|
|
2583
|
+
if damageSetter ~= nil then
|
|
2584
|
+
damageSetter(value)
|
|
2585
|
+
end
|
|
2485
2586
|
data[key] = value
|
|
2486
2587
|
end
|
|
2487
2588
|
}
|
|
2488
2589
|
)
|
|
2489
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2490
2590
|
invoke(event, source, target, evData)
|
|
2491
2591
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2492
2592
|
local bonusHealth = math.ceil(evData.amount)
|
|
2493
|
-
target[
|
|
2593
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2494
2594
|
BlzSetUnitMaxHP(
|
|
2495
2595
|
target.handle,
|
|
2496
2596
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2504,7 +2604,7 @@ Unit.onDamage = __TS__New(
|
|
|
2504
2604
|
evData[0],
|
|
2505
2605
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2506
2606
|
)
|
|
2507
|
-
target[
|
|
2607
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2508
2608
|
SetWidgetLife(
|
|
2509
2609
|
target.handle,
|
|
2510
2610
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2540,10 +2640,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2540
2640
|
____exports.UnitTriggerEvent,
|
|
2541
2641
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2542
2642
|
function()
|
|
2543
|
-
local
|
|
2544
|
-
local
|
|
2545
|
-
if getUnitTypeId(
|
|
2546
|
-
|
|
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
|
|
2547
2651
|
end
|
|
2548
2652
|
return IgnoreEvent
|
|
2549
2653
|
end
|
|
@@ -2563,7 +2667,22 @@ Unit.itemUsedEvent = __TS__New(
|
|
|
2563
2667
|
Unit.itemStackedEvent = __TS__New(
|
|
2564
2668
|
____exports.UnitTriggerEvent,
|
|
2565
2669
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2566
|
-
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}
|
|
2567
2686
|
)
|
|
2568
2687
|
__TS__ObjectDefineProperty(
|
|
2569
2688
|
Unit,
|
|
@@ -2635,6 +2754,10 @@ __TS__ObjectDefineProperty(
|
|
|
2635
2754
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2636
2755
|
return destroyEvent
|
|
2637
2756
|
end}
|
|
2757
|
+
)
|
|
2758
|
+
Unit.synchronize = synchronizer(
|
|
2759
|
+
function(unit) return unit.syncId end,
|
|
2760
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2638
2761
|
);
|
|
2639
2762
|
(function(self)
|
|
2640
2763
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2664,7 +2787,8 @@ __TS__ObjectDefineProperty(
|
|
|
2664
2787
|
return
|
|
2665
2788
|
end
|
|
2666
2789
|
end
|
|
2667
|
-
unit:
|
|
2790
|
+
unit:saveData()
|
|
2791
|
+
Timer:run(unit, "destroy")
|
|
2668
2792
|
end)
|
|
2669
2793
|
end
|
|
2670
2794
|
end)(Unit)
|