warscript 0.0.1-dev.a3723da → 0.0.1-dev.a3deff8
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/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- 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 +6 -0
- package/core/types/frame.lua +115 -22
- package/core/types/player.d.ts +15 -0
- package/core/types/player.lua +56 -14
- 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 +9 -0
- package/core/types/tileCell.lua +92 -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 +18 -1
- package/decl/native.d.ts +846 -790
- package/engine/behavior.d.ts +7 -2
- package/engine/behavior.lua +112 -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 +8 -5
- 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 +12 -6
- package/engine/behaviour/ability/damage.lua +37 -51
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- 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 +25 -0
- package/engine/behaviour/ability/remove-buffs.lua +49 -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 +7 -3
- package/engine/behaviour/unit/stun-immunity.lua +52 -27
- package/engine/behaviour/unit.d.ts +39 -0
- package/engine/behaviour/unit.lua +210 -4
- package/engine/buff.d.ts +110 -42
- package/engine/buff.lua +499 -208
- package/engine/internal/ability.d.ts +23 -14
- package/engine/internal/ability.lua +129 -85
- 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/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +128 -17
- 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 +6 -2
- package/engine/internal/unit/bonus.lua +23 -1
- 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 +36 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit+ability.lua +12 -3
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +63 -13
- package/engine/internal/unit.d.ts +63 -18
- package/engine/internal/unit.lua +437 -163
- 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 +9 -2
- package/engine/local-client.lua +112 -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 +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 +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 +28 -5
- package/engine/object-field/ability.lua +59 -5
- package/engine/object-field/unit.d.ts +57 -3
- package/engine/object-field/unit.lua +207 -7
- package/engine/object-field.d.ts +23 -6
- package/engine/object-field.lua +303 -114
- 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 +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/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/index.d.ts +1 -0
- package/index.lua +1 -0
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/buff.lua +3 -4
- 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/patch-lualib.lua +1 -1
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/utility/arrays.d.ts +10 -1
- package/utility/arrays.lua +45 -3
- 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/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +13 -2
- package/utility/linked-set.lua +27 -3
- 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 +4 -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",
|
|
@@ -562,17 +602,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
602
|
____exports.Unit:of(unit)
|
|
563
603
|
)
|
|
564
604
|
end
|
|
565
|
-
if not unitAddAbility(unit, abilityId) then
|
|
566
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
567
|
-
return UnitAbility:of(
|
|
568
|
-
ability,
|
|
569
|
-
abilityId,
|
|
570
|
-
____exports.Unit:of(unit)
|
|
571
|
-
)
|
|
572
|
-
end
|
|
573
|
-
else
|
|
574
|
-
unitRemoveAbility(unit, abilityId)
|
|
575
|
-
end
|
|
576
605
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
606
|
local item = unitItemInSlot(unit, i)
|
|
578
607
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -630,15 +659,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
630
659
|
dummies[player] = dummy
|
|
631
660
|
end
|
|
632
661
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
662
|
+
local counter = (unit[104] or 0) - 1
|
|
634
663
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
664
|
+
unit[104] = counter
|
|
636
665
|
return
|
|
637
666
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
667
|
+
unit[104] = nil
|
|
668
|
+
local healthBonus = unit[105]
|
|
640
669
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
670
|
+
unit[105] = nil
|
|
642
671
|
local handle = unit.handle
|
|
643
672
|
BlzSetUnitMaxHP(
|
|
644
673
|
handle,
|
|
@@ -646,12 +675,27 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
675
|
)
|
|
647
676
|
end
|
|
648
677
|
end
|
|
678
|
+
local nextSyncId = 1
|
|
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
|
|
649
690
|
____exports.Unit = __TS__Class()
|
|
650
691
|
local Unit = ____exports.Unit
|
|
651
692
|
Unit.name = "Unit"
|
|
652
693
|
__TS__ClassExtends(Unit, Handle)
|
|
653
694
|
function Unit.prototype.____constructor(self, handle)
|
|
654
695
|
Handle.prototype.____constructor(self, handle)
|
|
696
|
+
local ____nextSyncId_1 = nextSyncId
|
|
697
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
698
|
+
self.syncId = ____nextSyncId_1
|
|
655
699
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
700
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
657
701
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -664,6 +708,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
664
708
|
fourCC("Amrf")
|
|
665
709
|
))
|
|
666
710
|
end
|
|
711
|
+
unitBySyncId[self.syncId] = self
|
|
667
712
|
local ____ = self.abilities
|
|
668
713
|
end
|
|
669
714
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -682,6 +727,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
682
727
|
end
|
|
683
728
|
function Unit.prototype.onDestroy(self)
|
|
684
729
|
local handle = self.handle
|
|
730
|
+
self[108] = getUnitX(handle)
|
|
731
|
+
self[109] = getUnitY(handle)
|
|
685
732
|
if not self._owner then
|
|
686
733
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
687
734
|
end
|
|
@@ -749,17 +796,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
796
|
end}
|
|
750
797
|
end
|
|
751
798
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
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
|
|
754
801
|
end
|
|
755
802
|
function Unit.prototype.addClassification(self, classification)
|
|
756
|
-
return
|
|
803
|
+
return UnitAddType(self.handle, classification)
|
|
757
804
|
end
|
|
758
805
|
function Unit.prototype.removeClassification(self, classification)
|
|
759
|
-
return
|
|
806
|
+
return UnitRemoveType(self.handle, classification)
|
|
760
807
|
end
|
|
761
808
|
function Unit.prototype.hasClassification(self, classification)
|
|
762
|
-
return
|
|
809
|
+
return IsUnitType(self.handle, classification)
|
|
763
810
|
end
|
|
764
811
|
function Unit.prototype.isVisibleTo(self, player)
|
|
765
812
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -768,13 +815,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
815
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
816
|
end
|
|
770
817
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
818
|
+
local ____temp_3
|
|
772
819
|
if type(x) == "number" then
|
|
773
|
-
|
|
820
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
821
|
else
|
|
775
|
-
|
|
822
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
776
823
|
end
|
|
777
|
-
return
|
|
824
|
+
return ____temp_3
|
|
778
825
|
end
|
|
779
826
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
827
|
return isUnitAlly(
|
|
@@ -792,16 +839,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
792
839
|
if type(animation) == "number" then
|
|
793
840
|
setUnitAnimationByIndex(self.handle, animation)
|
|
794
841
|
elseif rarity then
|
|
795
|
-
|
|
842
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
796
843
|
else
|
|
797
844
|
setUnitAnimation(self.handle, animation)
|
|
798
845
|
end
|
|
799
846
|
end
|
|
847
|
+
function Unit.prototype.resetAnimation(self)
|
|
848
|
+
ResetUnitAnimation(self.handle)
|
|
849
|
+
end
|
|
800
850
|
function Unit.prototype.queueAnimation(self, animation)
|
|
801
|
-
|
|
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
|
|
802
863
|
end
|
|
803
864
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
865
|
+
self[104] = (self[104] or 0) + 1
|
|
805
866
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
867
|
end
|
|
807
868
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -811,21 +872,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
811
872
|
return IsUnitSelected(self.handle, player.handle)
|
|
812
873
|
end
|
|
813
874
|
function Unit.prototype.explode(self)
|
|
814
|
-
|
|
875
|
+
SetUnitExploded(self.handle, true)
|
|
815
876
|
killUnit(self.handle)
|
|
816
877
|
end
|
|
817
878
|
function Unit.prototype.kill(self)
|
|
818
879
|
killUnit(self.handle)
|
|
819
880
|
end
|
|
820
881
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
821
|
-
local
|
|
822
|
-
local
|
|
823
|
-
local
|
|
824
|
-
if
|
|
825
|
-
|
|
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
|
|
826
887
|
end
|
|
827
|
-
__TS__SparseArrayPush(
|
|
828
|
-
|
|
888
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
889
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
829
890
|
end
|
|
830
891
|
function Unit.prototype.healTarget(self, target, amount)
|
|
831
892
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -865,20 +926,19 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
865
926
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
866
927
|
end
|
|
867
928
|
function Unit.prototype.itemInSlot(self, slot)
|
|
868
|
-
return Item:of(
|
|
929
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
869
930
|
end
|
|
870
931
|
function Unit.prototype.addAbility(self, abilityId)
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
932
|
+
local ability = UnitAbility:of(
|
|
933
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
934
|
+
abilityId,
|
|
935
|
+
self
|
|
936
|
+
)
|
|
937
|
+
if ability ~= nil then
|
|
877
938
|
local abilities = self.abilities
|
|
878
939
|
abilities[#abilities + 1] = ability
|
|
879
|
-
return ability
|
|
880
940
|
end
|
|
881
|
-
return
|
|
941
|
+
return ability
|
|
882
942
|
end
|
|
883
943
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
884
944
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -892,31 +952,21 @@ end
|
|
|
892
952
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
893
953
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
894
954
|
end
|
|
895
|
-
function Unit.prototype.
|
|
896
|
-
local
|
|
897
|
-
|
|
898
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
899
|
-
return nil
|
|
900
|
-
end
|
|
901
|
-
return UnitAbility:of(
|
|
902
|
-
getUnitAbility(self.handle, abilityId),
|
|
903
|
-
abilityId,
|
|
904
|
-
self
|
|
905
|
-
)
|
|
955
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
956
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
957
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
906
958
|
end
|
|
907
|
-
function Unit.prototype.removeAbility(self,
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
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
|
|
916
967
|
end
|
|
917
|
-
return true
|
|
918
968
|
end
|
|
919
|
-
return
|
|
969
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
920
970
|
end
|
|
921
971
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
922
972
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -930,12 +980,34 @@ end
|
|
|
930
980
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
931
981
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
932
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
|
|
933
998
|
function Unit.prototype.interruptAttack(self)
|
|
934
999
|
unitInterruptAttack(self.handle)
|
|
935
1000
|
end
|
|
936
1001
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
937
|
-
|
|
938
|
-
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
|
+
)
|
|
939
1011
|
end
|
|
940
1012
|
function Unit.prototype.getDistanceTo(self, target)
|
|
941
1013
|
local handle = self.handle
|
|
@@ -995,18 +1067,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
995
1067
|
self:decrementStunCounter()
|
|
996
1068
|
end
|
|
997
1069
|
function Unit.prototype.incrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
1070
|
+
local stunCounter = self[102] or 0
|
|
1071
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
1000
1072
|
BlzPauseUnitEx(self.handle, true)
|
|
1001
1073
|
end
|
|
1002
|
-
self[
|
|
1074
|
+
self[102] = stunCounter + 1
|
|
1003
1075
|
end
|
|
1004
1076
|
function Unit.prototype.decrementStunCounter(self)
|
|
1005
|
-
local stunCounter = self[
|
|
1006
|
-
if not self[
|
|
1077
|
+
local stunCounter = self[102] or 0
|
|
1078
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1007
1079
|
BlzPauseUnitEx(self.handle, false)
|
|
1008
1080
|
end
|
|
1009
|
-
self[
|
|
1081
|
+
self[102] = stunCounter - 1
|
|
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
|
|
1010
1108
|
end
|
|
1011
1109
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1012
1110
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1108,8 +1206,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1108
1206
|
)
|
|
1109
1207
|
return targetCollection
|
|
1110
1208
|
end
|
|
1111
|
-
function Unit.getSelectionOf(self, player)
|
|
1112
|
-
|
|
1209
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1210
|
+
if target == nil then
|
|
1211
|
+
target = {}
|
|
1212
|
+
end
|
|
1213
|
+
targetCollection = target
|
|
1113
1214
|
targetCollectionNextIndex = 1
|
|
1114
1215
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1115
1216
|
return targetCollection
|
|
@@ -1131,6 +1232,9 @@ end
|
|
|
1131
1232
|
function Unit.prototype.__tostring(self)
|
|
1132
1233
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1133
1234
|
end
|
|
1235
|
+
function Unit.getBySyncId(self, syncId)
|
|
1236
|
+
return unitBySyncId[syncId]
|
|
1237
|
+
end
|
|
1134
1238
|
__TS__SetDescriptor(
|
|
1135
1239
|
Unit.prototype,
|
|
1136
1240
|
"_deltas",
|
|
@@ -1190,7 +1294,15 @@ __TS__SetDescriptor(
|
|
|
1190
1294
|
Unit.prototype,
|
|
1191
1295
|
"isIllusion",
|
|
1192
1296
|
{get = function(self)
|
|
1193
|
-
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")
|
|
1194
1306
|
end},
|
|
1195
1307
|
true
|
|
1196
1308
|
)
|
|
@@ -1267,6 +1379,19 @@ __TS__SetDescriptor(
|
|
|
1267
1379
|
},
|
|
1268
1380
|
true
|
|
1269
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
|
+
)
|
|
1270
1395
|
__TS__SetDescriptor(
|
|
1271
1396
|
Unit.prototype,
|
|
1272
1397
|
"strengthBase",
|
|
@@ -1388,17 +1513,17 @@ __TS__SetDescriptor(
|
|
|
1388
1513
|
"isTeamGlowVisible",
|
|
1389
1514
|
{
|
|
1390
1515
|
get = function(self)
|
|
1391
|
-
return not self[
|
|
1516
|
+
return not self[107]
|
|
1392
1517
|
end,
|
|
1393
1518
|
set = function(self, isTeamGlowVisible)
|
|
1394
|
-
|
|
1395
|
-
local
|
|
1519
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1520
|
+
local ____temp_7
|
|
1396
1521
|
if not isTeamGlowVisible then
|
|
1397
|
-
|
|
1522
|
+
____temp_7 = true
|
|
1398
1523
|
else
|
|
1399
|
-
|
|
1524
|
+
____temp_7 = nil
|
|
1400
1525
|
end
|
|
1401
|
-
self[
|
|
1526
|
+
self[107] = ____temp_7
|
|
1402
1527
|
end
|
|
1403
1528
|
},
|
|
1404
1529
|
true
|
|
@@ -1407,9 +1532,9 @@ __TS__SetDescriptor(
|
|
|
1407
1532
|
Unit.prototype,
|
|
1408
1533
|
"color",
|
|
1409
1534
|
{set = function(self, color)
|
|
1410
|
-
|
|
1411
|
-
if self[
|
|
1412
|
-
|
|
1535
|
+
SetUnitColor(self.handle, color.handle)
|
|
1536
|
+
if self[107] then
|
|
1537
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1413
1538
|
end
|
|
1414
1539
|
end},
|
|
1415
1540
|
true
|
|
@@ -1432,14 +1557,14 @@ __TS__SetDescriptor(
|
|
|
1432
1557
|
"maxHealth",
|
|
1433
1558
|
{
|
|
1434
1559
|
get = function(self)
|
|
1435
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1560
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1436
1561
|
end,
|
|
1437
1562
|
set = function(self, maxHealth)
|
|
1438
|
-
if maxHealth < 1 and self[
|
|
1439
|
-
self[
|
|
1563
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1564
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1440
1565
|
maxHealth = 1
|
|
1441
1566
|
end
|
|
1442
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1567
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1443
1568
|
end
|
|
1444
1569
|
},
|
|
1445
1570
|
true
|
|
@@ -1481,10 +1606,10 @@ __TS__SetDescriptor(
|
|
|
1481
1606
|
"health",
|
|
1482
1607
|
{
|
|
1483
1608
|
get = function(self)
|
|
1484
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1609
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1485
1610
|
end,
|
|
1486
1611
|
set = function(self, health)
|
|
1487
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1612
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1488
1613
|
end
|
|
1489
1614
|
},
|
|
1490
1615
|
true
|
|
@@ -1578,7 +1703,7 @@ __TS__SetDescriptor(
|
|
|
1578
1703
|
"x",
|
|
1579
1704
|
{
|
|
1580
1705
|
get = function(self)
|
|
1581
|
-
return getUnitX(self.handle)
|
|
1706
|
+
return self[108] or getUnitX(self.handle)
|
|
1582
1707
|
end,
|
|
1583
1708
|
set = function(self, v)
|
|
1584
1709
|
SetUnitX(self.handle, v)
|
|
@@ -1591,7 +1716,7 @@ __TS__SetDescriptor(
|
|
|
1591
1716
|
"y",
|
|
1592
1717
|
{
|
|
1593
1718
|
get = function(self)
|
|
1594
|
-
return getUnitY(self.handle)
|
|
1719
|
+
return self[109] or getUnitY(self.handle)
|
|
1595
1720
|
end,
|
|
1596
1721
|
set = function(self, v)
|
|
1597
1722
|
SetUnitY(self.handle, v)
|
|
@@ -1677,10 +1802,10 @@ __TS__SetDescriptor(
|
|
|
1677
1802
|
"gold",
|
|
1678
1803
|
{
|
|
1679
1804
|
get = function(self)
|
|
1680
|
-
return
|
|
1805
|
+
return GetResourceAmount(self.handle)
|
|
1681
1806
|
end,
|
|
1682
1807
|
set = function(self, gold)
|
|
1683
|
-
|
|
1808
|
+
SetResourceAmount(self.handle, gold)
|
|
1684
1809
|
end
|
|
1685
1810
|
},
|
|
1686
1811
|
true
|
|
@@ -1695,17 +1820,21 @@ __TS__SetDescriptor(
|
|
|
1695
1820
|
set = function(self, isPaused)
|
|
1696
1821
|
local handle = self.handle
|
|
1697
1822
|
if isPaused and not IsUnitPaused(handle) then
|
|
1698
|
-
self[
|
|
1699
|
-
|
|
1700
|
-
|
|
1823
|
+
self[101] = true
|
|
1824
|
+
if (self[103] or 0) <= 0 then
|
|
1825
|
+
for _ = self[102] or 0, -1 do
|
|
1826
|
+
BlzPauseUnitEx(handle, true)
|
|
1827
|
+
end
|
|
1701
1828
|
end
|
|
1702
1829
|
PauseUnit(handle, true)
|
|
1703
1830
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1704
1831
|
PauseUnit(handle, false)
|
|
1705
|
-
|
|
1706
|
-
|
|
1832
|
+
if (self[103] or 0) <= 0 then
|
|
1833
|
+
for _ = self[102] or 0, -1 do
|
|
1834
|
+
BlzPauseUnitEx(handle, false)
|
|
1835
|
+
end
|
|
1707
1836
|
end
|
|
1708
|
-
self[
|
|
1837
|
+
self[101] = nil
|
|
1709
1838
|
end
|
|
1710
1839
|
end
|
|
1711
1840
|
},
|
|
@@ -1808,6 +1937,19 @@ __TS__SetDescriptor(
|
|
|
1808
1937
|
end},
|
|
1809
1938
|
true
|
|
1810
1939
|
)
|
|
1940
|
+
__TS__SetDescriptor(
|
|
1941
|
+
Unit.prototype,
|
|
1942
|
+
"movementType",
|
|
1943
|
+
{
|
|
1944
|
+
get = function(self)
|
|
1945
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1946
|
+
end,
|
|
1947
|
+
set = function(self, movementType)
|
|
1948
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1949
|
+
end
|
|
1950
|
+
},
|
|
1951
|
+
true
|
|
1952
|
+
)
|
|
1811
1953
|
__TS__SetDescriptor(
|
|
1812
1954
|
Unit.prototype,
|
|
1813
1955
|
"pathing",
|
|
@@ -1989,6 +2131,14 @@ __TS__SetDescriptor(
|
|
|
1989
2131
|
end},
|
|
1990
2132
|
true
|
|
1991
2133
|
)
|
|
2134
|
+
__TS__SetDescriptor(
|
|
2135
|
+
Unit.prototype,
|
|
2136
|
+
"targetAcquiredEvent",
|
|
2137
|
+
{get = function(self)
|
|
2138
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2139
|
+
end},
|
|
2140
|
+
true
|
|
2141
|
+
)
|
|
1992
2142
|
__TS__SetDescriptor(
|
|
1993
2143
|
Unit.prototype,
|
|
1994
2144
|
"onSelect",
|
|
@@ -2124,25 +2274,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2124
2274
|
InitializingEvent,
|
|
2125
2275
|
function(event)
|
|
2126
2276
|
local function listener(unit, id)
|
|
2127
|
-
local
|
|
2277
|
+
local ____GetSpellTargetUnit_result_10
|
|
2128
2278
|
if GetSpellTargetUnit() then
|
|
2129
|
-
|
|
2279
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2130
2280
|
else
|
|
2131
|
-
local
|
|
2281
|
+
local ____GetSpellTargetItem_result_9
|
|
2132
2282
|
if GetSpellTargetItem() then
|
|
2133
|
-
|
|
2283
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2134
2284
|
else
|
|
2135
|
-
local
|
|
2285
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2136
2286
|
if GetSpellTargetDestructable() then
|
|
2137
|
-
|
|
2287
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2138
2288
|
else
|
|
2139
|
-
|
|
2289
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2140
2290
|
end
|
|
2141
|
-
|
|
2291
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2142
2292
|
end
|
|
2143
|
-
|
|
2293
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2144
2294
|
end
|
|
2145
|
-
local target =
|
|
2295
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2146
2296
|
if target then
|
|
2147
2297
|
invoke(event, unit, id, target)
|
|
2148
2298
|
end
|
|
@@ -2314,10 +2464,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2314
2464
|
____exports.UnitTriggerEvent,
|
|
2315
2465
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2316
2466
|
function()
|
|
2317
|
-
local
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2467
|
+
local handle = getOrderedUnit()
|
|
2468
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2469
|
+
local unit = ____exports.Unit:of(handle)
|
|
2470
|
+
if unit.state == 1 then
|
|
2471
|
+
return unit, getIssuedOrderId()
|
|
2472
|
+
end
|
|
2321
2473
|
end
|
|
2322
2474
|
return IgnoreEvent
|
|
2323
2475
|
end
|
|
@@ -2348,38 +2500,57 @@ Unit.onDamaging = (function()
|
|
|
2348
2500
|
if source and source.typeId == dummyUnitId then
|
|
2349
2501
|
source = nil
|
|
2350
2502
|
end
|
|
2351
|
-
local target = BlzGetEventDamageTarget()
|
|
2503
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2504
|
+
local metadata = damageMetadataByTarget[target]
|
|
2505
|
+
damageMetadataByTarget[target] = nil
|
|
2352
2506
|
local data = {
|
|
2353
2507
|
amount = GetEventDamage(),
|
|
2354
|
-
attackType = BlzGetEventAttackType(),
|
|
2508
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2355
2509
|
damageType = BlzGetEventDamageType(),
|
|
2356
2510
|
weaponType = BlzGetEventWeaponType(),
|
|
2357
|
-
|
|
2511
|
+
metadata = metadata,
|
|
2512
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2513
|
+
originalAmount = GetEventDamage(),
|
|
2514
|
+
originalMetadata = metadata,
|
|
2515
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2358
2516
|
}
|
|
2359
2517
|
if data.isAttack and source then
|
|
2360
|
-
|
|
2361
|
-
if weapon == -1 then
|
|
2362
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2363
|
-
weapon = 0
|
|
2364
|
-
end
|
|
2365
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2518
|
+
data.weapon = source:chooseWeapon(target)
|
|
2366
2519
|
end
|
|
2367
2520
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2368
2521
|
invoke(
|
|
2369
2522
|
event,
|
|
2370
2523
|
source,
|
|
2371
|
-
|
|
2524
|
+
target,
|
|
2372
2525
|
setmetatable(
|
|
2373
2526
|
{},
|
|
2374
2527
|
{
|
|
2375
2528
|
__index = data,
|
|
2376
2529
|
__newindex = function(self, key, value)
|
|
2377
|
-
damageSetters[key]
|
|
2530
|
+
local damageSetter = damageSetters[key]
|
|
2531
|
+
if damageSetter ~= nil then
|
|
2532
|
+
damageSetter(value)
|
|
2533
|
+
end
|
|
2378
2534
|
data[key] = value
|
|
2379
2535
|
end
|
|
2380
2536
|
}
|
|
2381
2537
|
)
|
|
2382
2538
|
)
|
|
2539
|
+
if data[0] and source then
|
|
2540
|
+
local sourceOwner = source.owner.handle
|
|
2541
|
+
data[1] = sourceOwner
|
|
2542
|
+
local targetOwner = target.owner.handle
|
|
2543
|
+
data[2] = targetOwner
|
|
2544
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2545
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2546
|
+
data[3] = true
|
|
2547
|
+
end
|
|
2548
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2549
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2550
|
+
data[4] = true
|
|
2551
|
+
end
|
|
2552
|
+
end
|
|
2553
|
+
damagingEventByTarget[target] = data
|
|
2383
2554
|
return
|
|
2384
2555
|
end
|
|
2385
2556
|
BlzSetEventDamage(0)
|
|
@@ -2387,7 +2558,7 @@ Unit.onDamaging = (function()
|
|
|
2387
2558
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2388
2559
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2389
2560
|
local sourceOwner = source.owner.handle
|
|
2390
|
-
local targetOwner =
|
|
2561
|
+
local targetOwner = target.owner.handle
|
|
2391
2562
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2392
2563
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2393
2564
|
Timer:run(function()
|
|
@@ -2403,23 +2574,19 @@ Unit.onDamaging = (function()
|
|
|
2403
2574
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2404
2575
|
local condition = ____value[1]
|
|
2405
2576
|
local action = ____value[2]
|
|
2406
|
-
if condition(
|
|
2407
|
-
source,
|
|
2408
|
-
____exports.Unit:of(target),
|
|
2409
|
-
data
|
|
2410
|
-
) then
|
|
2577
|
+
if condition(source, target, data) then
|
|
2411
2578
|
action(
|
|
2412
2579
|
source,
|
|
2413
|
-
|
|
2580
|
+
target,
|
|
2414
2581
|
setmetatable(
|
|
2415
2582
|
{fire = function()
|
|
2416
2583
|
UnitDamageTarget(
|
|
2417
2584
|
source.handle,
|
|
2418
|
-
target,
|
|
2585
|
+
target.handle,
|
|
2419
2586
|
data.amount,
|
|
2420
2587
|
true,
|
|
2421
2588
|
true,
|
|
2422
|
-
data.attackType,
|
|
2589
|
+
attackTypeToNative(data.attackType),
|
|
2423
2590
|
data.damageType,
|
|
2424
2591
|
data.weaponType
|
|
2425
2592
|
)
|
|
@@ -2446,29 +2613,54 @@ Unit.onDamage = __TS__New(
|
|
|
2446
2613
|
if source and source.typeId == dummyUnitId then
|
|
2447
2614
|
source = nil
|
|
2448
2615
|
end
|
|
2616
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2617
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2618
|
+
damagingEventByTarget[target] = nil
|
|
2449
2619
|
local data = {
|
|
2450
2620
|
amount = GetEventDamage(),
|
|
2451
|
-
attackType = BlzGetEventAttackType(),
|
|
2621
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2452
2622
|
damageType = BlzGetEventDamageType(),
|
|
2453
2623
|
weaponType = BlzGetEventWeaponType(),
|
|
2624
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2454
2625
|
isAttack = BlzGetEventIsAttack(),
|
|
2626
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2627
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2455
2628
|
preventDeath = damageEventPreventDeath
|
|
2456
2629
|
}
|
|
2630
|
+
if damagingEvent then
|
|
2631
|
+
for key, value in pairs(damagingEvent) do
|
|
2632
|
+
if isAttribute(key) then
|
|
2633
|
+
data[key] = value
|
|
2634
|
+
end
|
|
2635
|
+
end
|
|
2636
|
+
local sourceOwner = damagingEvent[1]
|
|
2637
|
+
if sourceOwner then
|
|
2638
|
+
local targetOwner = damagingEvent[2]
|
|
2639
|
+
if damagingEvent[3] then
|
|
2640
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2641
|
+
end
|
|
2642
|
+
if damagingEvent[4] then
|
|
2643
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2644
|
+
end
|
|
2645
|
+
end
|
|
2646
|
+
end
|
|
2457
2647
|
local evData = setmetatable(
|
|
2458
2648
|
{},
|
|
2459
2649
|
{
|
|
2460
2650
|
__index = data,
|
|
2461
2651
|
__newindex = function(self, key, value)
|
|
2462
|
-
damageSetters[key]
|
|
2652
|
+
local damageSetter = damageSetters[key]
|
|
2653
|
+
if damageSetter ~= nil then
|
|
2654
|
+
damageSetter(value)
|
|
2655
|
+
end
|
|
2463
2656
|
data[key] = value
|
|
2464
2657
|
end
|
|
2465
2658
|
}
|
|
2466
2659
|
)
|
|
2467
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2468
2660
|
invoke(event, source, target, evData)
|
|
2469
2661
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2470
2662
|
local bonusHealth = math.ceil(evData.amount)
|
|
2471
|
-
target[
|
|
2663
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2472
2664
|
BlzSetUnitMaxHP(
|
|
2473
2665
|
target.handle,
|
|
2474
2666
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2482,7 +2674,7 @@ Unit.onDamage = __TS__New(
|
|
|
2482
2674
|
evData[0],
|
|
2483
2675
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2484
2676
|
)
|
|
2485
|
-
target[
|
|
2677
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2486
2678
|
SetWidgetLife(
|
|
2487
2679
|
target.handle,
|
|
2488
2680
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2502,32 +2694,110 @@ Unit.onDamage = __TS__New(
|
|
|
2502
2694
|
DestroyTrigger(trigger)
|
|
2503
2695
|
end
|
|
2504
2696
|
)
|
|
2505
|
-
Unit.
|
|
2697
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2506
2698
|
____exports.UnitTriggerEvent,
|
|
2507
2699
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2508
2700
|
function()
|
|
2509
2701
|
local unit = getTriggerUnit()
|
|
2510
|
-
|
|
2511
|
-
|
|
2702
|
+
local item = getManipulatedItem()
|
|
2703
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2704
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2512
2705
|
end
|
|
2513
2706
|
return IgnoreEvent
|
|
2514
2707
|
end
|
|
2515
2708
|
)
|
|
2516
|
-
Unit.
|
|
2709
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2517
2710
|
____exports.UnitTriggerEvent,
|
|
2518
2711
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2519
2712
|
function()
|
|
2520
|
-
local
|
|
2521
|
-
|
|
2522
|
-
|
|
2713
|
+
local unitHandle = getTriggerUnit()
|
|
2714
|
+
local itemHandle = getManipulatedItem()
|
|
2715
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2716
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2717
|
+
local item = Item:of(itemHandle)
|
|
2718
|
+
if item.owner ~= unit then
|
|
2719
|
+
return unit, item
|
|
2720
|
+
end
|
|
2523
2721
|
end
|
|
2524
2722
|
return IgnoreEvent
|
|
2525
2723
|
end
|
|
2526
2724
|
)
|
|
2527
|
-
Unit.
|
|
2725
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2528
2726
|
____exports.UnitTriggerEvent,
|
|
2529
2727
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2530
|
-
function()
|
|
2728
|
+
function()
|
|
2729
|
+
local unit = getTriggerUnit()
|
|
2730
|
+
local item = getManipulatedItem()
|
|
2731
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2732
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2733
|
+
end
|
|
2734
|
+
return IgnoreEvent
|
|
2735
|
+
end
|
|
2736
|
+
)
|
|
2737
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2738
|
+
____exports.UnitTriggerEvent,
|
|
2739
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2740
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2741
|
+
)
|
|
2742
|
+
__TS__ObjectDefineProperty(
|
|
2743
|
+
Unit,
|
|
2744
|
+
"itemChargesChangedEvent",
|
|
2745
|
+
{get = function(self)
|
|
2746
|
+
local event = __TS__New(Event)
|
|
2747
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2748
|
+
local unit = item.owner
|
|
2749
|
+
if unit ~= nil then
|
|
2750
|
+
invoke(event, unit, item)
|
|
2751
|
+
end
|
|
2752
|
+
end)
|
|
2753
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2754
|
+
return event
|
|
2755
|
+
end}
|
|
2756
|
+
)
|
|
2757
|
+
__TS__ObjectDefineProperty(
|
|
2758
|
+
Unit,
|
|
2759
|
+
"itemUseOrderEvent",
|
|
2760
|
+
{get = function(self)
|
|
2761
|
+
local event = __TS__New(Event)
|
|
2762
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2763
|
+
local slot = order - orderId("useslot0")
|
|
2764
|
+
local function listener(unit)
|
|
2765
|
+
local item = unit.items[slot + 1]
|
|
2766
|
+
if item ~= nil then
|
|
2767
|
+
invoke(event, unit, item)
|
|
2768
|
+
end
|
|
2769
|
+
end
|
|
2770
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2771
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2772
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2773
|
+
end
|
|
2774
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2775
|
+
return event
|
|
2776
|
+
end}
|
|
2777
|
+
)
|
|
2778
|
+
__TS__ObjectDefineProperty(
|
|
2779
|
+
Unit,
|
|
2780
|
+
"itemMoveOrderEvent",
|
|
2781
|
+
{get = function(self)
|
|
2782
|
+
local event = __TS__New(Event)
|
|
2783
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2784
|
+
local slotTo = order - orderId("moveslot0")
|
|
2785
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2786
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2787
|
+
if slotFrom ~= nil then
|
|
2788
|
+
invoke(
|
|
2789
|
+
event,
|
|
2790
|
+
unit,
|
|
2791
|
+
item,
|
|
2792
|
+
slotFrom,
|
|
2793
|
+
slotTo
|
|
2794
|
+
)
|
|
2795
|
+
end
|
|
2796
|
+
end)
|
|
2797
|
+
end
|
|
2798
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2799
|
+
return event
|
|
2800
|
+
end}
|
|
2531
2801
|
)
|
|
2532
2802
|
__TS__ObjectDefineProperty(
|
|
2533
2803
|
Unit,
|
|
@@ -2554,6 +2824,10 @@ __TS__ObjectDefineProperty(
|
|
|
2554
2824
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2555
2825
|
return destroyEvent
|
|
2556
2826
|
end}
|
|
2827
|
+
)
|
|
2828
|
+
Unit.synchronize = synchronizer(
|
|
2829
|
+
function(unit) return unit.syncId end,
|
|
2830
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2557
2831
|
);
|
|
2558
2832
|
(function(self)
|
|
2559
2833
|
local leaveAbilityIds = postcompile(function()
|