warscript 0.0.1-dev.e1acea3 → 0.0.1-dev.e3899e3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +2 -3
- package/core/types/effect.lua +95 -48
- 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 -24
- package/core/types/sound.lua +99 -24
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +22 -8
- package/engine/behaviour/ability/on-command-impact.lua +7 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +13 -1
- package/engine/behaviour/ability/remove-buffs.lua +29 -2
- 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 +17 -4
- package/engine/behaviour/ability.lua +87 -23
- package/engine/behaviour/unit/stun-immunity.d.ts +11 -5
- package/engine/behaviour/unit/stun-immunity.lua +53 -28
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +259 -6
- package/engine/buff.d.ts +70 -44
- package/engine/buff.lua +362 -232
- package/engine/internal/ability.d.ts +18 -2
- package/engine/internal/ability.lua +116 -11
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +20 -19
- package/engine/internal/item.lua +191 -74
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/bonus.d.ts +4 -0
- package/engine/internal/unit/bonus.lua +27 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.lua +6 -12
- 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/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 +45 -14
- package/engine/internal/unit.d.ts +45 -18
- package/engine/internal/unit.lua +391 -175
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -17
- package/engine/object-data/entry/ability-type.lua +93 -36
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +28 -2
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/item-type.d.ts +3 -1
- package/engine/object-data/entry/item-type.lua +15 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +25 -5
- package/engine/object-data/entry/unit-type.lua +258 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +12 -6
- package/engine/object-field/ability.lua +8 -4
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +23 -6
- package/engine/object-field.lua +337 -116
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +4 -2
- package/engine/standard/fields/ability.lua +4 -2
- package/engine/standard/fields/unit.d.ts +7 -0
- package/engine/standard/fields/unit.lua +13 -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 +4 -0
- package/engine/unit.lua +4 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +2 -3
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- 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-set.d.ts +2 -0
- package/utility/linked-set.lua +22 -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/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/internal/unit.lua
CHANGED
|
@@ -51,12 +51,23 @@ local ____arrays = require("utility.arrays")
|
|
|
51
51
|
local forEach = ____arrays.forEach
|
|
52
52
|
local ____math = require("math")
|
|
53
53
|
local min = ____math.min
|
|
54
|
+
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
55
|
+
local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
|
|
56
|
+
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
57
|
+
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
58
|
+
local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
|
|
59
|
+
local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
|
|
60
|
+
local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
|
|
61
|
+
local ____attributes = require("attributes")
|
|
62
|
+
local isAttribute = ____attributes.isAttribute
|
|
63
|
+
local ____ability = require("engine.internal.item.ability")
|
|
64
|
+
local doUnitAbilityAction = ____ability.doUnitAbilityAction
|
|
65
|
+
local ____synchronization = require("engine.synchronization")
|
|
66
|
+
local synchronizer = ____synchronization.synchronizer
|
|
54
67
|
local match = string.match
|
|
55
68
|
local ____tostring = _G.tostring
|
|
56
69
|
local setUnitAnimation = SetUnitAnimation
|
|
57
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
58
70
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
59
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
60
71
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
61
72
|
local getUnitRealField = BlzGetUnitRealField
|
|
62
73
|
local getHeroStr = GetHeroStr
|
|
@@ -75,9 +86,9 @@ local setUnitScale = SetUnitScale
|
|
|
75
86
|
local setUnitPosition = SetUnitPosition
|
|
76
87
|
local setUnitTimeScale = SetUnitTimeScale
|
|
77
88
|
local getHandleId = GetHandleId
|
|
89
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
78
90
|
local createUnit = CreateUnit
|
|
79
91
|
local killUnit = KillUnit
|
|
80
|
-
local setUnitExploded = SetUnitExploded
|
|
81
92
|
local removeUnit = RemoveUnit
|
|
82
93
|
local getUnitTypeId = GetUnitTypeId
|
|
83
94
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -93,8 +104,6 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
93
104
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
94
105
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
95
106
|
local isUnitInRange = IsUnitInRange
|
|
96
|
-
local setResourceAmount = SetResourceAmount
|
|
97
|
-
local getResourceAmount = GetResourceAmount
|
|
98
107
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
99
108
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
100
109
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
@@ -118,15 +127,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
118
127
|
local getIssuedOrderId = GetIssuedOrderId
|
|
119
128
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
120
129
|
local unitAlive = UnitAlive
|
|
121
|
-
local unitAddType = UnitAddType
|
|
122
|
-
local unitRemoveType = UnitRemoveType
|
|
123
|
-
local isUnitIllusion = IsUnitIllusion
|
|
124
|
-
local isUnitType = IsUnitType
|
|
125
130
|
local isUnitAlly = IsUnitAlly
|
|
126
131
|
local isUnitEnemy = IsUnitEnemy
|
|
127
132
|
local getOwningPlayer = GetOwningPlayer
|
|
128
|
-
local setUnitColor = SetUnitColor
|
|
129
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
130
133
|
____exports.UnitClassification = {}
|
|
131
134
|
local UnitClassification = ____exports.UnitClassification
|
|
132
135
|
do
|
|
@@ -136,6 +139,7 @@ do
|
|
|
136
139
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
137
140
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
138
141
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
142
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
139
143
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
140
144
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
141
145
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -343,6 +347,9 @@ local function dispatchAbility(event)
|
|
|
343
347
|
}
|
|
344
348
|
)
|
|
345
349
|
end
|
|
350
|
+
local function damagingEventPreventRetaliation(self)
|
|
351
|
+
self[0] = true
|
|
352
|
+
end
|
|
346
353
|
local function damageEventPreventDeath(self, callback, ...)
|
|
347
354
|
if self[0] ~= nil then
|
|
348
355
|
return
|
|
@@ -354,7 +361,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
354
361
|
rawset(self, 1 + i, (select(i, ...)))
|
|
355
362
|
end
|
|
356
363
|
end
|
|
357
|
-
local damageSetters = {
|
|
364
|
+
local damageSetters = {
|
|
365
|
+
amount = BlzSetEventDamage,
|
|
366
|
+
attackType = function(attackType)
|
|
367
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
368
|
+
end,
|
|
369
|
+
damageType = BlzSetEventDamageType,
|
|
370
|
+
weaponType = BlzSetEventWeaponType
|
|
371
|
+
}
|
|
358
372
|
local jlimitopByOperator = {
|
|
359
373
|
[0] = LESS_THAN_OR_EQUAL,
|
|
360
374
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -398,6 +412,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
398
412
|
self.unit = unit
|
|
399
413
|
self.index = index
|
|
400
414
|
end
|
|
415
|
+
__TS__SetDescriptor(
|
|
416
|
+
UnitWeapon.prototype,
|
|
417
|
+
"isEnabled",
|
|
418
|
+
{
|
|
419
|
+
get = function(self)
|
|
420
|
+
return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
|
|
421
|
+
end,
|
|
422
|
+
set = function(self, isEnabled)
|
|
423
|
+
BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
|
|
424
|
+
end
|
|
425
|
+
},
|
|
426
|
+
true
|
|
427
|
+
)
|
|
401
428
|
__TS__SetDescriptor(
|
|
402
429
|
UnitWeapon.prototype,
|
|
403
430
|
"cooldown",
|
|
@@ -432,6 +459,19 @@ __TS__SetDescriptor(
|
|
|
432
459
|
},
|
|
433
460
|
true
|
|
434
461
|
)
|
|
462
|
+
__TS__SetDescriptor(
|
|
463
|
+
UnitWeapon.prototype,
|
|
464
|
+
"allowedTargetCombatClassifications",
|
|
465
|
+
{
|
|
466
|
+
get = function(self)
|
|
467
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
468
|
+
end,
|
|
469
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
470
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
471
|
+
end
|
|
472
|
+
},
|
|
473
|
+
true
|
|
474
|
+
)
|
|
435
475
|
__TS__SetDescriptor(
|
|
436
476
|
UnitWeapon.prototype,
|
|
437
477
|
"damageBase",
|
|
@@ -619,15 +659,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
619
659
|
dummies[player] = dummy
|
|
620
660
|
end
|
|
621
661
|
local function delayHealthChecksCallback(unit)
|
|
622
|
-
local counter = (unit[
|
|
662
|
+
local counter = (unit[104] or 0) - 1
|
|
623
663
|
if counter ~= 0 then
|
|
624
|
-
unit[
|
|
664
|
+
unit[104] = counter
|
|
625
665
|
return
|
|
626
666
|
end
|
|
627
|
-
unit[
|
|
628
|
-
local healthBonus = unit[
|
|
667
|
+
unit[104] = nil
|
|
668
|
+
local healthBonus = unit[105]
|
|
629
669
|
if healthBonus ~= nil then
|
|
630
|
-
unit[
|
|
670
|
+
unit[105] = nil
|
|
631
671
|
local handle = unit.handle
|
|
632
672
|
BlzSetUnitMaxHP(
|
|
633
673
|
handle,
|
|
@@ -636,16 +676,26 @@ local function delayHealthChecksCallback(unit)
|
|
|
636
676
|
end
|
|
637
677
|
end
|
|
638
678
|
local nextSyncId = 1
|
|
639
|
-
local unitBySyncId = setmetatable({}, {__mode = "
|
|
679
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
680
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
681
|
+
local function addAbility(unit, abilityTypeId)
|
|
682
|
+
local ____unitAddAbility_result_0
|
|
683
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
684
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
685
|
+
else
|
|
686
|
+
____unitAddAbility_result_0 = nil
|
|
687
|
+
end
|
|
688
|
+
return ____unitAddAbility_result_0
|
|
689
|
+
end
|
|
640
690
|
____exports.Unit = __TS__Class()
|
|
641
691
|
local Unit = ____exports.Unit
|
|
642
692
|
Unit.name = "Unit"
|
|
643
693
|
__TS__ClassExtends(Unit, Handle)
|
|
644
694
|
function Unit.prototype.____constructor(self, handle)
|
|
645
695
|
Handle.prototype.____constructor(self, handle)
|
|
646
|
-
local
|
|
647
|
-
nextSyncId =
|
|
648
|
-
self.syncId =
|
|
696
|
+
local ____nextSyncId_1 = nextSyncId
|
|
697
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
698
|
+
self.syncId = ____nextSyncId_1
|
|
649
699
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
650
700
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
651
701
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -677,6 +727,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
677
727
|
end
|
|
678
728
|
function Unit.prototype.onDestroy(self)
|
|
679
729
|
local handle = self.handle
|
|
730
|
+
self[108] = getUnitX(handle)
|
|
731
|
+
self[109] = getUnitY(handle)
|
|
680
732
|
if not self._owner then
|
|
681
733
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
682
734
|
end
|
|
@@ -744,17 +796,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
744
796
|
end}
|
|
745
797
|
end
|
|
746
798
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
747
|
-
local
|
|
748
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
799
|
+
local ____combatClassification_2 = combatClassification
|
|
800
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
749
801
|
end
|
|
750
802
|
function Unit.prototype.addClassification(self, classification)
|
|
751
|
-
return
|
|
803
|
+
return UnitAddType(self.handle, classification)
|
|
752
804
|
end
|
|
753
805
|
function Unit.prototype.removeClassification(self, classification)
|
|
754
|
-
return
|
|
806
|
+
return UnitRemoveType(self.handle, classification)
|
|
755
807
|
end
|
|
756
808
|
function Unit.prototype.hasClassification(self, classification)
|
|
757
|
-
return
|
|
809
|
+
return IsUnitType(self.handle, classification)
|
|
758
810
|
end
|
|
759
811
|
function Unit.prototype.isVisibleTo(self, player)
|
|
760
812
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -763,13 +815,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
763
815
|
return isUnitInvisible(self.handle, player.handle)
|
|
764
816
|
end
|
|
765
817
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
766
|
-
local
|
|
818
|
+
local ____temp_3
|
|
767
819
|
if type(x) == "number" then
|
|
768
|
-
|
|
820
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
769
821
|
else
|
|
770
|
-
|
|
822
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
771
823
|
end
|
|
772
|
-
return
|
|
824
|
+
return ____temp_3
|
|
773
825
|
end
|
|
774
826
|
function Unit.prototype.isAllyOf(self, unit)
|
|
775
827
|
return isUnitAlly(
|
|
@@ -787,16 +839,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
787
839
|
if type(animation) == "number" then
|
|
788
840
|
setUnitAnimationByIndex(self.handle, animation)
|
|
789
841
|
elseif rarity then
|
|
790
|
-
|
|
842
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
791
843
|
else
|
|
792
844
|
setUnitAnimation(self.handle, animation)
|
|
793
845
|
end
|
|
794
846
|
end
|
|
847
|
+
function Unit.prototype.resetAnimation(self)
|
|
848
|
+
ResetUnitAnimation(self.handle)
|
|
849
|
+
end
|
|
795
850
|
function Unit.prototype.queueAnimation(self, animation)
|
|
796
|
-
|
|
851
|
+
QueueUnitAnimation(self.handle, animation)
|
|
852
|
+
end
|
|
853
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
854
|
+
local firstWeapon = self.firstWeapon
|
|
855
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
856
|
+
return firstWeapon
|
|
857
|
+
end
|
|
858
|
+
local secondWeapon = self.secondWeapon
|
|
859
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
860
|
+
return secondWeapon
|
|
861
|
+
end
|
|
862
|
+
return nil
|
|
797
863
|
end
|
|
798
864
|
function Unit.prototype.delayHealthChecks(self)
|
|
799
|
-
self[
|
|
865
|
+
self[104] = (self[104] or 0) + 1
|
|
800
866
|
Timer:run(delayHealthChecksCallback, self)
|
|
801
867
|
end
|
|
802
868
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -806,21 +872,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
806
872
|
return IsUnitSelected(self.handle, player.handle)
|
|
807
873
|
end
|
|
808
874
|
function Unit.prototype.explode(self)
|
|
809
|
-
|
|
875
|
+
SetUnitExploded(self.handle, true)
|
|
810
876
|
killUnit(self.handle)
|
|
811
877
|
end
|
|
812
878
|
function Unit.prototype.kill(self)
|
|
813
879
|
killUnit(self.handle)
|
|
814
880
|
end
|
|
815
881
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
816
|
-
local
|
|
817
|
-
local
|
|
818
|
-
local
|
|
819
|
-
if
|
|
820
|
-
|
|
882
|
+
local ____ReviveHero_6 = ReviveHero
|
|
883
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
884
|
+
local ____doEffect_4 = doEffect
|
|
885
|
+
if ____doEffect_4 == nil then
|
|
886
|
+
____doEffect_4 = false
|
|
821
887
|
end
|
|
822
|
-
__TS__SparseArrayPush(
|
|
823
|
-
|
|
888
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
889
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
824
890
|
end
|
|
825
891
|
function Unit.prototype.healTarget(self, target, amount)
|
|
826
892
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -863,17 +929,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
863
929
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
864
930
|
end
|
|
865
931
|
function Unit.prototype.addAbility(self, abilityId)
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
932
|
+
local ability = UnitAbility:of(
|
|
933
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
934
|
+
abilityId,
|
|
935
|
+
self
|
|
936
|
+
)
|
|
937
|
+
if ability ~= nil then
|
|
872
938
|
local abilities = self.abilities
|
|
873
939
|
abilities[#abilities + 1] = ability
|
|
874
|
-
return ability
|
|
875
940
|
end
|
|
876
|
-
return
|
|
941
|
+
return ability
|
|
877
942
|
end
|
|
878
943
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
879
944
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -887,31 +952,21 @@ end
|
|
|
887
952
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
888
953
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
889
954
|
end
|
|
890
|
-
function Unit.prototype.
|
|
891
|
-
local
|
|
892
|
-
|
|
893
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
894
|
-
return nil
|
|
895
|
-
end
|
|
896
|
-
return UnitAbility:of(
|
|
897
|
-
getUnitAbility(self.handle, abilityId),
|
|
898
|
-
abilityId,
|
|
899
|
-
self
|
|
900
|
-
)
|
|
955
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
956
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
957
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
901
958
|
end
|
|
902
|
-
function Unit.prototype.removeAbility(self,
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
end
|
|
959
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
960
|
+
local abilities = self.abilities
|
|
961
|
+
for i = 1, #abilities do
|
|
962
|
+
if abilities[i].typeId == abilityTypeId then
|
|
963
|
+
local ability = abilities[i]
|
|
964
|
+
tremove(abilities, i)
|
|
965
|
+
ability:destroy()
|
|
966
|
+
return true
|
|
911
967
|
end
|
|
912
|
-
return true
|
|
913
968
|
end
|
|
914
|
-
return
|
|
969
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
915
970
|
end
|
|
916
971
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
917
972
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -925,12 +980,34 @@ end
|
|
|
925
980
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
926
981
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
927
982
|
end
|
|
983
|
+
function Unit.prototype.interruptMovement(self)
|
|
984
|
+
local handle = self.handle
|
|
985
|
+
unitDisableAbility(
|
|
986
|
+
handle,
|
|
987
|
+
fourCC("Amov"),
|
|
988
|
+
true,
|
|
989
|
+
false
|
|
990
|
+
)
|
|
991
|
+
unitDisableAbility(
|
|
992
|
+
handle,
|
|
993
|
+
fourCC("Amov"),
|
|
994
|
+
false,
|
|
995
|
+
false
|
|
996
|
+
)
|
|
997
|
+
end
|
|
928
998
|
function Unit.prototype.interruptAttack(self)
|
|
929
999
|
unitInterruptAttack(self.handle)
|
|
930
1000
|
end
|
|
931
1001
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
932
|
-
|
|
933
|
-
unitDisableAbility(
|
|
1002
|
+
local handle = self.handle
|
|
1003
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
1004
|
+
Timer:run(
|
|
1005
|
+
unitDisableAbility,
|
|
1006
|
+
handle,
|
|
1007
|
+
abilityId,
|
|
1008
|
+
false,
|
|
1009
|
+
false
|
|
1010
|
+
)
|
|
934
1011
|
end
|
|
935
1012
|
function Unit.prototype.getDistanceTo(self, target)
|
|
936
1013
|
local handle = self.handle
|
|
@@ -991,18 +1068,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
991
1068
|
end
|
|
992
1069
|
function Unit.prototype.incrementStunCounter(self)
|
|
993
1070
|
local stunCounter = self[102] or 0
|
|
994
|
-
if not self[101] or stunCounter >= 0 then
|
|
1071
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
995
1072
|
BlzPauseUnitEx(self.handle, true)
|
|
996
1073
|
end
|
|
997
1074
|
self[102] = stunCounter + 1
|
|
998
1075
|
end
|
|
999
1076
|
function Unit.prototype.decrementStunCounter(self)
|
|
1000
1077
|
local stunCounter = self[102] or 0
|
|
1001
|
-
if not self[101] or stunCounter >= 1 then
|
|
1078
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1002
1079
|
BlzPauseUnitEx(self.handle, false)
|
|
1003
1080
|
end
|
|
1004
1081
|
self[102] = stunCounter - 1
|
|
1005
1082
|
end
|
|
1083
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1084
|
+
local forceStunCounter = self[103] or 0
|
|
1085
|
+
if forceStunCounter == 0 then
|
|
1086
|
+
local handle = self.handle
|
|
1087
|
+
if not self[101] then
|
|
1088
|
+
for _ = self[102] or 0, -1 do
|
|
1089
|
+
BlzPauseUnitEx(handle, true)
|
|
1090
|
+
end
|
|
1091
|
+
end
|
|
1092
|
+
BlzPauseUnitEx(handle, true)
|
|
1093
|
+
end
|
|
1094
|
+
self[103] = forceStunCounter + 1
|
|
1095
|
+
end
|
|
1096
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1097
|
+
local forceStunCounter = self[103] or 0
|
|
1098
|
+
if forceStunCounter == 1 then
|
|
1099
|
+
local handle = self.handle
|
|
1100
|
+
if not self[101] then
|
|
1101
|
+
for _ = self[102] or 0, -1 do
|
|
1102
|
+
BlzPauseUnitEx(handle, false)
|
|
1103
|
+
end
|
|
1104
|
+
end
|
|
1105
|
+
BlzPauseUnitEx(handle, false)
|
|
1106
|
+
end
|
|
1107
|
+
self[103] = forceStunCounter - 1
|
|
1108
|
+
end
|
|
1006
1109
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1007
1110
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
1008
1111
|
owner.handle,
|
|
@@ -1191,7 +1294,15 @@ __TS__SetDescriptor(
|
|
|
1191
1294
|
Unit.prototype,
|
|
1192
1295
|
"isIllusion",
|
|
1193
1296
|
{get = function(self)
|
|
1194
|
-
return
|
|
1297
|
+
return IsUnitIllusion(self.handle)
|
|
1298
|
+
end},
|
|
1299
|
+
true
|
|
1300
|
+
)
|
|
1301
|
+
__TS__SetDescriptor(
|
|
1302
|
+
Unit.prototype,
|
|
1303
|
+
"isStunned",
|
|
1304
|
+
{get = function(self)
|
|
1305
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1195
1306
|
end},
|
|
1196
1307
|
true
|
|
1197
1308
|
)
|
|
@@ -1268,6 +1379,19 @@ __TS__SetDescriptor(
|
|
|
1268
1379
|
},
|
|
1269
1380
|
true
|
|
1270
1381
|
)
|
|
1382
|
+
__TS__SetDescriptor(
|
|
1383
|
+
Unit.prototype,
|
|
1384
|
+
"primaryAttribute",
|
|
1385
|
+
{
|
|
1386
|
+
get = function(self)
|
|
1387
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1388
|
+
end,
|
|
1389
|
+
set = function(self, primaryAttribute)
|
|
1390
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1391
|
+
end
|
|
1392
|
+
},
|
|
1393
|
+
true
|
|
1394
|
+
)
|
|
1271
1395
|
__TS__SetDescriptor(
|
|
1272
1396
|
Unit.prototype,
|
|
1273
1397
|
"strengthBase",
|
|
@@ -1389,17 +1513,17 @@ __TS__SetDescriptor(
|
|
|
1389
1513
|
"isTeamGlowVisible",
|
|
1390
1514
|
{
|
|
1391
1515
|
get = function(self)
|
|
1392
|
-
return not self[
|
|
1516
|
+
return not self[107]
|
|
1393
1517
|
end,
|
|
1394
1518
|
set = function(self, isTeamGlowVisible)
|
|
1395
|
-
|
|
1396
|
-
local
|
|
1519
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1520
|
+
local ____temp_7
|
|
1397
1521
|
if not isTeamGlowVisible then
|
|
1398
|
-
|
|
1522
|
+
____temp_7 = true
|
|
1399
1523
|
else
|
|
1400
|
-
|
|
1524
|
+
____temp_7 = nil
|
|
1401
1525
|
end
|
|
1402
|
-
self[
|
|
1526
|
+
self[107] = ____temp_7
|
|
1403
1527
|
end
|
|
1404
1528
|
},
|
|
1405
1529
|
true
|
|
@@ -1408,9 +1532,9 @@ __TS__SetDescriptor(
|
|
|
1408
1532
|
Unit.prototype,
|
|
1409
1533
|
"color",
|
|
1410
1534
|
{set = function(self, color)
|
|
1411
|
-
|
|
1412
|
-
if self[
|
|
1413
|
-
|
|
1535
|
+
SetUnitColor(self.handle, color.handle)
|
|
1536
|
+
if self[107] then
|
|
1537
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1414
1538
|
end
|
|
1415
1539
|
end},
|
|
1416
1540
|
true
|
|
@@ -1433,14 +1557,14 @@ __TS__SetDescriptor(
|
|
|
1433
1557
|
"maxHealth",
|
|
1434
1558
|
{
|
|
1435
1559
|
get = function(self)
|
|
1436
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1560
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1437
1561
|
end,
|
|
1438
1562
|
set = function(self, maxHealth)
|
|
1439
|
-
if maxHealth < 1 and self[
|
|
1440
|
-
self[
|
|
1563
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1564
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1441
1565
|
maxHealth = 1
|
|
1442
1566
|
end
|
|
1443
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1567
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1444
1568
|
end
|
|
1445
1569
|
},
|
|
1446
1570
|
true
|
|
@@ -1482,10 +1606,10 @@ __TS__SetDescriptor(
|
|
|
1482
1606
|
"health",
|
|
1483
1607
|
{
|
|
1484
1608
|
get = function(self)
|
|
1485
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1609
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1486
1610
|
end,
|
|
1487
1611
|
set = function(self, health)
|
|
1488
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1612
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1489
1613
|
end
|
|
1490
1614
|
},
|
|
1491
1615
|
true
|
|
@@ -1561,25 +1685,12 @@ __TS__SetDescriptor(
|
|
|
1561
1685
|
},
|
|
1562
1686
|
true
|
|
1563
1687
|
)
|
|
1564
|
-
__TS__SetDescriptor(
|
|
1565
|
-
Unit.prototype,
|
|
1566
|
-
"flyHeight",
|
|
1567
|
-
{
|
|
1568
|
-
get = function(self)
|
|
1569
|
-
return getUnitFlyHeight(self.handle)
|
|
1570
|
-
end,
|
|
1571
|
-
set = function(self, v)
|
|
1572
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1573
|
-
end
|
|
1574
|
-
},
|
|
1575
|
-
true
|
|
1576
|
-
)
|
|
1577
1688
|
__TS__SetDescriptor(
|
|
1578
1689
|
Unit.prototype,
|
|
1579
1690
|
"x",
|
|
1580
1691
|
{
|
|
1581
1692
|
get = function(self)
|
|
1582
|
-
return getUnitX(self.handle)
|
|
1693
|
+
return self[108] or getUnitX(self.handle)
|
|
1583
1694
|
end,
|
|
1584
1695
|
set = function(self, v)
|
|
1585
1696
|
SetUnitX(self.handle, v)
|
|
@@ -1592,7 +1703,7 @@ __TS__SetDescriptor(
|
|
|
1592
1703
|
"y",
|
|
1593
1704
|
{
|
|
1594
1705
|
get = function(self)
|
|
1595
|
-
return getUnitY(self.handle)
|
|
1706
|
+
return self[109] or getUnitY(self.handle)
|
|
1596
1707
|
end,
|
|
1597
1708
|
set = function(self, v)
|
|
1598
1709
|
SetUnitY(self.handle, v)
|
|
@@ -1678,10 +1789,10 @@ __TS__SetDescriptor(
|
|
|
1678
1789
|
"gold",
|
|
1679
1790
|
{
|
|
1680
1791
|
get = function(self)
|
|
1681
|
-
return
|
|
1792
|
+
return GetResourceAmount(self.handle)
|
|
1682
1793
|
end,
|
|
1683
1794
|
set = function(self, gold)
|
|
1684
|
-
|
|
1795
|
+
SetResourceAmount(self.handle, gold)
|
|
1685
1796
|
end
|
|
1686
1797
|
},
|
|
1687
1798
|
true
|
|
@@ -1697,14 +1808,18 @@ __TS__SetDescriptor(
|
|
|
1697
1808
|
local handle = self.handle
|
|
1698
1809
|
if isPaused and not IsUnitPaused(handle) then
|
|
1699
1810
|
self[101] = true
|
|
1700
|
-
|
|
1701
|
-
|
|
1811
|
+
if (self[103] or 0) <= 0 then
|
|
1812
|
+
for _ = self[102] or 0, -1 do
|
|
1813
|
+
BlzPauseUnitEx(handle, true)
|
|
1814
|
+
end
|
|
1702
1815
|
end
|
|
1703
1816
|
PauseUnit(handle, true)
|
|
1704
1817
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1705
1818
|
PauseUnit(handle, false)
|
|
1706
|
-
|
|
1707
|
-
|
|
1819
|
+
if (self[103] or 0) <= 0 then
|
|
1820
|
+
for _ = self[102] or 0, -1 do
|
|
1821
|
+
BlzPauseUnitEx(handle, false)
|
|
1822
|
+
end
|
|
1708
1823
|
end
|
|
1709
1824
|
self[101] = nil
|
|
1710
1825
|
end
|
|
@@ -1762,20 +1877,6 @@ __TS__SetDescriptor(
|
|
|
1762
1877
|
},
|
|
1763
1878
|
true
|
|
1764
1879
|
)
|
|
1765
|
-
__TS__SetDescriptor(
|
|
1766
|
-
Unit.prototype,
|
|
1767
|
-
"scale",
|
|
1768
|
-
{
|
|
1769
|
-
get = function(self)
|
|
1770
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1771
|
-
end,
|
|
1772
|
-
set = function(self, v)
|
|
1773
|
-
setUnitScale(self.handle, v, v, v)
|
|
1774
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1775
|
-
end
|
|
1776
|
-
},
|
|
1777
|
-
true
|
|
1778
|
-
)
|
|
1779
1880
|
__TS__SetDescriptor(
|
|
1780
1881
|
Unit.prototype,
|
|
1781
1882
|
"timeScale",
|
|
@@ -1809,6 +1910,19 @@ __TS__SetDescriptor(
|
|
|
1809
1910
|
end},
|
|
1810
1911
|
true
|
|
1811
1912
|
)
|
|
1913
|
+
__TS__SetDescriptor(
|
|
1914
|
+
Unit.prototype,
|
|
1915
|
+
"movementType",
|
|
1916
|
+
{
|
|
1917
|
+
get = function(self)
|
|
1918
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1919
|
+
end,
|
|
1920
|
+
set = function(self, movementType)
|
|
1921
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1922
|
+
end
|
|
1923
|
+
},
|
|
1924
|
+
true
|
|
1925
|
+
)
|
|
1812
1926
|
__TS__SetDescriptor(
|
|
1813
1927
|
Unit.prototype,
|
|
1814
1928
|
"pathing",
|
|
@@ -1990,6 +2104,14 @@ __TS__SetDescriptor(
|
|
|
1990
2104
|
end},
|
|
1991
2105
|
true
|
|
1992
2106
|
)
|
|
2107
|
+
__TS__SetDescriptor(
|
|
2108
|
+
Unit.prototype,
|
|
2109
|
+
"targetAcquiredEvent",
|
|
2110
|
+
{get = function(self)
|
|
2111
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2112
|
+
end},
|
|
2113
|
+
true
|
|
2114
|
+
)
|
|
1993
2115
|
__TS__SetDescriptor(
|
|
1994
2116
|
Unit.prototype,
|
|
1995
2117
|
"onSelect",
|
|
@@ -2125,25 +2247,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2125
2247
|
InitializingEvent,
|
|
2126
2248
|
function(event)
|
|
2127
2249
|
local function listener(unit, id)
|
|
2128
|
-
local
|
|
2250
|
+
local ____GetSpellTargetUnit_result_10
|
|
2129
2251
|
if GetSpellTargetUnit() then
|
|
2130
|
-
|
|
2252
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2131
2253
|
else
|
|
2132
|
-
local
|
|
2254
|
+
local ____GetSpellTargetItem_result_9
|
|
2133
2255
|
if GetSpellTargetItem() then
|
|
2134
|
-
|
|
2256
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2135
2257
|
else
|
|
2136
|
-
local
|
|
2258
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2137
2259
|
if GetSpellTargetDestructable() then
|
|
2138
|
-
|
|
2260
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2139
2261
|
else
|
|
2140
|
-
|
|
2262
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2141
2263
|
end
|
|
2142
|
-
|
|
2264
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2143
2265
|
end
|
|
2144
|
-
|
|
2266
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2145
2267
|
end
|
|
2146
|
-
local target =
|
|
2268
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2147
2269
|
if target then
|
|
2148
2270
|
invoke(event, unit, id, target)
|
|
2149
2271
|
end
|
|
@@ -2315,10 +2437,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2315
2437
|
____exports.UnitTriggerEvent,
|
|
2316
2438
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2317
2439
|
function()
|
|
2318
|
-
local
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2440
|
+
local handle = getOrderedUnit()
|
|
2441
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2442
|
+
local unit = ____exports.Unit:of(handle)
|
|
2443
|
+
if unit.state == 1 then
|
|
2444
|
+
return unit, getIssuedOrderId()
|
|
2445
|
+
end
|
|
2322
2446
|
end
|
|
2323
2447
|
return IgnoreEvent
|
|
2324
2448
|
end
|
|
@@ -2349,38 +2473,57 @@ Unit.onDamaging = (function()
|
|
|
2349
2473
|
if source and source.typeId == dummyUnitId then
|
|
2350
2474
|
source = nil
|
|
2351
2475
|
end
|
|
2352
|
-
local target = BlzGetEventDamageTarget()
|
|
2476
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2477
|
+
local metadata = damageMetadataByTarget[target]
|
|
2478
|
+
damageMetadataByTarget[target] = nil
|
|
2353
2479
|
local data = {
|
|
2354
2480
|
amount = GetEventDamage(),
|
|
2355
|
-
attackType = BlzGetEventAttackType(),
|
|
2481
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2356
2482
|
damageType = BlzGetEventDamageType(),
|
|
2357
2483
|
weaponType = BlzGetEventWeaponType(),
|
|
2358
|
-
|
|
2484
|
+
metadata = metadata,
|
|
2485
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2486
|
+
originalAmount = GetEventDamage(),
|
|
2487
|
+
originalMetadata = metadata,
|
|
2488
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2359
2489
|
}
|
|
2360
2490
|
if data.isAttack and source then
|
|
2361
|
-
|
|
2362
|
-
if weapon == -1 then
|
|
2363
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2364
|
-
weapon = 0
|
|
2365
|
-
end
|
|
2366
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2491
|
+
data.weapon = source:chooseWeapon(target)
|
|
2367
2492
|
end
|
|
2368
2493
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2369
2494
|
invoke(
|
|
2370
2495
|
event,
|
|
2371
2496
|
source,
|
|
2372
|
-
|
|
2497
|
+
target,
|
|
2373
2498
|
setmetatable(
|
|
2374
2499
|
{},
|
|
2375
2500
|
{
|
|
2376
2501
|
__index = data,
|
|
2377
2502
|
__newindex = function(self, key, value)
|
|
2378
|
-
damageSetters[key]
|
|
2503
|
+
local damageSetter = damageSetters[key]
|
|
2504
|
+
if damageSetter ~= nil then
|
|
2505
|
+
damageSetter(value)
|
|
2506
|
+
end
|
|
2379
2507
|
data[key] = value
|
|
2380
2508
|
end
|
|
2381
2509
|
}
|
|
2382
2510
|
)
|
|
2383
2511
|
)
|
|
2512
|
+
if data[0] and source then
|
|
2513
|
+
local sourceOwner = source.owner.handle
|
|
2514
|
+
data[1] = sourceOwner
|
|
2515
|
+
local targetOwner = target.owner.handle
|
|
2516
|
+
data[2] = targetOwner
|
|
2517
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2518
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2519
|
+
data[3] = true
|
|
2520
|
+
end
|
|
2521
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2522
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2523
|
+
data[4] = true
|
|
2524
|
+
end
|
|
2525
|
+
end
|
|
2526
|
+
damagingEventByTarget[target] = data
|
|
2384
2527
|
return
|
|
2385
2528
|
end
|
|
2386
2529
|
BlzSetEventDamage(0)
|
|
@@ -2388,7 +2531,7 @@ Unit.onDamaging = (function()
|
|
|
2388
2531
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2389
2532
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2390
2533
|
local sourceOwner = source.owner.handle
|
|
2391
|
-
local targetOwner =
|
|
2534
|
+
local targetOwner = target.owner.handle
|
|
2392
2535
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2393
2536
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2394
2537
|
Timer:run(function()
|
|
@@ -2404,23 +2547,19 @@ Unit.onDamaging = (function()
|
|
|
2404
2547
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2405
2548
|
local condition = ____value[1]
|
|
2406
2549
|
local action = ____value[2]
|
|
2407
|
-
if condition(
|
|
2408
|
-
source,
|
|
2409
|
-
____exports.Unit:of(target),
|
|
2410
|
-
data
|
|
2411
|
-
) then
|
|
2550
|
+
if condition(source, target, data) then
|
|
2412
2551
|
action(
|
|
2413
2552
|
source,
|
|
2414
|
-
|
|
2553
|
+
target,
|
|
2415
2554
|
setmetatable(
|
|
2416
2555
|
{fire = function()
|
|
2417
2556
|
UnitDamageTarget(
|
|
2418
2557
|
source.handle,
|
|
2419
|
-
target,
|
|
2558
|
+
target.handle,
|
|
2420
2559
|
data.amount,
|
|
2421
2560
|
true,
|
|
2422
2561
|
true,
|
|
2423
|
-
data.attackType,
|
|
2562
|
+
attackTypeToNative(data.attackType),
|
|
2424
2563
|
data.damageType,
|
|
2425
2564
|
data.weaponType
|
|
2426
2565
|
)
|
|
@@ -2447,30 +2586,54 @@ Unit.onDamage = __TS__New(
|
|
|
2447
2586
|
if source and source.typeId == dummyUnitId then
|
|
2448
2587
|
source = nil
|
|
2449
2588
|
end
|
|
2589
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2590
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2591
|
+
damagingEventByTarget[target] = nil
|
|
2450
2592
|
local data = {
|
|
2451
2593
|
amount = GetEventDamage(),
|
|
2452
|
-
attackType = BlzGetEventAttackType(),
|
|
2594
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2453
2595
|
damageType = BlzGetEventDamageType(),
|
|
2454
2596
|
weaponType = BlzGetEventWeaponType(),
|
|
2597
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2455
2598
|
isAttack = BlzGetEventIsAttack(),
|
|
2456
|
-
originalAmount = GetEventDamage(),
|
|
2599
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2600
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2457
2601
|
preventDeath = damageEventPreventDeath
|
|
2458
2602
|
}
|
|
2603
|
+
if damagingEvent then
|
|
2604
|
+
for key, value in pairs(damagingEvent) do
|
|
2605
|
+
if isAttribute(key) then
|
|
2606
|
+
data[key] = value
|
|
2607
|
+
end
|
|
2608
|
+
end
|
|
2609
|
+
local sourceOwner = damagingEvent[1]
|
|
2610
|
+
if sourceOwner then
|
|
2611
|
+
local targetOwner = damagingEvent[2]
|
|
2612
|
+
if damagingEvent[3] then
|
|
2613
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2614
|
+
end
|
|
2615
|
+
if damagingEvent[4] then
|
|
2616
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2617
|
+
end
|
|
2618
|
+
end
|
|
2619
|
+
end
|
|
2459
2620
|
local evData = setmetatable(
|
|
2460
2621
|
{},
|
|
2461
2622
|
{
|
|
2462
2623
|
__index = data,
|
|
2463
2624
|
__newindex = function(self, key, value)
|
|
2464
|
-
damageSetters[key]
|
|
2625
|
+
local damageSetter = damageSetters[key]
|
|
2626
|
+
if damageSetter ~= nil then
|
|
2627
|
+
damageSetter(value)
|
|
2628
|
+
end
|
|
2465
2629
|
data[key] = value
|
|
2466
2630
|
end
|
|
2467
2631
|
}
|
|
2468
2632
|
)
|
|
2469
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2470
2633
|
invoke(event, source, target, evData)
|
|
2471
2634
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2472
2635
|
local bonusHealth = math.ceil(evData.amount)
|
|
2473
|
-
target[
|
|
2636
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2474
2637
|
BlzSetUnitMaxHP(
|
|
2475
2638
|
target.handle,
|
|
2476
2639
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2484,7 +2647,7 @@ Unit.onDamage = __TS__New(
|
|
|
2484
2647
|
evData[0],
|
|
2485
2648
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2486
2649
|
)
|
|
2487
|
-
target[
|
|
2650
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2488
2651
|
SetWidgetLife(
|
|
2489
2652
|
target.handle,
|
|
2490
2653
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2509,8 +2672,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2509
2672
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2510
2673
|
function()
|
|
2511
2674
|
local unit = getTriggerUnit()
|
|
2512
|
-
|
|
2513
|
-
|
|
2675
|
+
local item = getManipulatedItem()
|
|
2676
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2677
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2514
2678
|
end
|
|
2515
2679
|
return IgnoreEvent
|
|
2516
2680
|
end
|
|
@@ -2519,9 +2683,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2519
2683
|
____exports.UnitTriggerEvent,
|
|
2520
2684
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2521
2685
|
function()
|
|
2522
|
-
local
|
|
2523
|
-
|
|
2524
|
-
|
|
2686
|
+
local unitHandle = getTriggerUnit()
|
|
2687
|
+
local itemHandle = getManipulatedItem()
|
|
2688
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2689
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2690
|
+
local item = Item:of(itemHandle)
|
|
2691
|
+
if item.owner ~= unit then
|
|
2692
|
+
return unit, item
|
|
2693
|
+
end
|
|
2525
2694
|
end
|
|
2526
2695
|
return IgnoreEvent
|
|
2527
2696
|
end
|
|
@@ -2529,16 +2698,59 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2529
2698
|
Unit.itemUsedEvent = __TS__New(
|
|
2530
2699
|
____exports.UnitTriggerEvent,
|
|
2531
2700
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2532
|
-
function()
|
|
2701
|
+
function()
|
|
2702
|
+
local unit = getTriggerUnit()
|
|
2703
|
+
local item = getManipulatedItem()
|
|
2704
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2705
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2706
|
+
end
|
|
2707
|
+
return IgnoreEvent
|
|
2708
|
+
end
|
|
2533
2709
|
)
|
|
2534
2710
|
Unit.itemStackedEvent = __TS__New(
|
|
2535
2711
|
____exports.UnitTriggerEvent,
|
|
2536
2712
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2537
|
-
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(
|
|
2713
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2538
2714
|
)
|
|
2539
2715
|
__TS__ObjectDefineProperty(
|
|
2540
2716
|
Unit,
|
|
2541
|
-
"
|
|
2717
|
+
"itemChargesChangedEvent",
|
|
2718
|
+
{get = function(self)
|
|
2719
|
+
local event = __TS__New(Event)
|
|
2720
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2721
|
+
local unit = item.owner
|
|
2722
|
+
if unit ~= nil then
|
|
2723
|
+
invoke(event, unit, item)
|
|
2724
|
+
end
|
|
2725
|
+
end)
|
|
2726
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2727
|
+
return event
|
|
2728
|
+
end}
|
|
2729
|
+
)
|
|
2730
|
+
__TS__ObjectDefineProperty(
|
|
2731
|
+
Unit,
|
|
2732
|
+
"itemUseOrderEvent",
|
|
2733
|
+
{get = function(self)
|
|
2734
|
+
local event = __TS__New(Event)
|
|
2735
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2736
|
+
local slot = order - orderId("useslot0")
|
|
2737
|
+
local function listener(unit)
|
|
2738
|
+
local item = unit.items[slot + 1]
|
|
2739
|
+
if item ~= nil then
|
|
2740
|
+
invoke(event, unit, item)
|
|
2741
|
+
end
|
|
2742
|
+
end
|
|
2743
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2744
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2745
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2746
|
+
end
|
|
2747
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2748
|
+
return event
|
|
2749
|
+
end}
|
|
2750
|
+
)
|
|
2751
|
+
__TS__ObjectDefineProperty(
|
|
2752
|
+
Unit,
|
|
2753
|
+
"itemMoveOrderEvent",
|
|
2542
2754
|
{get = function(self)
|
|
2543
2755
|
local event = __TS__New(Event)
|
|
2544
2756
|
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
@@ -2556,7 +2768,7 @@ __TS__ObjectDefineProperty(
|
|
|
2556
2768
|
end
|
|
2557
2769
|
end)
|
|
2558
2770
|
end
|
|
2559
|
-
rawset(self, "
|
|
2771
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2560
2772
|
return event
|
|
2561
2773
|
end}
|
|
2562
2774
|
)
|
|
@@ -2585,6 +2797,10 @@ __TS__ObjectDefineProperty(
|
|
|
2585
2797
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2586
2798
|
return destroyEvent
|
|
2587
2799
|
end}
|
|
2800
|
+
)
|
|
2801
|
+
Unit.synchronize = synchronizer(
|
|
2802
|
+
function(unit) return unit.syncId end,
|
|
2803
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2588
2804
|
);
|
|
2589
2805
|
(function(self)
|
|
2590
2806
|
local leaveAbilityIds = postcompile(function()
|