warscript 0.0.1-dev.c74bdbb → 0.0.1-dev.c762beb
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/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.lua +1 -1
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- 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/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +31 -37
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +11 -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 +11 -6
- package/engine/behaviour/ability.lua +38 -17
- 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 +39 -3
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +67 -22
- package/engine/buff.lua +371 -182
- 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/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/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/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 +6 -0
- package/engine/internal/unit/bonus.lua +33 -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 +1 -1
- 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 +40 -27
- package/engine/internal/unit.lua +382 -264
- 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/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/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/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/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type.d.ts +2 -0
- package/engine/object-data/entry/ability-type.lua +89 -8
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- 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/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 +9 -8
- 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/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/lualib_bundle.lua +118 -47
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/objutil/object.lua +1 -1
- package/operation.lua +23 -17
- 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 +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/{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,35 +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 resetUnitAnimation = ResetUnitAnimation
|
|
62
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
63
73
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
64
74
|
local getUnitRealField = BlzGetUnitRealField
|
|
65
75
|
local getHeroStr = GetHeroStr
|
|
66
76
|
local getHeroAgi = GetHeroAgi
|
|
67
77
|
local getHeroInt = GetHeroInt
|
|
68
|
-
local setHeroStr = SetHeroStr
|
|
69
|
-
local setHeroAgi = SetHeroAgi
|
|
70
|
-
local setHeroInt = SetHeroInt
|
|
71
78
|
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
72
79
|
local getUnitStringField = BlzGetUnitStringField
|
|
73
80
|
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
74
81
|
local setUnitRealField = BlzSetUnitRealField
|
|
75
82
|
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
76
83
|
local setUnitStringField = BlzSetUnitStringField
|
|
77
|
-
local setUnitScale = SetUnitScale
|
|
78
84
|
local setUnitPosition = SetUnitPosition
|
|
79
85
|
local setUnitTimeScale = SetUnitTimeScale
|
|
80
86
|
local getHandleId = GetHandleId
|
|
81
87
|
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
82
88
|
local createUnit = CreateUnit
|
|
83
89
|
local killUnit = KillUnit
|
|
84
|
-
local setUnitExploded = SetUnitExploded
|
|
85
90
|
local removeUnit = RemoveUnit
|
|
86
91
|
local getUnitTypeId = GetUnitTypeId
|
|
87
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -97,15 +102,12 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
97
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
98
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
99
104
|
local isUnitInRange = IsUnitInRange
|
|
100
|
-
local setResourceAmount = SetResourceAmount
|
|
101
|
-
local getResourceAmount = GetResourceAmount
|
|
102
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
103
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
104
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
105
108
|
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
106
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
107
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
108
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
109
111
|
local isUnitInvisible = IsUnitInvisible
|
|
110
112
|
local isUnitVisible = IsUnitVisible
|
|
111
113
|
local getUnitX = GetUnitX
|
|
@@ -122,15 +124,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
122
124
|
local getIssuedOrderId = GetIssuedOrderId
|
|
123
125
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
124
126
|
local unitAlive = UnitAlive
|
|
125
|
-
local unitAddType = UnitAddType
|
|
126
|
-
local unitRemoveType = UnitRemoveType
|
|
127
|
-
local isUnitIllusion = IsUnitIllusion
|
|
128
|
-
local isUnitType = IsUnitType
|
|
129
127
|
local isUnitAlly = IsUnitAlly
|
|
130
128
|
local isUnitEnemy = IsUnitEnemy
|
|
131
129
|
local getOwningPlayer = GetOwningPlayer
|
|
132
|
-
local setUnitColor = SetUnitColor
|
|
133
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
134
130
|
____exports.UnitClassification = {}
|
|
135
131
|
local UnitClassification = ____exports.UnitClassification
|
|
136
132
|
do
|
|
@@ -140,6 +136,7 @@ do
|
|
|
140
136
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
141
137
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
142
138
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
139
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
143
140
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
144
141
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
145
142
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -347,6 +344,9 @@ local function dispatchAbility(event)
|
|
|
347
344
|
}
|
|
348
345
|
)
|
|
349
346
|
end
|
|
347
|
+
local function damagingEventPreventRetaliation(self)
|
|
348
|
+
self[0] = true
|
|
349
|
+
end
|
|
350
350
|
local function damageEventPreventDeath(self, callback, ...)
|
|
351
351
|
if self[0] ~= nil then
|
|
352
352
|
return
|
|
@@ -358,7 +358,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
358
358
|
rawset(self, 1 + i, (select(i, ...)))
|
|
359
359
|
end
|
|
360
360
|
end
|
|
361
|
-
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
|
+
}
|
|
362
369
|
local jlimitopByOperator = {
|
|
363
370
|
[0] = LESS_THAN_OR_EQUAL,
|
|
364
371
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -376,15 +383,27 @@ local modifiers = {
|
|
|
376
383
|
end,
|
|
377
384
|
armor = function(unit, value)
|
|
378
385
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
379
|
-
assert(
|
|
386
|
+
assert(
|
|
387
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
388
|
+
"armor bonus ability must be made permanent",
|
|
389
|
+
unit
|
|
390
|
+
)
|
|
380
391
|
end
|
|
381
|
-
local ability = assert(
|
|
382
|
-
|
|
383
|
-
ability,
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
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
|
+
)
|
|
388
407
|
end
|
|
389
408
|
}
|
|
390
409
|
local getters = {
|
|
@@ -402,6 +421,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
402
421
|
self.unit = unit
|
|
403
422
|
self.index = index
|
|
404
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
|
+
)
|
|
405
437
|
__TS__SetDescriptor(
|
|
406
438
|
UnitWeapon.prototype,
|
|
407
439
|
"cooldown",
|
|
@@ -436,6 +468,19 @@ __TS__SetDescriptor(
|
|
|
436
468
|
},
|
|
437
469
|
true
|
|
438
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
|
+
)
|
|
439
484
|
__TS__SetDescriptor(
|
|
440
485
|
UnitWeapon.prototype,
|
|
441
486
|
"damageBase",
|
|
@@ -612,26 +657,30 @@ local fieldSetters = {
|
|
|
612
657
|
}
|
|
613
658
|
local dummies = {}
|
|
614
659
|
for ____, player in ipairs(Player.all) do
|
|
615
|
-
local dummy = assert(
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
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
|
+
)
|
|
622
671
|
ShowUnit(dummy, false)
|
|
623
672
|
dummies[player] = dummy
|
|
624
673
|
end
|
|
625
674
|
local function delayHealthChecksCallback(unit)
|
|
626
|
-
local counter = (unit[
|
|
675
|
+
local counter = (unit[104] or 0) - 1
|
|
627
676
|
if counter ~= 0 then
|
|
628
|
-
unit[
|
|
677
|
+
unit[104] = counter
|
|
629
678
|
return
|
|
630
679
|
end
|
|
631
|
-
unit[
|
|
632
|
-
local healthBonus = unit[
|
|
680
|
+
unit[104] = nil
|
|
681
|
+
local healthBonus = unit[105]
|
|
633
682
|
if healthBonus ~= nil then
|
|
634
|
-
unit[
|
|
683
|
+
unit[105] = nil
|
|
635
684
|
local handle = unit.handle
|
|
636
685
|
BlzSetUnitMaxHP(
|
|
637
686
|
handle,
|
|
@@ -640,52 +689,78 @@ local function delayHealthChecksCallback(unit)
|
|
|
640
689
|
end
|
|
641
690
|
end
|
|
642
691
|
local nextSyncId = 1
|
|
643
|
-
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
|
|
644
703
|
____exports.Unit = __TS__Class()
|
|
645
704
|
local Unit = ____exports.Unit
|
|
646
705
|
Unit.name = "Unit"
|
|
647
706
|
__TS__ClassExtends(Unit, Handle)
|
|
648
707
|
function Unit.prototype.____constructor(self, handle)
|
|
649
708
|
Handle.prototype.____constructor(self, handle)
|
|
650
|
-
local
|
|
651
|
-
nextSyncId =
|
|
652
|
-
self.syncId =
|
|
709
|
+
local ____nextSyncId_1 = nextSyncId
|
|
710
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
711
|
+
self.syncId = ____nextSyncId_1
|
|
653
712
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
654
|
-
assert(
|
|
655
|
-
|
|
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
|
+
)
|
|
656
723
|
if unitAddAbility(
|
|
657
724
|
handle,
|
|
658
725
|
fourCC("Amrf")
|
|
659
726
|
) then
|
|
660
|
-
assert(
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
727
|
+
assert(
|
|
728
|
+
unitRemoveAbility(
|
|
729
|
+
handle,
|
|
730
|
+
fourCC("Amrf")
|
|
731
|
+
),
|
|
732
|
+
"fly ability must be removed after addition",
|
|
733
|
+
self
|
|
734
|
+
)
|
|
664
735
|
end
|
|
665
736
|
unitBySyncId[self.syncId] = self
|
|
666
737
|
local ____ = self.abilities
|
|
667
738
|
end
|
|
668
|
-
function Unit.prototype.getEvent(self,
|
|
669
|
-
self.events = self.events or (
|
|
670
|
-
local eventId = GetHandleId(
|
|
671
|
-
|
|
672
|
-
|
|
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(
|
|
673
745
|
TriggerEvent,
|
|
674
746
|
function(trigger)
|
|
675
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
747
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
676
748
|
end,
|
|
677
749
|
collector or (function() return {} end)
|
|
678
750
|
)
|
|
751
|
+
self.events:put(eventId, event)
|
|
679
752
|
end
|
|
680
|
-
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))
|
|
681
760
|
end
|
|
682
761
|
function Unit.prototype.onDestroy(self)
|
|
683
762
|
local handle = self.handle
|
|
684
|
-
self
|
|
685
|
-
self[108] = getUnitY(handle)
|
|
686
|
-
if not self._owner then
|
|
687
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
688
|
-
end
|
|
763
|
+
self:saveData()
|
|
689
764
|
local abilities = self.abilities
|
|
690
765
|
for ____, ability in ipairs(abilities) do
|
|
691
766
|
ability:destroy()
|
|
@@ -721,7 +796,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
721
796
|
self._attackHandlers = handlers
|
|
722
797
|
if #handlers == 1 then
|
|
723
798
|
local handle = self.handle
|
|
724
|
-
assert(
|
|
799
|
+
assert(
|
|
800
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
801
|
+
"attack handler ability must be added",
|
|
802
|
+
self
|
|
803
|
+
)
|
|
725
804
|
end
|
|
726
805
|
return handler
|
|
727
806
|
end
|
|
@@ -750,17 +829,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
750
829
|
end}
|
|
751
830
|
end
|
|
752
831
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
753
|
-
local
|
|
754
|
-
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
|
|
755
834
|
end
|
|
756
835
|
function Unit.prototype.addClassification(self, classification)
|
|
757
|
-
return
|
|
836
|
+
return UnitAddType(self.handle, classification)
|
|
758
837
|
end
|
|
759
838
|
function Unit.prototype.removeClassification(self, classification)
|
|
760
|
-
return
|
|
839
|
+
return UnitRemoveType(self.handle, classification)
|
|
761
840
|
end
|
|
762
841
|
function Unit.prototype.hasClassification(self, classification)
|
|
763
|
-
return
|
|
842
|
+
return IsUnitType(self.handle, classification)
|
|
764
843
|
end
|
|
765
844
|
function Unit.prototype.isVisibleTo(self, player)
|
|
766
845
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -769,13 +848,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
769
848
|
return isUnitInvisible(self.handle, player.handle)
|
|
770
849
|
end
|
|
771
850
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
772
|
-
local
|
|
851
|
+
local ____temp_3
|
|
773
852
|
if type(x) == "number" then
|
|
774
|
-
|
|
853
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
775
854
|
else
|
|
776
|
-
|
|
855
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
777
856
|
end
|
|
778
|
-
return
|
|
857
|
+
return ____temp_3
|
|
779
858
|
end
|
|
780
859
|
function Unit.prototype.isAllyOf(self, unit)
|
|
781
860
|
return isUnitAlly(
|
|
@@ -793,19 +872,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
793
872
|
if type(animation) == "number" then
|
|
794
873
|
setUnitAnimationByIndex(self.handle, animation)
|
|
795
874
|
elseif rarity then
|
|
796
|
-
|
|
875
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
797
876
|
else
|
|
798
877
|
setUnitAnimation(self.handle, animation)
|
|
799
878
|
end
|
|
800
879
|
end
|
|
801
880
|
function Unit.prototype.resetAnimation(self)
|
|
802
|
-
|
|
881
|
+
ResetUnitAnimation(self.handle)
|
|
803
882
|
end
|
|
804
883
|
function Unit.prototype.queueAnimation(self, animation)
|
|
805
|
-
|
|
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
|
|
806
896
|
end
|
|
807
897
|
function Unit.prototype.delayHealthChecks(self)
|
|
808
|
-
self[
|
|
898
|
+
self[104] = (self[104] or 0) + 1
|
|
809
899
|
Timer:run(delayHealthChecksCallback, self)
|
|
810
900
|
end
|
|
811
901
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -815,21 +905,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
815
905
|
return IsUnitSelected(self.handle, player.handle)
|
|
816
906
|
end
|
|
817
907
|
function Unit.prototype.explode(self)
|
|
818
|
-
|
|
908
|
+
SetUnitExploded(self.handle, true)
|
|
819
909
|
killUnit(self.handle)
|
|
820
910
|
end
|
|
821
911
|
function Unit.prototype.kill(self)
|
|
822
912
|
killUnit(self.handle)
|
|
823
913
|
end
|
|
824
914
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
825
|
-
local
|
|
826
|
-
local
|
|
827
|
-
local
|
|
828
|
-
if
|
|
829
|
-
|
|
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
|
|
830
920
|
end
|
|
831
|
-
__TS__SparseArrayPush(
|
|
832
|
-
|
|
921
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
922
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
833
923
|
end
|
|
834
924
|
function Unit.prototype.healTarget(self, target, amount)
|
|
835
925
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -872,17 +962,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
872
962
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
873
963
|
end
|
|
874
964
|
function Unit.prototype.addAbility(self, abilityId)
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
965
|
+
local ability = UnitAbility:of(
|
|
966
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
967
|
+
abilityId,
|
|
968
|
+
self
|
|
969
|
+
)
|
|
970
|
+
if ability ~= nil then
|
|
881
971
|
local abilities = self.abilities
|
|
882
972
|
abilities[#abilities + 1] = ability
|
|
883
|
-
return ability
|
|
884
973
|
end
|
|
885
|
-
return
|
|
974
|
+
return ability
|
|
886
975
|
end
|
|
887
976
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
888
977
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -896,31 +985,21 @@ end
|
|
|
896
985
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
897
986
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
898
987
|
end
|
|
899
|
-
function Unit.prototype.
|
|
900
|
-
local
|
|
901
|
-
|
|
902
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
903
|
-
return nil
|
|
904
|
-
end
|
|
905
|
-
return UnitAbility:of(
|
|
906
|
-
getUnitAbility(self.handle, abilityId),
|
|
907
|
-
abilityId,
|
|
908
|
-
self
|
|
909
|
-
)
|
|
988
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
989
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
990
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
910
991
|
end
|
|
911
|
-
function Unit.prototype.removeAbility(self,
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
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
|
|
920
1000
|
end
|
|
921
|
-
return true
|
|
922
1001
|
end
|
|
923
|
-
return
|
|
1002
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
924
1003
|
end
|
|
925
1004
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
926
1005
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -934,9 +1013,6 @@ end
|
|
|
934
1013
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
935
1014
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
936
1015
|
end
|
|
937
|
-
function Unit.prototype.interruptAttack(self)
|
|
938
|
-
unitInterruptAttack(self.handle)
|
|
939
|
-
end
|
|
940
1016
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
941
1017
|
local handle = self.handle
|
|
942
1018
|
unitDisableAbility(handle, abilityId, true, false)
|
|
@@ -1007,18 +1083,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
1007
1083
|
end
|
|
1008
1084
|
function Unit.prototype.incrementStunCounter(self)
|
|
1009
1085
|
local stunCounter = self[102] or 0
|
|
1010
|
-
if not self[101] or stunCounter >= 0 then
|
|
1086
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
1011
1087
|
BlzPauseUnitEx(self.handle, true)
|
|
1012
1088
|
end
|
|
1013
1089
|
self[102] = stunCounter + 1
|
|
1014
1090
|
end
|
|
1015
1091
|
function Unit.prototype.decrementStunCounter(self)
|
|
1016
1092
|
local stunCounter = self[102] or 0
|
|
1017
|
-
if not self[101] or stunCounter >= 1 then
|
|
1093
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1018
1094
|
BlzPauseUnitEx(self.handle, false)
|
|
1019
1095
|
end
|
|
1020
1096
|
self[102] = stunCounter - 1
|
|
1021
1097
|
end
|
|
1098
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1099
|
+
local forceStunCounter = self[103] or 0
|
|
1100
|
+
if forceStunCounter == 0 then
|
|
1101
|
+
local handle = self.handle
|
|
1102
|
+
if not self[101] then
|
|
1103
|
+
for _ = self[102] or 0, -1 do
|
|
1104
|
+
BlzPauseUnitEx(handle, true)
|
|
1105
|
+
end
|
|
1106
|
+
end
|
|
1107
|
+
BlzPauseUnitEx(handle, true)
|
|
1108
|
+
end
|
|
1109
|
+
self[103] = forceStunCounter + 1
|
|
1110
|
+
end
|
|
1111
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1112
|
+
local forceStunCounter = self[103] or 0
|
|
1113
|
+
if forceStunCounter == 1 then
|
|
1114
|
+
local handle = self.handle
|
|
1115
|
+
if not self[101] then
|
|
1116
|
+
for _ = self[102] or 0, -1 do
|
|
1117
|
+
BlzPauseUnitEx(handle, false)
|
|
1118
|
+
end
|
|
1119
|
+
end
|
|
1120
|
+
BlzPauseUnitEx(handle, false)
|
|
1121
|
+
end
|
|
1122
|
+
self[103] = forceStunCounter - 1
|
|
1123
|
+
end
|
|
1022
1124
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1023
1125
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
1024
1126
|
owner.handle,
|
|
@@ -1207,7 +1309,7 @@ __TS__SetDescriptor(
|
|
|
1207
1309
|
Unit.prototype,
|
|
1208
1310
|
"isIllusion",
|
|
1209
1311
|
{get = function(self)
|
|
1210
|
-
return
|
|
1312
|
+
return IsUnitIllusion(self.handle)
|
|
1211
1313
|
end},
|
|
1212
1314
|
true
|
|
1213
1315
|
)
|
|
@@ -1294,13 +1396,13 @@ __TS__SetDescriptor(
|
|
|
1294
1396
|
)
|
|
1295
1397
|
__TS__SetDescriptor(
|
|
1296
1398
|
Unit.prototype,
|
|
1297
|
-
"
|
|
1399
|
+
"primaryAttribute",
|
|
1298
1400
|
{
|
|
1299
1401
|
get = function(self)
|
|
1300
|
-
return
|
|
1402
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1301
1403
|
end,
|
|
1302
|
-
set = function(self,
|
|
1303
|
-
|
|
1404
|
+
set = function(self, primaryAttribute)
|
|
1405
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1304
1406
|
end
|
|
1305
1407
|
},
|
|
1306
1408
|
true
|
|
@@ -1322,19 +1424,6 @@ __TS__SetDescriptor(
|
|
|
1322
1424
|
end},
|
|
1323
1425
|
true
|
|
1324
1426
|
)
|
|
1325
|
-
__TS__SetDescriptor(
|
|
1326
|
-
Unit.prototype,
|
|
1327
|
-
"agilityBase",
|
|
1328
|
-
{
|
|
1329
|
-
get = function(self)
|
|
1330
|
-
return getHeroAgi(self.handle, false)
|
|
1331
|
-
end,
|
|
1332
|
-
set = function(self, agilityBase)
|
|
1333
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1334
|
-
end
|
|
1335
|
-
},
|
|
1336
|
-
true
|
|
1337
|
-
)
|
|
1338
1427
|
__TS__SetDescriptor(
|
|
1339
1428
|
Unit.prototype,
|
|
1340
1429
|
"agilityBonus",
|
|
@@ -1352,19 +1441,6 @@ __TS__SetDescriptor(
|
|
|
1352
1441
|
end},
|
|
1353
1442
|
true
|
|
1354
1443
|
)
|
|
1355
|
-
__TS__SetDescriptor(
|
|
1356
|
-
Unit.prototype,
|
|
1357
|
-
"intelligenceBase",
|
|
1358
|
-
{
|
|
1359
|
-
get = function(self)
|
|
1360
|
-
return getHeroInt(self.handle, false)
|
|
1361
|
-
end,
|
|
1362
|
-
set = function(self, intelligenceBase)
|
|
1363
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1364
|
-
end
|
|
1365
|
-
},
|
|
1366
|
-
true
|
|
1367
|
-
)
|
|
1368
1444
|
__TS__SetDescriptor(
|
|
1369
1445
|
Unit.prototype,
|
|
1370
1446
|
"intelligenceBonus",
|
|
@@ -1413,17 +1489,17 @@ __TS__SetDescriptor(
|
|
|
1413
1489
|
"isTeamGlowVisible",
|
|
1414
1490
|
{
|
|
1415
1491
|
get = function(self)
|
|
1416
|
-
return not self[
|
|
1492
|
+
return not self[107]
|
|
1417
1493
|
end,
|
|
1418
1494
|
set = function(self, isTeamGlowVisible)
|
|
1419
|
-
|
|
1420
|
-
local
|
|
1495
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1496
|
+
local ____temp_7
|
|
1421
1497
|
if not isTeamGlowVisible then
|
|
1422
|
-
|
|
1498
|
+
____temp_7 = true
|
|
1423
1499
|
else
|
|
1424
|
-
|
|
1500
|
+
____temp_7 = nil
|
|
1425
1501
|
end
|
|
1426
|
-
self[
|
|
1502
|
+
self[107] = ____temp_7
|
|
1427
1503
|
end
|
|
1428
1504
|
},
|
|
1429
1505
|
true
|
|
@@ -1432,9 +1508,9 @@ __TS__SetDescriptor(
|
|
|
1432
1508
|
Unit.prototype,
|
|
1433
1509
|
"color",
|
|
1434
1510
|
{set = function(self, color)
|
|
1435
|
-
|
|
1436
|
-
if self[
|
|
1437
|
-
|
|
1511
|
+
SetUnitColor(self.handle, color.handle)
|
|
1512
|
+
if self[107] then
|
|
1513
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1438
1514
|
end
|
|
1439
1515
|
end},
|
|
1440
1516
|
true
|
|
@@ -1457,14 +1533,14 @@ __TS__SetDescriptor(
|
|
|
1457
1533
|
"maxHealth",
|
|
1458
1534
|
{
|
|
1459
1535
|
get = function(self)
|
|
1460
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1536
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1461
1537
|
end,
|
|
1462
1538
|
set = function(self, maxHealth)
|
|
1463
|
-
if maxHealth < 1 and self[
|
|
1464
|
-
self[
|
|
1539
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1540
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1465
1541
|
maxHealth = 1
|
|
1466
1542
|
end
|
|
1467
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1543
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1468
1544
|
end
|
|
1469
1545
|
},
|
|
1470
1546
|
true
|
|
@@ -1506,10 +1582,10 @@ __TS__SetDescriptor(
|
|
|
1506
1582
|
"health",
|
|
1507
1583
|
{
|
|
1508
1584
|
get = function(self)
|
|
1509
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1585
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1510
1586
|
end,
|
|
1511
1587
|
set = function(self, health)
|
|
1512
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1588
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1513
1589
|
end
|
|
1514
1590
|
},
|
|
1515
1591
|
true
|
|
@@ -1585,25 +1661,12 @@ __TS__SetDescriptor(
|
|
|
1585
1661
|
},
|
|
1586
1662
|
true
|
|
1587
1663
|
)
|
|
1588
|
-
__TS__SetDescriptor(
|
|
1589
|
-
Unit.prototype,
|
|
1590
|
-
"flyHeight",
|
|
1591
|
-
{
|
|
1592
|
-
get = function(self)
|
|
1593
|
-
return getUnitFlyHeight(self.handle)
|
|
1594
|
-
end,
|
|
1595
|
-
set = function(self, v)
|
|
1596
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1597
|
-
end
|
|
1598
|
-
},
|
|
1599
|
-
true
|
|
1600
|
-
)
|
|
1601
1664
|
__TS__SetDescriptor(
|
|
1602
1665
|
Unit.prototype,
|
|
1603
1666
|
"x",
|
|
1604
1667
|
{
|
|
1605
1668
|
get = function(self)
|
|
1606
|
-
return self[
|
|
1669
|
+
return self[108] or getUnitX(self.handle)
|
|
1607
1670
|
end,
|
|
1608
1671
|
set = function(self, v)
|
|
1609
1672
|
SetUnitX(self.handle, v)
|
|
@@ -1616,7 +1679,7 @@ __TS__SetDescriptor(
|
|
|
1616
1679
|
"y",
|
|
1617
1680
|
{
|
|
1618
1681
|
get = function(self)
|
|
1619
|
-
return self[
|
|
1682
|
+
return self[109] or getUnitY(self.handle)
|
|
1620
1683
|
end,
|
|
1621
1684
|
set = function(self, v)
|
|
1622
1685
|
SetUnitY(self.handle, v)
|
|
@@ -1702,10 +1765,10 @@ __TS__SetDescriptor(
|
|
|
1702
1765
|
"gold",
|
|
1703
1766
|
{
|
|
1704
1767
|
get = function(self)
|
|
1705
|
-
return
|
|
1768
|
+
return GetResourceAmount(self.handle)
|
|
1706
1769
|
end,
|
|
1707
1770
|
set = function(self, gold)
|
|
1708
|
-
|
|
1771
|
+
SetResourceAmount(self.handle, gold)
|
|
1709
1772
|
end
|
|
1710
1773
|
},
|
|
1711
1774
|
true
|
|
@@ -1721,14 +1784,18 @@ __TS__SetDescriptor(
|
|
|
1721
1784
|
local handle = self.handle
|
|
1722
1785
|
if isPaused and not IsUnitPaused(handle) then
|
|
1723
1786
|
self[101] = true
|
|
1724
|
-
|
|
1725
|
-
|
|
1787
|
+
if (self[103] or 0) <= 0 then
|
|
1788
|
+
for _ = self[102] or 0, -1 do
|
|
1789
|
+
BlzPauseUnitEx(handle, true)
|
|
1790
|
+
end
|
|
1726
1791
|
end
|
|
1727
1792
|
PauseUnit(handle, true)
|
|
1728
1793
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1729
1794
|
PauseUnit(handle, false)
|
|
1730
|
-
|
|
1731
|
-
|
|
1795
|
+
if (self[103] or 0) <= 0 then
|
|
1796
|
+
for _ = self[102] or 0, -1 do
|
|
1797
|
+
BlzPauseUnitEx(handle, false)
|
|
1798
|
+
end
|
|
1732
1799
|
end
|
|
1733
1800
|
self[101] = nil
|
|
1734
1801
|
end
|
|
@@ -1786,20 +1853,6 @@ __TS__SetDescriptor(
|
|
|
1786
1853
|
},
|
|
1787
1854
|
true
|
|
1788
1855
|
)
|
|
1789
|
-
__TS__SetDescriptor(
|
|
1790
|
-
Unit.prototype,
|
|
1791
|
-
"scale",
|
|
1792
|
-
{
|
|
1793
|
-
get = function(self)
|
|
1794
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1795
|
-
end,
|
|
1796
|
-
set = function(self, v)
|
|
1797
|
-
setUnitScale(self.handle, v, v, v)
|
|
1798
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1799
|
-
end
|
|
1800
|
-
},
|
|
1801
|
-
true
|
|
1802
|
-
)
|
|
1803
1856
|
__TS__SetDescriptor(
|
|
1804
1857
|
Unit.prototype,
|
|
1805
1858
|
"timeScale",
|
|
@@ -1833,6 +1886,19 @@ __TS__SetDescriptor(
|
|
|
1833
1886
|
end},
|
|
1834
1887
|
true
|
|
1835
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
|
+
)
|
|
1836
1902
|
__TS__SetDescriptor(
|
|
1837
1903
|
Unit.prototype,
|
|
1838
1904
|
"pathing",
|
|
@@ -1923,30 +1989,6 @@ __TS__SetDescriptor(
|
|
|
1923
1989
|
end},
|
|
1924
1990
|
true
|
|
1925
1991
|
)
|
|
1926
|
-
__TS__SetDescriptor(
|
|
1927
|
-
Unit.prototype,
|
|
1928
|
-
"onUnitInRange",
|
|
1929
|
-
{get = function(self)
|
|
1930
|
-
local handle = self.handle
|
|
1931
|
-
local onUnitInRange = setmetatable(
|
|
1932
|
-
{},
|
|
1933
|
-
{__index = function(self, value)
|
|
1934
|
-
local event = __TS__New(
|
|
1935
|
-
TriggerEvent,
|
|
1936
|
-
function(trigger)
|
|
1937
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
1938
|
-
end,
|
|
1939
|
-
function() return ____exports.Unit:of(handle) end
|
|
1940
|
-
)
|
|
1941
|
-
rawset(self, value, event)
|
|
1942
|
-
return event
|
|
1943
|
-
end}
|
|
1944
|
-
)
|
|
1945
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
1946
|
-
return onUnitInRange
|
|
1947
|
-
end},
|
|
1948
|
-
true
|
|
1949
|
-
)
|
|
1950
1992
|
__TS__SetDescriptor(
|
|
1951
1993
|
Unit.prototype,
|
|
1952
1994
|
"onManaEqual",
|
|
@@ -2014,6 +2056,14 @@ __TS__SetDescriptor(
|
|
|
2014
2056
|
end},
|
|
2015
2057
|
true
|
|
2016
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
|
+
)
|
|
2017
2067
|
__TS__SetDescriptor(
|
|
2018
2068
|
Unit.prototype,
|
|
2019
2069
|
"onSelect",
|
|
@@ -2074,6 +2124,11 @@ __TS__SetDescriptor(
|
|
|
2074
2124
|
end},
|
|
2075
2125
|
true
|
|
2076
2126
|
)
|
|
2127
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2128
|
+
____exports.UnitTriggerEvent,
|
|
2129
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2130
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2131
|
+
)
|
|
2077
2132
|
Unit.deathEvent = __TS__New(
|
|
2078
2133
|
____exports.UnitTriggerEvent,
|
|
2079
2134
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2149,25 +2204,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2149
2204
|
InitializingEvent,
|
|
2150
2205
|
function(event)
|
|
2151
2206
|
local function listener(unit, id)
|
|
2152
|
-
local
|
|
2207
|
+
local ____GetSpellTargetUnit_result_10
|
|
2153
2208
|
if GetSpellTargetUnit() then
|
|
2154
|
-
|
|
2209
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2155
2210
|
else
|
|
2156
|
-
local
|
|
2211
|
+
local ____GetSpellTargetItem_result_9
|
|
2157
2212
|
if GetSpellTargetItem() then
|
|
2158
|
-
|
|
2213
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2159
2214
|
else
|
|
2160
|
-
local
|
|
2215
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2161
2216
|
if GetSpellTargetDestructable() then
|
|
2162
|
-
|
|
2217
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2163
2218
|
else
|
|
2164
|
-
|
|
2219
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2165
2220
|
end
|
|
2166
|
-
|
|
2221
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2167
2222
|
end
|
|
2168
|
-
|
|
2223
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2169
2224
|
end
|
|
2170
|
-
local target =
|
|
2225
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2171
2226
|
if target then
|
|
2172
2227
|
invoke(event, unit, id, target)
|
|
2173
2228
|
end
|
|
@@ -2375,38 +2430,57 @@ Unit.onDamaging = (function()
|
|
|
2375
2430
|
if source and source.typeId == dummyUnitId then
|
|
2376
2431
|
source = nil
|
|
2377
2432
|
end
|
|
2378
|
-
local target = BlzGetEventDamageTarget()
|
|
2433
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2434
|
+
local metadata = damageMetadataByTarget[target]
|
|
2435
|
+
damageMetadataByTarget[target] = nil
|
|
2379
2436
|
local data = {
|
|
2380
2437
|
amount = GetEventDamage(),
|
|
2381
|
-
attackType = BlzGetEventAttackType(),
|
|
2438
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2382
2439
|
damageType = BlzGetEventDamageType(),
|
|
2383
2440
|
weaponType = BlzGetEventWeaponType(),
|
|
2384
|
-
|
|
2441
|
+
metadata = metadata,
|
|
2442
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2443
|
+
originalAmount = GetEventDamage(),
|
|
2444
|
+
originalMetadata = metadata,
|
|
2445
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2385
2446
|
}
|
|
2386
2447
|
if data.isAttack and source then
|
|
2387
|
-
|
|
2388
|
-
if weapon == -1 then
|
|
2389
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2390
|
-
weapon = 0
|
|
2391
|
-
end
|
|
2392
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2448
|
+
data.weapon = source:chooseWeapon(target)
|
|
2393
2449
|
end
|
|
2394
2450
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2395
2451
|
invoke(
|
|
2396
2452
|
event,
|
|
2397
2453
|
source,
|
|
2398
|
-
|
|
2454
|
+
target,
|
|
2399
2455
|
setmetatable(
|
|
2400
2456
|
{},
|
|
2401
2457
|
{
|
|
2402
2458
|
__index = data,
|
|
2403
2459
|
__newindex = function(self, key, value)
|
|
2404
|
-
damageSetters[key]
|
|
2460
|
+
local damageSetter = damageSetters[key]
|
|
2461
|
+
if damageSetter ~= nil then
|
|
2462
|
+
damageSetter(value)
|
|
2463
|
+
end
|
|
2405
2464
|
data[key] = value
|
|
2406
2465
|
end
|
|
2407
2466
|
}
|
|
2408
2467
|
)
|
|
2409
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
|
|
2410
2484
|
return
|
|
2411
2485
|
end
|
|
2412
2486
|
BlzSetEventDamage(0)
|
|
@@ -2414,7 +2488,7 @@ Unit.onDamaging = (function()
|
|
|
2414
2488
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2415
2489
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2416
2490
|
local sourceOwner = source.owner.handle
|
|
2417
|
-
local targetOwner =
|
|
2491
|
+
local targetOwner = target.owner.handle
|
|
2418
2492
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2419
2493
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2420
2494
|
Timer:run(function()
|
|
@@ -2430,23 +2504,19 @@ Unit.onDamaging = (function()
|
|
|
2430
2504
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2431
2505
|
local condition = ____value[1]
|
|
2432
2506
|
local action = ____value[2]
|
|
2433
|
-
if condition(
|
|
2434
|
-
source,
|
|
2435
|
-
____exports.Unit:of(target),
|
|
2436
|
-
data
|
|
2437
|
-
) then
|
|
2507
|
+
if condition(source, target, data) then
|
|
2438
2508
|
action(
|
|
2439
2509
|
source,
|
|
2440
|
-
|
|
2510
|
+
target,
|
|
2441
2511
|
setmetatable(
|
|
2442
2512
|
{fire = function()
|
|
2443
2513
|
UnitDamageTarget(
|
|
2444
2514
|
source.handle,
|
|
2445
|
-
target,
|
|
2515
|
+
target.handle,
|
|
2446
2516
|
data.amount,
|
|
2447
2517
|
true,
|
|
2448
2518
|
true,
|
|
2449
|
-
data.attackType,
|
|
2519
|
+
attackTypeToNative(data.attackType),
|
|
2450
2520
|
data.damageType,
|
|
2451
2521
|
data.weaponType
|
|
2452
2522
|
)
|
|
@@ -2473,30 +2543,54 @@ Unit.onDamage = __TS__New(
|
|
|
2473
2543
|
if source and source.typeId == dummyUnitId then
|
|
2474
2544
|
source = nil
|
|
2475
2545
|
end
|
|
2546
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2547
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2548
|
+
damagingEventByTarget[target] = nil
|
|
2476
2549
|
local data = {
|
|
2477
2550
|
amount = GetEventDamage(),
|
|
2478
|
-
attackType = BlzGetEventAttackType(),
|
|
2551
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2479
2552
|
damageType = BlzGetEventDamageType(),
|
|
2480
2553
|
weaponType = BlzGetEventWeaponType(),
|
|
2554
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2481
2555
|
isAttack = BlzGetEventIsAttack(),
|
|
2482
|
-
originalAmount = GetEventDamage(),
|
|
2556
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2557
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2483
2558
|
preventDeath = damageEventPreventDeath
|
|
2484
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
|
|
2485
2577
|
local evData = setmetatable(
|
|
2486
2578
|
{},
|
|
2487
2579
|
{
|
|
2488
2580
|
__index = data,
|
|
2489
2581
|
__newindex = function(self, key, value)
|
|
2490
|
-
damageSetters[key]
|
|
2582
|
+
local damageSetter = damageSetters[key]
|
|
2583
|
+
if damageSetter ~= nil then
|
|
2584
|
+
damageSetter(value)
|
|
2585
|
+
end
|
|
2491
2586
|
data[key] = value
|
|
2492
2587
|
end
|
|
2493
2588
|
}
|
|
2494
2589
|
)
|
|
2495
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2496
2590
|
invoke(event, source, target, evData)
|
|
2497
2591
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2498
2592
|
local bonusHealth = math.ceil(evData.amount)
|
|
2499
|
-
target[
|
|
2593
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2500
2594
|
BlzSetUnitMaxHP(
|
|
2501
2595
|
target.handle,
|
|
2502
2596
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2510,7 +2604,7 @@ Unit.onDamage = __TS__New(
|
|
|
2510
2604
|
evData[0],
|
|
2511
2605
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2512
2606
|
)
|
|
2513
|
-
target[
|
|
2607
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2514
2608
|
SetWidgetLife(
|
|
2515
2609
|
target.handle,
|
|
2516
2610
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2546,10 +2640,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2546
2640
|
____exports.UnitTriggerEvent,
|
|
2547
2641
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2548
2642
|
function()
|
|
2549
|
-
local
|
|
2550
|
-
local
|
|
2551
|
-
if getUnitTypeId(
|
|
2552
|
-
|
|
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
|
|
2553
2651
|
end
|
|
2554
2652
|
return IgnoreEvent
|
|
2555
2653
|
end
|
|
@@ -2569,7 +2667,22 @@ Unit.itemUsedEvent = __TS__New(
|
|
|
2569
2667
|
Unit.itemStackedEvent = __TS__New(
|
|
2570
2668
|
____exports.UnitTriggerEvent,
|
|
2571
2669
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2572
|
-
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}
|
|
2573
2686
|
)
|
|
2574
2687
|
__TS__ObjectDefineProperty(
|
|
2575
2688
|
Unit,
|
|
@@ -2641,6 +2754,10 @@ __TS__ObjectDefineProperty(
|
|
|
2641
2754
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2642
2755
|
return destroyEvent
|
|
2643
2756
|
end}
|
|
2757
|
+
)
|
|
2758
|
+
Unit.synchronize = synchronizer(
|
|
2759
|
+
function(unit) return unit.syncId end,
|
|
2760
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2644
2761
|
);
|
|
2645
2762
|
(function(self)
|
|
2646
2763
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2670,7 +2787,8 @@ __TS__ObjectDefineProperty(
|
|
|
2670
2787
|
return
|
|
2671
2788
|
end
|
|
2672
2789
|
end
|
|
2673
|
-
unit:
|
|
2790
|
+
unit:saveData()
|
|
2791
|
+
Timer:run(unit, "destroy")
|
|
2674
2792
|
end)
|
|
2675
2793
|
end
|
|
2676
2794
|
end)(Unit)
|