warscript 0.0.1-dev.38157d0 → 0.0.1-dev.3860fce
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 +5 -0
- package/attributes.lua +8 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +4 -0
- package/core/types/frame.lua +81 -12
- package/core/types/player.lua +3 -1
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +79 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +8 -8
- package/core/types/timer.lua +25 -23
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/native.d.ts +844 -788
- package/engine/behavior.d.ts +4 -2
- package/engine/behavior.lua +59 -33
- 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 +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -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 +20 -4
- package/engine/behaviour/ability.lua +111 -47
- package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
- package/engine/behaviour/unit/stun-immunity.lua +43 -27
- package/engine/behaviour/unit.d.ts +32 -0
- package/engine/behaviour/unit.lua +185 -4
- package/engine/buff.d.ts +63 -45
- package/engine/buff.lua +300 -237
- package/engine/internal/ability.d.ts +23 -14
- package/engine/internal/ability.lua +128 -85
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +7 -4
- package/engine/internal/item.lua +141 -35
- 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/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +98 -14
- 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 +2 -0
- package/engine/internal/unit/bonus.lua +17 -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.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -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 +33 -7
- package/engine/internal/unit.d.ts +50 -25
- package/engine/internal/unit.lua +372 -198
- 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 +7 -2
- package/engine/local-client.lua +82 -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/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/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 +90 -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 +1 -1
- package/engine/object-data/entry/item-type.d.ts +15 -1
- package/engine/object-data/entry/item-type.lua +93 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +21 -5
- package/engine/object-data/entry/unit-type.lua +214 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +12 -6
- package/engine/object-field/ability.lua +9 -5
- package/engine/object-field/unit.d.ts +57 -3
- package/engine/object-field/unit.lua +207 -7
- package/engine/object-field.d.ts +17 -6
- package/engine/object-field.lua +190 -90
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- package/engine/standard/fields/unit.d.ts +4 -0
- package/engine/standard/fields/unit.lua +7 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +249 -10
- package/engine/unit.d.ts +4 -0
- package/engine/unit.lua +4 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/objutil/buff.lua +1 -2
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/utility/arrays.d.ts +9 -1
- package/utility/arrays.lua +37 -3
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +3 -0
- package/utility/lua-maps.d.ts +4 -0
- package/utility/lua-maps.lua +20 -0
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/internal/unit.lua
CHANGED
|
@@ -15,7 +15,6 @@ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
|
15
15
|
local Set = ____lualib.Set
|
|
16
16
|
local __TS__Spread = ____lualib.__TS__Spread
|
|
17
17
|
local ____exports = {}
|
|
18
|
-
local unitInventorySize, unitItemInSlot, unitDropItemSlot, unitRemoveItemFromSlot, unitAddItem, isItemPowerup, setItemBooleanField
|
|
19
18
|
local ____handle = require("core.types.handle")
|
|
20
19
|
local Handle = ____handle.Handle
|
|
21
20
|
local ____player = require("core.types.player")
|
|
@@ -52,12 +51,21 @@ local ____arrays = require("utility.arrays")
|
|
|
52
51
|
local forEach = ____arrays.forEach
|
|
53
52
|
local ____math = require("math")
|
|
54
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
|
|
55
65
|
local match = string.match
|
|
56
66
|
local ____tostring = _G.tostring
|
|
57
67
|
local setUnitAnimation = SetUnitAnimation
|
|
58
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
59
68
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
60
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
61
69
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
62
70
|
local getUnitRealField = BlzGetUnitRealField
|
|
63
71
|
local getHeroStr = GetHeroStr
|
|
@@ -76,9 +84,9 @@ local setUnitScale = SetUnitScale
|
|
|
76
84
|
local setUnitPosition = SetUnitPosition
|
|
77
85
|
local setUnitTimeScale = SetUnitTimeScale
|
|
78
86
|
local getHandleId = GetHandleId
|
|
87
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
79
88
|
local createUnit = CreateUnit
|
|
80
89
|
local killUnit = KillUnit
|
|
81
|
-
local setUnitExploded = SetUnitExploded
|
|
82
90
|
local removeUnit = RemoveUnit
|
|
83
91
|
local getUnitTypeId = GetUnitTypeId
|
|
84
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -94,8 +102,6 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
94
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
95
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
96
104
|
local isUnitInRange = IsUnitInRange
|
|
97
|
-
local setResourceAmount = SetResourceAmount
|
|
98
|
-
local getResourceAmount = GetResourceAmount
|
|
99
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
100
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
101
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
@@ -119,15 +125,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
119
125
|
local getIssuedOrderId = GetIssuedOrderId
|
|
120
126
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
121
127
|
local unitAlive = UnitAlive
|
|
122
|
-
local unitAddType = UnitAddType
|
|
123
|
-
local unitRemoveType = UnitRemoveType
|
|
124
|
-
local isUnitIllusion = IsUnitIllusion
|
|
125
|
-
local isUnitType = IsUnitType
|
|
126
128
|
local isUnitAlly = IsUnitAlly
|
|
127
129
|
local isUnitEnemy = IsUnitEnemy
|
|
128
130
|
local getOwningPlayer = GetOwningPlayer
|
|
129
|
-
local setUnitColor = SetUnitColor
|
|
130
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
131
131
|
____exports.UnitClassification = {}
|
|
132
132
|
local UnitClassification = ____exports.UnitClassification
|
|
133
133
|
do
|
|
@@ -137,6 +137,7 @@ do
|
|
|
137
137
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
138
138
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
139
139
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
140
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
140
141
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
141
142
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
142
143
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -344,6 +345,9 @@ local function dispatchAbility(event)
|
|
|
344
345
|
}
|
|
345
346
|
)
|
|
346
347
|
end
|
|
348
|
+
local function damagingEventPreventRetaliation(self)
|
|
349
|
+
self[0] = true
|
|
350
|
+
end
|
|
347
351
|
local function damageEventPreventDeath(self, callback, ...)
|
|
348
352
|
if self[0] ~= nil then
|
|
349
353
|
return
|
|
@@ -355,7 +359,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
355
359
|
rawset(self, 1 + i, (select(i, ...)))
|
|
356
360
|
end
|
|
357
361
|
end
|
|
358
|
-
local damageSetters = {
|
|
362
|
+
local damageSetters = {
|
|
363
|
+
amount = BlzSetEventDamage,
|
|
364
|
+
attackType = function(attackType)
|
|
365
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
366
|
+
end,
|
|
367
|
+
damageType = BlzSetEventDamageType,
|
|
368
|
+
weaponType = BlzSetEventWeaponType
|
|
369
|
+
}
|
|
359
370
|
local jlimitopByOperator = {
|
|
360
371
|
[0] = LESS_THAN_OR_EQUAL,
|
|
361
372
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -392,37 +403,6 @@ local getters = {
|
|
|
392
403
|
return BlzGetUnitArmor(unit)
|
|
393
404
|
end
|
|
394
405
|
}
|
|
395
|
-
____exports.UnitItems = __TS__Class()
|
|
396
|
-
local UnitItems = ____exports.UnitItems
|
|
397
|
-
UnitItems.name = "UnitItems"
|
|
398
|
-
function UnitItems.prototype.____constructor(self, handle)
|
|
399
|
-
self.handle = handle
|
|
400
|
-
end
|
|
401
|
-
function UnitItems.prototype.__newindex(self, slot, item)
|
|
402
|
-
local handle = self.handle
|
|
403
|
-
if slot < 0 or slot >= unitInventorySize(handle) then
|
|
404
|
-
return
|
|
405
|
-
end
|
|
406
|
-
unitRemoveItemFromSlot(handle, slot)
|
|
407
|
-
if item ~= nil then
|
|
408
|
-
local itemHandle = item.handle
|
|
409
|
-
local isPowerup = isItemPowerup(itemHandle)
|
|
410
|
-
if isPowerup then
|
|
411
|
-
setItemBooleanField(itemHandle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, false)
|
|
412
|
-
end
|
|
413
|
-
unitAddItem(handle, itemHandle)
|
|
414
|
-
unitDropItemSlot(handle, itemHandle, slot)
|
|
415
|
-
if isPowerup then
|
|
416
|
-
setItemBooleanField(itemHandle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
417
|
-
end
|
|
418
|
-
end
|
|
419
|
-
end
|
|
420
|
-
function UnitItems.prototype.__index(self, slot)
|
|
421
|
-
return Item:of(unitItemInSlot(self.handle, slot))
|
|
422
|
-
end
|
|
423
|
-
function UnitItems.prototype.__len(self)
|
|
424
|
-
return unitInventorySize(self.handle)
|
|
425
|
-
end
|
|
426
406
|
____exports.UnitWeapon = __TS__Class()
|
|
427
407
|
local UnitWeapon = ____exports.UnitWeapon
|
|
428
408
|
UnitWeapon.name = "UnitWeapon"
|
|
@@ -464,6 +444,19 @@ __TS__SetDescriptor(
|
|
|
464
444
|
},
|
|
465
445
|
true
|
|
466
446
|
)
|
|
447
|
+
__TS__SetDescriptor(
|
|
448
|
+
UnitWeapon.prototype,
|
|
449
|
+
"allowedTargetCombatClassifications",
|
|
450
|
+
{
|
|
451
|
+
get = function(self)
|
|
452
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
453
|
+
end,
|
|
454
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
455
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
456
|
+
end
|
|
457
|
+
},
|
|
458
|
+
true
|
|
459
|
+
)
|
|
467
460
|
__TS__SetDescriptor(
|
|
468
461
|
UnitWeapon.prototype,
|
|
469
462
|
"damageBase",
|
|
@@ -575,13 +568,8 @@ __TS__SetDescriptor(
|
|
|
575
568
|
},
|
|
576
569
|
true
|
|
577
570
|
)
|
|
578
|
-
unitInventorySize = UnitInventorySize
|
|
579
|
-
unitItemInSlot = UnitItemInSlot
|
|
580
|
-
unitDropItemSlot = UnitDropItemSlot
|
|
581
|
-
unitRemoveItemFromSlot = UnitRemoveItemFromSlot
|
|
582
|
-
unitAddItem = UnitAddItem
|
|
583
|
-
isItemPowerup = IsItemPowerup
|
|
584
|
-
setItemBooleanField = BlzSetItemBooleanField
|
|
571
|
+
local unitInventorySize = UnitInventorySize
|
|
572
|
+
local unitItemInSlot = UnitItemInSlot
|
|
585
573
|
local getItemAbility = BlzGetItemAbility
|
|
586
574
|
local getUnitAbility = BlzGetUnitAbility
|
|
587
575
|
local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
|
|
@@ -599,17 +587,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
599
587
|
____exports.Unit:of(unit)
|
|
600
588
|
)
|
|
601
589
|
end
|
|
602
|
-
if not unitAddAbility(unit, abilityId) then
|
|
603
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
604
|
-
return UnitAbility:of(
|
|
605
|
-
ability,
|
|
606
|
-
abilityId,
|
|
607
|
-
____exports.Unit:of(unit)
|
|
608
|
-
)
|
|
609
|
-
end
|
|
610
|
-
else
|
|
611
|
-
unitRemoveAbility(unit, abilityId)
|
|
612
|
-
end
|
|
613
590
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
614
591
|
local item = unitItemInSlot(unit, i)
|
|
615
592
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -667,15 +644,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
667
644
|
dummies[player] = dummy
|
|
668
645
|
end
|
|
669
646
|
local function delayHealthChecksCallback(unit)
|
|
670
|
-
local counter = (unit[
|
|
647
|
+
local counter = (unit[103] or 0) - 1
|
|
671
648
|
if counter ~= 0 then
|
|
672
|
-
unit[
|
|
649
|
+
unit[103] = counter
|
|
673
650
|
return
|
|
674
651
|
end
|
|
675
|
-
unit[
|
|
676
|
-
local healthBonus = unit[
|
|
652
|
+
unit[103] = nil
|
|
653
|
+
local healthBonus = unit[104]
|
|
677
654
|
if healthBonus ~= nil then
|
|
678
|
-
unit[
|
|
655
|
+
unit[104] = nil
|
|
679
656
|
local handle = unit.handle
|
|
680
657
|
BlzSetUnitMaxHP(
|
|
681
658
|
handle,
|
|
@@ -683,12 +660,27 @@ local function delayHealthChecksCallback(unit)
|
|
|
683
660
|
)
|
|
684
661
|
end
|
|
685
662
|
end
|
|
663
|
+
local nextSyncId = 1
|
|
664
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
665
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
666
|
+
local function addAbility(unit, abilityTypeId)
|
|
667
|
+
local ____unitAddAbility_result_0
|
|
668
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
669
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
670
|
+
else
|
|
671
|
+
____unitAddAbility_result_0 = nil
|
|
672
|
+
end
|
|
673
|
+
return ____unitAddAbility_result_0
|
|
674
|
+
end
|
|
686
675
|
____exports.Unit = __TS__Class()
|
|
687
676
|
local Unit = ____exports.Unit
|
|
688
677
|
Unit.name = "Unit"
|
|
689
678
|
__TS__ClassExtends(Unit, Handle)
|
|
690
679
|
function Unit.prototype.____constructor(self, handle)
|
|
691
680
|
Handle.prototype.____constructor(self, handle)
|
|
681
|
+
local ____nextSyncId_1 = nextSyncId
|
|
682
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
683
|
+
self.syncId = ____nextSyncId_1
|
|
692
684
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
693
685
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
694
686
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -701,6 +693,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
701
693
|
fourCC("Amrf")
|
|
702
694
|
))
|
|
703
695
|
end
|
|
696
|
+
unitBySyncId[self.syncId] = self
|
|
704
697
|
local ____ = self.abilities
|
|
705
698
|
end
|
|
706
699
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -719,6 +712,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
719
712
|
end
|
|
720
713
|
function Unit.prototype.onDestroy(self)
|
|
721
714
|
local handle = self.handle
|
|
715
|
+
self[107] = getUnitX(handle)
|
|
716
|
+
self[108] = getUnitY(handle)
|
|
722
717
|
if not self._owner then
|
|
723
718
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
724
719
|
end
|
|
@@ -786,17 +781,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
786
781
|
end}
|
|
787
782
|
end
|
|
788
783
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
789
|
-
local
|
|
790
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
784
|
+
local ____combatClassification_2 = combatClassification
|
|
785
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
791
786
|
end
|
|
792
787
|
function Unit.prototype.addClassification(self, classification)
|
|
793
|
-
return
|
|
788
|
+
return UnitAddType(self.handle, classification)
|
|
794
789
|
end
|
|
795
790
|
function Unit.prototype.removeClassification(self, classification)
|
|
796
|
-
return
|
|
791
|
+
return UnitRemoveType(self.handle, classification)
|
|
797
792
|
end
|
|
798
793
|
function Unit.prototype.hasClassification(self, classification)
|
|
799
|
-
return
|
|
794
|
+
return IsUnitType(self.handle, classification)
|
|
800
795
|
end
|
|
801
796
|
function Unit.prototype.isVisibleTo(self, player)
|
|
802
797
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -805,13 +800,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
805
800
|
return isUnitInvisible(self.handle, player.handle)
|
|
806
801
|
end
|
|
807
802
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
808
|
-
local
|
|
803
|
+
local ____temp_3
|
|
809
804
|
if type(x) == "number" then
|
|
810
|
-
|
|
805
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
811
806
|
else
|
|
812
|
-
|
|
807
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
813
808
|
end
|
|
814
|
-
return
|
|
809
|
+
return ____temp_3
|
|
815
810
|
end
|
|
816
811
|
function Unit.prototype.isAllyOf(self, unit)
|
|
817
812
|
return isUnitAlly(
|
|
@@ -829,16 +824,28 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
829
824
|
if type(animation) == "number" then
|
|
830
825
|
setUnitAnimationByIndex(self.handle, animation)
|
|
831
826
|
elseif rarity then
|
|
832
|
-
|
|
827
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
833
828
|
else
|
|
834
829
|
setUnitAnimation(self.handle, animation)
|
|
835
830
|
end
|
|
836
831
|
end
|
|
832
|
+
function Unit.prototype.resetAnimation(self)
|
|
833
|
+
ResetUnitAnimation(self.handle)
|
|
834
|
+
end
|
|
837
835
|
function Unit.prototype.queueAnimation(self, animation)
|
|
838
|
-
|
|
836
|
+
QueueUnitAnimation(self.handle, animation)
|
|
837
|
+
end
|
|
838
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
839
|
+
if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
|
|
840
|
+
return self.firstWeapon
|
|
841
|
+
end
|
|
842
|
+
if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
|
|
843
|
+
return self.secondWeapon
|
|
844
|
+
end
|
|
845
|
+
return nil
|
|
839
846
|
end
|
|
840
847
|
function Unit.prototype.delayHealthChecks(self)
|
|
841
|
-
self[
|
|
848
|
+
self[103] = (self[103] or 0) + 1
|
|
842
849
|
Timer:run(delayHealthChecksCallback, self)
|
|
843
850
|
end
|
|
844
851
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -848,21 +855,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
848
855
|
return IsUnitSelected(self.handle, player.handle)
|
|
849
856
|
end
|
|
850
857
|
function Unit.prototype.explode(self)
|
|
851
|
-
|
|
858
|
+
SetUnitExploded(self.handle, true)
|
|
852
859
|
killUnit(self.handle)
|
|
853
860
|
end
|
|
854
861
|
function Unit.prototype.kill(self)
|
|
855
862
|
killUnit(self.handle)
|
|
856
863
|
end
|
|
857
864
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
858
|
-
local
|
|
859
|
-
local
|
|
860
|
-
local
|
|
861
|
-
if
|
|
862
|
-
|
|
865
|
+
local ____ReviveHero_6 = ReviveHero
|
|
866
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
867
|
+
local ____doEffect_4 = doEffect
|
|
868
|
+
if ____doEffect_4 == nil then
|
|
869
|
+
____doEffect_4 = false
|
|
863
870
|
end
|
|
864
|
-
__TS__SparseArrayPush(
|
|
865
|
-
|
|
871
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
872
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
866
873
|
end
|
|
867
874
|
function Unit.prototype.healTarget(self, target, amount)
|
|
868
875
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -905,17 +912,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
905
912
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
906
913
|
end
|
|
907
914
|
function Unit.prototype.addAbility(self, abilityId)
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
915
|
+
local ability = UnitAbility:of(
|
|
916
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
917
|
+
abilityId,
|
|
918
|
+
self
|
|
919
|
+
)
|
|
920
|
+
if ability ~= nil then
|
|
914
921
|
local abilities = self.abilities
|
|
915
922
|
abilities[#abilities + 1] = ability
|
|
916
|
-
return ability
|
|
917
923
|
end
|
|
918
|
-
return
|
|
924
|
+
return ability
|
|
919
925
|
end
|
|
920
926
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
921
927
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -930,28 +936,17 @@ function Unit.prototype.hasAbility(self, abilityId)
|
|
|
930
936
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
931
937
|
end
|
|
932
938
|
function Unit.prototype.getAbilityById(self, abilityId)
|
|
933
|
-
local
|
|
934
|
-
|
|
935
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
936
|
-
return nil
|
|
937
|
-
end
|
|
938
|
-
return UnitAbility:of(
|
|
939
|
-
getUnitAbility(self.handle, abilityId),
|
|
940
|
-
abilityId,
|
|
941
|
-
self
|
|
942
|
-
)
|
|
939
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
940
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
943
941
|
end
|
|
944
942
|
function Unit.prototype.removeAbility(self, abilityId)
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
return true
|
|
952
|
-
end
|
|
943
|
+
local abilities = self.abilities
|
|
944
|
+
for i = 1, #abilities do
|
|
945
|
+
if abilities[i].typeId == abilityId then
|
|
946
|
+
abilities[i]:destroy()
|
|
947
|
+
tremove(abilities, i)
|
|
948
|
+
return true
|
|
953
949
|
end
|
|
954
|
-
return true
|
|
955
950
|
end
|
|
956
951
|
return false
|
|
957
952
|
end
|
|
@@ -967,12 +962,34 @@ end
|
|
|
967
962
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
968
963
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
969
964
|
end
|
|
965
|
+
function Unit.prototype.interruptMovement(self)
|
|
966
|
+
local handle = self.handle
|
|
967
|
+
unitDisableAbility(
|
|
968
|
+
handle,
|
|
969
|
+
fourCC("Amov"),
|
|
970
|
+
true,
|
|
971
|
+
false
|
|
972
|
+
)
|
|
973
|
+
unitDisableAbility(
|
|
974
|
+
handle,
|
|
975
|
+
fourCC("Amov"),
|
|
976
|
+
false,
|
|
977
|
+
false
|
|
978
|
+
)
|
|
979
|
+
end
|
|
970
980
|
function Unit.prototype.interruptAttack(self)
|
|
971
981
|
unitInterruptAttack(self.handle)
|
|
972
982
|
end
|
|
973
983
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
974
|
-
|
|
975
|
-
unitDisableAbility(
|
|
984
|
+
local handle = self.handle
|
|
985
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
986
|
+
Timer:run(
|
|
987
|
+
unitDisableAbility,
|
|
988
|
+
handle,
|
|
989
|
+
abilityId,
|
|
990
|
+
false,
|
|
991
|
+
false
|
|
992
|
+
)
|
|
976
993
|
end
|
|
977
994
|
function Unit.prototype.getDistanceTo(self, target)
|
|
978
995
|
local handle = self.handle
|
|
@@ -1032,18 +1049,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
1032
1049
|
self:decrementStunCounter()
|
|
1033
1050
|
end
|
|
1034
1051
|
function Unit.prototype.incrementStunCounter(self)
|
|
1035
|
-
local stunCounter = self[
|
|
1036
|
-
if not self[
|
|
1052
|
+
local stunCounter = self[102] or 0
|
|
1053
|
+
if not self[101] or stunCounter >= 0 then
|
|
1037
1054
|
BlzPauseUnitEx(self.handle, true)
|
|
1038
1055
|
end
|
|
1039
|
-
self[
|
|
1056
|
+
self[102] = stunCounter + 1
|
|
1040
1057
|
end
|
|
1041
1058
|
function Unit.prototype.decrementStunCounter(self)
|
|
1042
|
-
local stunCounter = self[
|
|
1043
|
-
if not self[
|
|
1059
|
+
local stunCounter = self[102] or 0
|
|
1060
|
+
if not self[101] or stunCounter >= 1 then
|
|
1044
1061
|
BlzPauseUnitEx(self.handle, false)
|
|
1045
1062
|
end
|
|
1046
|
-
self[
|
|
1063
|
+
self[102] = stunCounter - 1
|
|
1047
1064
|
end
|
|
1048
1065
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1049
1066
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1145,8 +1162,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1145
1162
|
)
|
|
1146
1163
|
return targetCollection
|
|
1147
1164
|
end
|
|
1148
|
-
function Unit.getSelectionOf(self, player)
|
|
1149
|
-
|
|
1165
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1166
|
+
if target == nil then
|
|
1167
|
+
target = {}
|
|
1168
|
+
end
|
|
1169
|
+
targetCollection = target
|
|
1150
1170
|
targetCollectionNextIndex = 1
|
|
1151
1171
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1152
1172
|
return targetCollection
|
|
@@ -1168,6 +1188,9 @@ end
|
|
|
1168
1188
|
function Unit.prototype.__tostring(self)
|
|
1169
1189
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1170
1190
|
end
|
|
1191
|
+
function Unit.getBySyncId(self, syncId)
|
|
1192
|
+
return unitBySyncId[syncId]
|
|
1193
|
+
end
|
|
1171
1194
|
__TS__SetDescriptor(
|
|
1172
1195
|
Unit.prototype,
|
|
1173
1196
|
"_deltas",
|
|
@@ -1227,7 +1250,15 @@ __TS__SetDescriptor(
|
|
|
1227
1250
|
Unit.prototype,
|
|
1228
1251
|
"isIllusion",
|
|
1229
1252
|
{get = function(self)
|
|
1230
|
-
return
|
|
1253
|
+
return IsUnitIllusion(self.handle)
|
|
1254
|
+
end},
|
|
1255
|
+
true
|
|
1256
|
+
)
|
|
1257
|
+
__TS__SetDescriptor(
|
|
1258
|
+
Unit.prototype,
|
|
1259
|
+
"isStunned",
|
|
1260
|
+
{get = function(self)
|
|
1261
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1231
1262
|
end},
|
|
1232
1263
|
true
|
|
1233
1264
|
)
|
|
@@ -1304,6 +1335,19 @@ __TS__SetDescriptor(
|
|
|
1304
1335
|
},
|
|
1305
1336
|
true
|
|
1306
1337
|
)
|
|
1338
|
+
__TS__SetDescriptor(
|
|
1339
|
+
Unit.prototype,
|
|
1340
|
+
"primaryAttribute",
|
|
1341
|
+
{
|
|
1342
|
+
get = function(self)
|
|
1343
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1344
|
+
end,
|
|
1345
|
+
set = function(self, primaryAttribute)
|
|
1346
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1347
|
+
end
|
|
1348
|
+
},
|
|
1349
|
+
true
|
|
1350
|
+
)
|
|
1307
1351
|
__TS__SetDescriptor(
|
|
1308
1352
|
Unit.prototype,
|
|
1309
1353
|
"strengthBase",
|
|
@@ -1425,17 +1469,17 @@ __TS__SetDescriptor(
|
|
|
1425
1469
|
"isTeamGlowVisible",
|
|
1426
1470
|
{
|
|
1427
1471
|
get = function(self)
|
|
1428
|
-
return not self[
|
|
1472
|
+
return not self[106]
|
|
1429
1473
|
end,
|
|
1430
1474
|
set = function(self, isTeamGlowVisible)
|
|
1431
|
-
|
|
1432
|
-
local
|
|
1475
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1476
|
+
local ____temp_7
|
|
1433
1477
|
if not isTeamGlowVisible then
|
|
1434
|
-
|
|
1478
|
+
____temp_7 = true
|
|
1435
1479
|
else
|
|
1436
|
-
|
|
1480
|
+
____temp_7 = nil
|
|
1437
1481
|
end
|
|
1438
|
-
self[
|
|
1482
|
+
self[106] = ____temp_7
|
|
1439
1483
|
end
|
|
1440
1484
|
},
|
|
1441
1485
|
true
|
|
@@ -1444,9 +1488,9 @@ __TS__SetDescriptor(
|
|
|
1444
1488
|
Unit.prototype,
|
|
1445
1489
|
"color",
|
|
1446
1490
|
{set = function(self, color)
|
|
1447
|
-
|
|
1448
|
-
if self[
|
|
1449
|
-
|
|
1491
|
+
SetUnitColor(self.handle, color.handle)
|
|
1492
|
+
if self[106] then
|
|
1493
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1450
1494
|
end
|
|
1451
1495
|
end},
|
|
1452
1496
|
true
|
|
@@ -1469,14 +1513,14 @@ __TS__SetDescriptor(
|
|
|
1469
1513
|
"maxHealth",
|
|
1470
1514
|
{
|
|
1471
1515
|
get = function(self)
|
|
1472
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1516
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1473
1517
|
end,
|
|
1474
1518
|
set = function(self, maxHealth)
|
|
1475
|
-
if maxHealth < 1 and self[
|
|
1476
|
-
self[
|
|
1519
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1520
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1477
1521
|
maxHealth = 1
|
|
1478
1522
|
end
|
|
1479
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1523
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1480
1524
|
end
|
|
1481
1525
|
},
|
|
1482
1526
|
true
|
|
@@ -1518,10 +1562,10 @@ __TS__SetDescriptor(
|
|
|
1518
1562
|
"health",
|
|
1519
1563
|
{
|
|
1520
1564
|
get = function(self)
|
|
1521
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1565
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1522
1566
|
end,
|
|
1523
1567
|
set = function(self, health)
|
|
1524
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1568
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1525
1569
|
end
|
|
1526
1570
|
},
|
|
1527
1571
|
true
|
|
@@ -1615,7 +1659,7 @@ __TS__SetDescriptor(
|
|
|
1615
1659
|
"x",
|
|
1616
1660
|
{
|
|
1617
1661
|
get = function(self)
|
|
1618
|
-
return getUnitX(self.handle)
|
|
1662
|
+
return self[107] or getUnitX(self.handle)
|
|
1619
1663
|
end,
|
|
1620
1664
|
set = function(self, v)
|
|
1621
1665
|
SetUnitX(self.handle, v)
|
|
@@ -1628,7 +1672,7 @@ __TS__SetDescriptor(
|
|
|
1628
1672
|
"y",
|
|
1629
1673
|
{
|
|
1630
1674
|
get = function(self)
|
|
1631
|
-
return getUnitY(self.handle)
|
|
1675
|
+
return self[108] or getUnitY(self.handle)
|
|
1632
1676
|
end,
|
|
1633
1677
|
set = function(self, v)
|
|
1634
1678
|
SetUnitY(self.handle, v)
|
|
@@ -1714,10 +1758,10 @@ __TS__SetDescriptor(
|
|
|
1714
1758
|
"gold",
|
|
1715
1759
|
{
|
|
1716
1760
|
get = function(self)
|
|
1717
|
-
return
|
|
1761
|
+
return GetResourceAmount(self.handle)
|
|
1718
1762
|
end,
|
|
1719
1763
|
set = function(self, gold)
|
|
1720
|
-
|
|
1764
|
+
SetResourceAmount(self.handle, gold)
|
|
1721
1765
|
end
|
|
1722
1766
|
},
|
|
1723
1767
|
true
|
|
@@ -1732,17 +1776,17 @@ __TS__SetDescriptor(
|
|
|
1732
1776
|
set = function(self, isPaused)
|
|
1733
1777
|
local handle = self.handle
|
|
1734
1778
|
if isPaused and not IsUnitPaused(handle) then
|
|
1735
|
-
self[
|
|
1736
|
-
for _ = self[
|
|
1779
|
+
self[101] = true
|
|
1780
|
+
for _ = self[102] or 0, -1 do
|
|
1737
1781
|
BlzPauseUnitEx(handle, true)
|
|
1738
1782
|
end
|
|
1739
1783
|
PauseUnit(handle, true)
|
|
1740
1784
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1741
1785
|
PauseUnit(handle, false)
|
|
1742
|
-
for _ = self[
|
|
1786
|
+
for _ = self[102] or 0, -1 do
|
|
1743
1787
|
BlzPauseUnitEx(handle, false)
|
|
1744
1788
|
end
|
|
1745
|
-
self[
|
|
1789
|
+
self[101] = nil
|
|
1746
1790
|
end
|
|
1747
1791
|
end
|
|
1748
1792
|
},
|
|
@@ -1847,19 +1891,22 @@ __TS__SetDescriptor(
|
|
|
1847
1891
|
)
|
|
1848
1892
|
__TS__SetDescriptor(
|
|
1849
1893
|
Unit.prototype,
|
|
1850
|
-
"
|
|
1851
|
-
{
|
|
1852
|
-
|
|
1853
|
-
|
|
1894
|
+
"movementType",
|
|
1895
|
+
{
|
|
1896
|
+
get = function(self)
|
|
1897
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1898
|
+
end,
|
|
1899
|
+
set = function(self, movementType)
|
|
1900
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1901
|
+
end
|
|
1902
|
+
},
|
|
1854
1903
|
true
|
|
1855
1904
|
)
|
|
1856
1905
|
__TS__SetDescriptor(
|
|
1857
1906
|
Unit.prototype,
|
|
1858
|
-
"
|
|
1859
|
-
{
|
|
1860
|
-
|
|
1861
|
-
rawset(self, "items", items)
|
|
1862
|
-
return items
|
|
1907
|
+
"pathing",
|
|
1908
|
+
{set = function(self, v)
|
|
1909
|
+
SetUnitPathing(self.handle, v)
|
|
1863
1910
|
end},
|
|
1864
1911
|
true
|
|
1865
1912
|
)
|
|
@@ -2036,6 +2083,14 @@ __TS__SetDescriptor(
|
|
|
2036
2083
|
end},
|
|
2037
2084
|
true
|
|
2038
2085
|
)
|
|
2086
|
+
__TS__SetDescriptor(
|
|
2087
|
+
Unit.prototype,
|
|
2088
|
+
"targetAcquiredEvent",
|
|
2089
|
+
{get = function(self)
|
|
2090
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2091
|
+
end},
|
|
2092
|
+
true
|
|
2093
|
+
)
|
|
2039
2094
|
__TS__SetDescriptor(
|
|
2040
2095
|
Unit.prototype,
|
|
2041
2096
|
"onSelect",
|
|
@@ -2171,25 +2226,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2171
2226
|
InitializingEvent,
|
|
2172
2227
|
function(event)
|
|
2173
2228
|
local function listener(unit, id)
|
|
2174
|
-
local
|
|
2229
|
+
local ____GetSpellTargetUnit_result_10
|
|
2175
2230
|
if GetSpellTargetUnit() then
|
|
2176
|
-
|
|
2231
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2177
2232
|
else
|
|
2178
|
-
local
|
|
2233
|
+
local ____GetSpellTargetItem_result_9
|
|
2179
2234
|
if GetSpellTargetItem() then
|
|
2180
|
-
|
|
2235
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2181
2236
|
else
|
|
2182
|
-
local
|
|
2237
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2183
2238
|
if GetSpellTargetDestructable() then
|
|
2184
|
-
|
|
2239
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2185
2240
|
else
|
|
2186
|
-
|
|
2241
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2187
2242
|
end
|
|
2188
|
-
|
|
2243
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2189
2244
|
end
|
|
2190
|
-
|
|
2245
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2191
2246
|
end
|
|
2192
|
-
local target =
|
|
2247
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2193
2248
|
if target then
|
|
2194
2249
|
invoke(event, unit, id, target)
|
|
2195
2250
|
end
|
|
@@ -2361,10 +2416,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2361
2416
|
____exports.UnitTriggerEvent,
|
|
2362
2417
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2363
2418
|
function()
|
|
2364
|
-
local
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
|
|
2419
|
+
local handle = getOrderedUnit()
|
|
2420
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2421
|
+
local unit = ____exports.Unit:of(handle)
|
|
2422
|
+
if unit.state == 1 then
|
|
2423
|
+
return unit, getIssuedOrderId()
|
|
2424
|
+
end
|
|
2368
2425
|
end
|
|
2369
2426
|
return IgnoreEvent
|
|
2370
2427
|
end
|
|
@@ -2395,13 +2452,19 @@ Unit.onDamaging = (function()
|
|
|
2395
2452
|
if source and source.typeId == dummyUnitId then
|
|
2396
2453
|
source = nil
|
|
2397
2454
|
end
|
|
2398
|
-
local target = BlzGetEventDamageTarget()
|
|
2455
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2456
|
+
local metadata = damageMetadataByTarget[target]
|
|
2457
|
+
damageMetadataByTarget[target] = nil
|
|
2399
2458
|
local data = {
|
|
2400
2459
|
amount = GetEventDamage(),
|
|
2401
|
-
attackType = BlzGetEventAttackType(),
|
|
2460
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2402
2461
|
damageType = BlzGetEventDamageType(),
|
|
2403
2462
|
weaponType = BlzGetEventWeaponType(),
|
|
2404
|
-
|
|
2463
|
+
metadata = metadata,
|
|
2464
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2465
|
+
originalAmount = GetEventDamage(),
|
|
2466
|
+
originalMetadata = metadata,
|
|
2467
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2405
2468
|
}
|
|
2406
2469
|
if data.isAttack and source then
|
|
2407
2470
|
local weapon = BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 1) and (BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 0) and -1 or 1) or 0
|
|
@@ -2415,18 +2478,36 @@ Unit.onDamaging = (function()
|
|
|
2415
2478
|
invoke(
|
|
2416
2479
|
event,
|
|
2417
2480
|
source,
|
|
2418
|
-
|
|
2481
|
+
target,
|
|
2419
2482
|
setmetatable(
|
|
2420
2483
|
{},
|
|
2421
2484
|
{
|
|
2422
2485
|
__index = data,
|
|
2423
2486
|
__newindex = function(self, key, value)
|
|
2424
|
-
damageSetters[key]
|
|
2487
|
+
local damageSetter = damageSetters[key]
|
|
2488
|
+
if damageSetter ~= nil then
|
|
2489
|
+
damageSetter(value)
|
|
2490
|
+
end
|
|
2425
2491
|
data[key] = value
|
|
2426
2492
|
end
|
|
2427
2493
|
}
|
|
2428
2494
|
)
|
|
2429
2495
|
)
|
|
2496
|
+
if data[0] and source then
|
|
2497
|
+
local sourceOwner = source.owner.handle
|
|
2498
|
+
data[1] = sourceOwner
|
|
2499
|
+
local targetOwner = target.owner.handle
|
|
2500
|
+
data[2] = targetOwner
|
|
2501
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2502
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2503
|
+
data[3] = true
|
|
2504
|
+
end
|
|
2505
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2506
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2507
|
+
data[4] = true
|
|
2508
|
+
end
|
|
2509
|
+
end
|
|
2510
|
+
damagingEventByTarget[target] = data
|
|
2430
2511
|
return
|
|
2431
2512
|
end
|
|
2432
2513
|
BlzSetEventDamage(0)
|
|
@@ -2434,7 +2515,7 @@ Unit.onDamaging = (function()
|
|
|
2434
2515
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2435
2516
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2436
2517
|
local sourceOwner = source.owner.handle
|
|
2437
|
-
local targetOwner =
|
|
2518
|
+
local targetOwner = target.owner.handle
|
|
2438
2519
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2439
2520
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2440
2521
|
Timer:run(function()
|
|
@@ -2450,23 +2531,19 @@ Unit.onDamaging = (function()
|
|
|
2450
2531
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2451
2532
|
local condition = ____value[1]
|
|
2452
2533
|
local action = ____value[2]
|
|
2453
|
-
if condition(
|
|
2454
|
-
source,
|
|
2455
|
-
____exports.Unit:of(target),
|
|
2456
|
-
data
|
|
2457
|
-
) then
|
|
2534
|
+
if condition(source, target, data) then
|
|
2458
2535
|
action(
|
|
2459
2536
|
source,
|
|
2460
|
-
|
|
2537
|
+
target,
|
|
2461
2538
|
setmetatable(
|
|
2462
2539
|
{fire = function()
|
|
2463
2540
|
UnitDamageTarget(
|
|
2464
2541
|
source.handle,
|
|
2465
|
-
target,
|
|
2542
|
+
target.handle,
|
|
2466
2543
|
data.amount,
|
|
2467
2544
|
true,
|
|
2468
2545
|
true,
|
|
2469
|
-
data.attackType,
|
|
2546
|
+
attackTypeToNative(data.attackType),
|
|
2470
2547
|
data.damageType,
|
|
2471
2548
|
data.weaponType
|
|
2472
2549
|
)
|
|
@@ -2493,30 +2570,54 @@ Unit.onDamage = __TS__New(
|
|
|
2493
2570
|
if source and source.typeId == dummyUnitId then
|
|
2494
2571
|
source = nil
|
|
2495
2572
|
end
|
|
2573
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2574
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2575
|
+
damagingEventByTarget[target] = nil
|
|
2496
2576
|
local data = {
|
|
2497
2577
|
amount = GetEventDamage(),
|
|
2498
|
-
attackType = BlzGetEventAttackType(),
|
|
2578
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2499
2579
|
damageType = BlzGetEventDamageType(),
|
|
2500
2580
|
weaponType = BlzGetEventWeaponType(),
|
|
2581
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2501
2582
|
isAttack = BlzGetEventIsAttack(),
|
|
2502
|
-
originalAmount = GetEventDamage(),
|
|
2583
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2584
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2503
2585
|
preventDeath = damageEventPreventDeath
|
|
2504
2586
|
}
|
|
2587
|
+
if damagingEvent then
|
|
2588
|
+
for key, value in pairs(damagingEvent) do
|
|
2589
|
+
if isAttribute(key) then
|
|
2590
|
+
data[key] = value
|
|
2591
|
+
end
|
|
2592
|
+
end
|
|
2593
|
+
local sourceOwner = damagingEvent[1]
|
|
2594
|
+
if sourceOwner then
|
|
2595
|
+
local targetOwner = damagingEvent[2]
|
|
2596
|
+
if damagingEvent[3] then
|
|
2597
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2598
|
+
end
|
|
2599
|
+
if damagingEvent[4] then
|
|
2600
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2601
|
+
end
|
|
2602
|
+
end
|
|
2603
|
+
end
|
|
2505
2604
|
local evData = setmetatable(
|
|
2506
2605
|
{},
|
|
2507
2606
|
{
|
|
2508
2607
|
__index = data,
|
|
2509
2608
|
__newindex = function(self, key, value)
|
|
2510
|
-
damageSetters[key]
|
|
2609
|
+
local damageSetter = damageSetters[key]
|
|
2610
|
+
if damageSetter ~= nil then
|
|
2611
|
+
damageSetter(value)
|
|
2612
|
+
end
|
|
2511
2613
|
data[key] = value
|
|
2512
2614
|
end
|
|
2513
2615
|
}
|
|
2514
2616
|
)
|
|
2515
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2516
2617
|
invoke(event, source, target, evData)
|
|
2517
2618
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2518
2619
|
local bonusHealth = math.ceil(evData.amount)
|
|
2519
|
-
target[
|
|
2620
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2520
2621
|
BlzSetUnitMaxHP(
|
|
2521
2622
|
target.handle,
|
|
2522
2623
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2530,7 +2631,7 @@ Unit.onDamage = __TS__New(
|
|
|
2530
2631
|
evData[0],
|
|
2531
2632
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2532
2633
|
)
|
|
2533
|
-
target[
|
|
2634
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2534
2635
|
SetWidgetLife(
|
|
2535
2636
|
target.handle,
|
|
2536
2637
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2555,8 +2656,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2555
2656
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2556
2657
|
function()
|
|
2557
2658
|
local unit = getTriggerUnit()
|
|
2558
|
-
|
|
2559
|
-
|
|
2659
|
+
local item = getManipulatedItem()
|
|
2660
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2661
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2560
2662
|
end
|
|
2561
2663
|
return IgnoreEvent
|
|
2562
2664
|
end
|
|
@@ -2565,9 +2667,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2565
2667
|
____exports.UnitTriggerEvent,
|
|
2566
2668
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2567
2669
|
function()
|
|
2568
|
-
local
|
|
2569
|
-
|
|
2570
|
-
|
|
2670
|
+
local unitHandle = getTriggerUnit()
|
|
2671
|
+
local itemHandle = getManipulatedItem()
|
|
2672
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2673
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2674
|
+
local item = Item:of(itemHandle)
|
|
2675
|
+
if item.owner ~= unit then
|
|
2676
|
+
return unit, item
|
|
2677
|
+
end
|
|
2571
2678
|
end
|
|
2572
2679
|
return IgnoreEvent
|
|
2573
2680
|
end
|
|
@@ -2575,12 +2682,79 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2575
2682
|
Unit.itemUsedEvent = __TS__New(
|
|
2576
2683
|
____exports.UnitTriggerEvent,
|
|
2577
2684
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2578
|
-
function()
|
|
2685
|
+
function()
|
|
2686
|
+
local unit = getTriggerUnit()
|
|
2687
|
+
local item = getManipulatedItem()
|
|
2688
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2689
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2690
|
+
end
|
|
2691
|
+
return IgnoreEvent
|
|
2692
|
+
end
|
|
2579
2693
|
)
|
|
2580
2694
|
Unit.itemStackedEvent = __TS__New(
|
|
2581
2695
|
____exports.UnitTriggerEvent,
|
|
2582
2696
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2583
|
-
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(
|
|
2697
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2698
|
+
)
|
|
2699
|
+
__TS__ObjectDefineProperty(
|
|
2700
|
+
Unit,
|
|
2701
|
+
"itemChargesChangedEvent",
|
|
2702
|
+
{get = function(self)
|
|
2703
|
+
local event = __TS__New(Event)
|
|
2704
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2705
|
+
local unit = item.owner
|
|
2706
|
+
if unit ~= nil then
|
|
2707
|
+
invoke(event, unit, item)
|
|
2708
|
+
end
|
|
2709
|
+
end)
|
|
2710
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2711
|
+
return event
|
|
2712
|
+
end}
|
|
2713
|
+
)
|
|
2714
|
+
__TS__ObjectDefineProperty(
|
|
2715
|
+
Unit,
|
|
2716
|
+
"itemUseOrderEvent",
|
|
2717
|
+
{get = function(self)
|
|
2718
|
+
local event = __TS__New(Event)
|
|
2719
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2720
|
+
local slot = order - orderId("useslot0")
|
|
2721
|
+
local function listener(unit)
|
|
2722
|
+
local item = unit.items[slot + 1]
|
|
2723
|
+
if item ~= nil then
|
|
2724
|
+
invoke(event, unit, item)
|
|
2725
|
+
end
|
|
2726
|
+
end
|
|
2727
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2728
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2729
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2730
|
+
end
|
|
2731
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2732
|
+
return event
|
|
2733
|
+
end}
|
|
2734
|
+
)
|
|
2735
|
+
__TS__ObjectDefineProperty(
|
|
2736
|
+
Unit,
|
|
2737
|
+
"itemMoveOrderEvent",
|
|
2738
|
+
{get = function(self)
|
|
2739
|
+
local event = __TS__New(Event)
|
|
2740
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2741
|
+
local slotTo = order - orderId("moveslot0")
|
|
2742
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2743
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2744
|
+
if slotFrom ~= nil then
|
|
2745
|
+
invoke(
|
|
2746
|
+
event,
|
|
2747
|
+
unit,
|
|
2748
|
+
item,
|
|
2749
|
+
slotFrom,
|
|
2750
|
+
slotTo
|
|
2751
|
+
)
|
|
2752
|
+
end
|
|
2753
|
+
end)
|
|
2754
|
+
end
|
|
2755
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2756
|
+
return event
|
|
2757
|
+
end}
|
|
2584
2758
|
)
|
|
2585
2759
|
__TS__ObjectDefineProperty(
|
|
2586
2760
|
Unit,
|