warscript 0.0.1-dev.c79b20b → 0.0.1-dev.c826fde
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 +39 -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 +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 +129 -85
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +8 -7
- package/engine/internal/item.lua +153 -51
- 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 → unit/item.d.ts} +5 -4
- package/engine/internal/{unit+item.lua → unit/item.lua} +32 -11
- 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 +52 -16
- package/engine/internal/unit.lua +375 -153
- 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 -1
- package/engine/unit.lua +4 -1
- 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/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +9 -1
- package/utility/arrays.lua +37 -3
- package/utility/callback-array.d.ts +13 -0
- package/utility/callback-array.lua +46 -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 +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
|
@@ -51,12 +51,21 @@ 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
|
|
54
65
|
local match = string.match
|
|
55
66
|
local ____tostring = _G.tostring
|
|
56
67
|
local setUnitAnimation = SetUnitAnimation
|
|
57
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
58
68
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
59
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
60
69
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
61
70
|
local getUnitRealField = BlzGetUnitRealField
|
|
62
71
|
local getHeroStr = GetHeroStr
|
|
@@ -75,9 +84,9 @@ local setUnitScale = SetUnitScale
|
|
|
75
84
|
local setUnitPosition = SetUnitPosition
|
|
76
85
|
local setUnitTimeScale = SetUnitTimeScale
|
|
77
86
|
local getHandleId = GetHandleId
|
|
87
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
78
88
|
local createUnit = CreateUnit
|
|
79
89
|
local killUnit = KillUnit
|
|
80
|
-
local setUnitExploded = SetUnitExploded
|
|
81
90
|
local removeUnit = RemoveUnit
|
|
82
91
|
local getUnitTypeId = GetUnitTypeId
|
|
83
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -93,8 +102,6 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
93
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
94
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
95
104
|
local isUnitInRange = IsUnitInRange
|
|
96
|
-
local setResourceAmount = SetResourceAmount
|
|
97
|
-
local getResourceAmount = GetResourceAmount
|
|
98
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
99
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
100
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
@@ -118,15 +125,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
118
125
|
local getIssuedOrderId = GetIssuedOrderId
|
|
119
126
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
120
127
|
local unitAlive = UnitAlive
|
|
121
|
-
local unitAddType = UnitAddType
|
|
122
|
-
local unitRemoveType = UnitRemoveType
|
|
123
|
-
local isUnitIllusion = IsUnitIllusion
|
|
124
|
-
local isUnitType = IsUnitType
|
|
125
128
|
local isUnitAlly = IsUnitAlly
|
|
126
129
|
local isUnitEnemy = IsUnitEnemy
|
|
127
130
|
local getOwningPlayer = GetOwningPlayer
|
|
128
|
-
local setUnitColor = SetUnitColor
|
|
129
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
130
131
|
____exports.UnitClassification = {}
|
|
131
132
|
local UnitClassification = ____exports.UnitClassification
|
|
132
133
|
do
|
|
@@ -136,6 +137,7 @@ do
|
|
|
136
137
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
137
138
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
138
139
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
140
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
139
141
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
140
142
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
141
143
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -343,6 +345,9 @@ local function dispatchAbility(event)
|
|
|
343
345
|
}
|
|
344
346
|
)
|
|
345
347
|
end
|
|
348
|
+
local function damagingEventPreventRetaliation(self)
|
|
349
|
+
self[0] = true
|
|
350
|
+
end
|
|
346
351
|
local function damageEventPreventDeath(self, callback, ...)
|
|
347
352
|
if self[0] ~= nil then
|
|
348
353
|
return
|
|
@@ -354,7 +359,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
354
359
|
rawset(self, 1 + i, (select(i, ...)))
|
|
355
360
|
end
|
|
356
361
|
end
|
|
357
|
-
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
|
+
}
|
|
358
370
|
local jlimitopByOperator = {
|
|
359
371
|
[0] = LESS_THAN_OR_EQUAL,
|
|
360
372
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -432,6 +444,19 @@ __TS__SetDescriptor(
|
|
|
432
444
|
},
|
|
433
445
|
true
|
|
434
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
|
+
)
|
|
435
460
|
__TS__SetDescriptor(
|
|
436
461
|
UnitWeapon.prototype,
|
|
437
462
|
"damageBase",
|
|
@@ -562,17 +587,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
587
|
____exports.Unit:of(unit)
|
|
563
588
|
)
|
|
564
589
|
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
590
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
591
|
local item = unitItemInSlot(unit, i)
|
|
578
592
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -630,15 +644,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
630
644
|
dummies[player] = dummy
|
|
631
645
|
end
|
|
632
646
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
647
|
+
local counter = (unit[103] or 0) - 1
|
|
634
648
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
649
|
+
unit[103] = counter
|
|
636
650
|
return
|
|
637
651
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
652
|
+
unit[103] = nil
|
|
653
|
+
local healthBonus = unit[104]
|
|
640
654
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
655
|
+
unit[104] = nil
|
|
642
656
|
local handle = unit.handle
|
|
643
657
|
BlzSetUnitMaxHP(
|
|
644
658
|
handle,
|
|
@@ -646,12 +660,27 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
660
|
)
|
|
647
661
|
end
|
|
648
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
|
|
649
675
|
____exports.Unit = __TS__Class()
|
|
650
676
|
local Unit = ____exports.Unit
|
|
651
677
|
Unit.name = "Unit"
|
|
652
678
|
__TS__ClassExtends(Unit, Handle)
|
|
653
679
|
function Unit.prototype.____constructor(self, handle)
|
|
654
680
|
Handle.prototype.____constructor(self, handle)
|
|
681
|
+
local ____nextSyncId_1 = nextSyncId
|
|
682
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
683
|
+
self.syncId = ____nextSyncId_1
|
|
655
684
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
685
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
657
686
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -664,6 +693,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
664
693
|
fourCC("Amrf")
|
|
665
694
|
))
|
|
666
695
|
end
|
|
696
|
+
unitBySyncId[self.syncId] = self
|
|
667
697
|
local ____ = self.abilities
|
|
668
698
|
end
|
|
669
699
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -682,6 +712,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
682
712
|
end
|
|
683
713
|
function Unit.prototype.onDestroy(self)
|
|
684
714
|
local handle = self.handle
|
|
715
|
+
self[107] = getUnitX(handle)
|
|
716
|
+
self[108] = getUnitY(handle)
|
|
685
717
|
if not self._owner then
|
|
686
718
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
687
719
|
end
|
|
@@ -749,17 +781,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
781
|
end}
|
|
750
782
|
end
|
|
751
783
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
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
|
|
754
786
|
end
|
|
755
787
|
function Unit.prototype.addClassification(self, classification)
|
|
756
|
-
return
|
|
788
|
+
return UnitAddType(self.handle, classification)
|
|
757
789
|
end
|
|
758
790
|
function Unit.prototype.removeClassification(self, classification)
|
|
759
|
-
return
|
|
791
|
+
return UnitRemoveType(self.handle, classification)
|
|
760
792
|
end
|
|
761
793
|
function Unit.prototype.hasClassification(self, classification)
|
|
762
|
-
return
|
|
794
|
+
return IsUnitType(self.handle, classification)
|
|
763
795
|
end
|
|
764
796
|
function Unit.prototype.isVisibleTo(self, player)
|
|
765
797
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -768,13 +800,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
800
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
801
|
end
|
|
770
802
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
803
|
+
local ____temp_3
|
|
772
804
|
if type(x) == "number" then
|
|
773
|
-
|
|
805
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
806
|
else
|
|
775
|
-
|
|
807
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
776
808
|
end
|
|
777
|
-
return
|
|
809
|
+
return ____temp_3
|
|
778
810
|
end
|
|
779
811
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
812
|
return isUnitAlly(
|
|
@@ -792,16 +824,28 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
792
824
|
if type(animation) == "number" then
|
|
793
825
|
setUnitAnimationByIndex(self.handle, animation)
|
|
794
826
|
elseif rarity then
|
|
795
|
-
|
|
827
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
796
828
|
else
|
|
797
829
|
setUnitAnimation(self.handle, animation)
|
|
798
830
|
end
|
|
799
831
|
end
|
|
832
|
+
function Unit.prototype.resetAnimation(self)
|
|
833
|
+
ResetUnitAnimation(self.handle)
|
|
834
|
+
end
|
|
800
835
|
function Unit.prototype.queueAnimation(self, animation)
|
|
801
|
-
|
|
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
|
|
802
846
|
end
|
|
803
847
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
848
|
+
self[103] = (self[103] or 0) + 1
|
|
805
849
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
850
|
end
|
|
807
851
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -811,21 +855,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
811
855
|
return IsUnitSelected(self.handle, player.handle)
|
|
812
856
|
end
|
|
813
857
|
function Unit.prototype.explode(self)
|
|
814
|
-
|
|
858
|
+
SetUnitExploded(self.handle, true)
|
|
815
859
|
killUnit(self.handle)
|
|
816
860
|
end
|
|
817
861
|
function Unit.prototype.kill(self)
|
|
818
862
|
killUnit(self.handle)
|
|
819
863
|
end
|
|
820
864
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
821
|
-
local
|
|
822
|
-
local
|
|
823
|
-
local
|
|
824
|
-
if
|
|
825
|
-
|
|
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
|
|
826
870
|
end
|
|
827
|
-
__TS__SparseArrayPush(
|
|
828
|
-
|
|
871
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
872
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
829
873
|
end
|
|
830
874
|
function Unit.prototype.healTarget(self, target, amount)
|
|
831
875
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -868,17 +912,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
868
912
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
869
913
|
end
|
|
870
914
|
function Unit.prototype.addAbility(self, abilityId)
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
915
|
+
local ability = UnitAbility:of(
|
|
916
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
917
|
+
abilityId,
|
|
918
|
+
self
|
|
919
|
+
)
|
|
920
|
+
if ability ~= nil then
|
|
877
921
|
local abilities = self.abilities
|
|
878
922
|
abilities[#abilities + 1] = ability
|
|
879
|
-
return ability
|
|
880
923
|
end
|
|
881
|
-
return
|
|
924
|
+
return ability
|
|
882
925
|
end
|
|
883
926
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
884
927
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -892,31 +935,21 @@ end
|
|
|
892
935
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
893
936
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
894
937
|
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
|
-
)
|
|
938
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
939
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
940
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
906
941
|
end
|
|
907
|
-
function Unit.prototype.removeAbility(self,
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
end
|
|
942
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
943
|
+
local abilities = self.abilities
|
|
944
|
+
for i = 1, #abilities do
|
|
945
|
+
if abilities[i].typeId == abilityTypeId then
|
|
946
|
+
local ability = abilities[i]
|
|
947
|
+
tremove(abilities, i)
|
|
948
|
+
ability:destroy()
|
|
949
|
+
return true
|
|
916
950
|
end
|
|
917
|
-
return true
|
|
918
951
|
end
|
|
919
|
-
return
|
|
952
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
920
953
|
end
|
|
921
954
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
922
955
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -930,12 +963,34 @@ end
|
|
|
930
963
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
931
964
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
932
965
|
end
|
|
966
|
+
function Unit.prototype.interruptMovement(self)
|
|
967
|
+
local handle = self.handle
|
|
968
|
+
unitDisableAbility(
|
|
969
|
+
handle,
|
|
970
|
+
fourCC("Amov"),
|
|
971
|
+
true,
|
|
972
|
+
false
|
|
973
|
+
)
|
|
974
|
+
unitDisableAbility(
|
|
975
|
+
handle,
|
|
976
|
+
fourCC("Amov"),
|
|
977
|
+
false,
|
|
978
|
+
false
|
|
979
|
+
)
|
|
980
|
+
end
|
|
933
981
|
function Unit.prototype.interruptAttack(self)
|
|
934
982
|
unitInterruptAttack(self.handle)
|
|
935
983
|
end
|
|
936
984
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
937
|
-
|
|
938
|
-
unitDisableAbility(
|
|
985
|
+
local handle = self.handle
|
|
986
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
987
|
+
Timer:run(
|
|
988
|
+
unitDisableAbility,
|
|
989
|
+
handle,
|
|
990
|
+
abilityId,
|
|
991
|
+
false,
|
|
992
|
+
false
|
|
993
|
+
)
|
|
939
994
|
end
|
|
940
995
|
function Unit.prototype.getDistanceTo(self, target)
|
|
941
996
|
local handle = self.handle
|
|
@@ -995,18 +1050,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
995
1050
|
self:decrementStunCounter()
|
|
996
1051
|
end
|
|
997
1052
|
function Unit.prototype.incrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
1053
|
+
local stunCounter = self[102] or 0
|
|
1054
|
+
if not self[101] or stunCounter >= 0 then
|
|
1000
1055
|
BlzPauseUnitEx(self.handle, true)
|
|
1001
1056
|
end
|
|
1002
|
-
self[
|
|
1057
|
+
self[102] = stunCounter + 1
|
|
1003
1058
|
end
|
|
1004
1059
|
function Unit.prototype.decrementStunCounter(self)
|
|
1005
|
-
local stunCounter = self[
|
|
1006
|
-
if not self[
|
|
1060
|
+
local stunCounter = self[102] or 0
|
|
1061
|
+
if not self[101] or stunCounter >= 1 then
|
|
1007
1062
|
BlzPauseUnitEx(self.handle, false)
|
|
1008
1063
|
end
|
|
1009
|
-
self[
|
|
1064
|
+
self[102] = stunCounter - 1
|
|
1010
1065
|
end
|
|
1011
1066
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1012
1067
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1108,8 +1163,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1108
1163
|
)
|
|
1109
1164
|
return targetCollection
|
|
1110
1165
|
end
|
|
1111
|
-
function Unit.getSelectionOf(self, player)
|
|
1112
|
-
|
|
1166
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1167
|
+
if target == nil then
|
|
1168
|
+
target = {}
|
|
1169
|
+
end
|
|
1170
|
+
targetCollection = target
|
|
1113
1171
|
targetCollectionNextIndex = 1
|
|
1114
1172
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1115
1173
|
return targetCollection
|
|
@@ -1131,6 +1189,9 @@ end
|
|
|
1131
1189
|
function Unit.prototype.__tostring(self)
|
|
1132
1190
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1133
1191
|
end
|
|
1192
|
+
function Unit.getBySyncId(self, syncId)
|
|
1193
|
+
return unitBySyncId[syncId]
|
|
1194
|
+
end
|
|
1134
1195
|
__TS__SetDescriptor(
|
|
1135
1196
|
Unit.prototype,
|
|
1136
1197
|
"_deltas",
|
|
@@ -1190,7 +1251,15 @@ __TS__SetDescriptor(
|
|
|
1190
1251
|
Unit.prototype,
|
|
1191
1252
|
"isIllusion",
|
|
1192
1253
|
{get = function(self)
|
|
1193
|
-
return
|
|
1254
|
+
return IsUnitIllusion(self.handle)
|
|
1255
|
+
end},
|
|
1256
|
+
true
|
|
1257
|
+
)
|
|
1258
|
+
__TS__SetDescriptor(
|
|
1259
|
+
Unit.prototype,
|
|
1260
|
+
"isStunned",
|
|
1261
|
+
{get = function(self)
|
|
1262
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1194
1263
|
end},
|
|
1195
1264
|
true
|
|
1196
1265
|
)
|
|
@@ -1267,6 +1336,19 @@ __TS__SetDescriptor(
|
|
|
1267
1336
|
},
|
|
1268
1337
|
true
|
|
1269
1338
|
)
|
|
1339
|
+
__TS__SetDescriptor(
|
|
1340
|
+
Unit.prototype,
|
|
1341
|
+
"primaryAttribute",
|
|
1342
|
+
{
|
|
1343
|
+
get = function(self)
|
|
1344
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1345
|
+
end,
|
|
1346
|
+
set = function(self, primaryAttribute)
|
|
1347
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1348
|
+
end
|
|
1349
|
+
},
|
|
1350
|
+
true
|
|
1351
|
+
)
|
|
1270
1352
|
__TS__SetDescriptor(
|
|
1271
1353
|
Unit.prototype,
|
|
1272
1354
|
"strengthBase",
|
|
@@ -1388,17 +1470,17 @@ __TS__SetDescriptor(
|
|
|
1388
1470
|
"isTeamGlowVisible",
|
|
1389
1471
|
{
|
|
1390
1472
|
get = function(self)
|
|
1391
|
-
return not self[
|
|
1473
|
+
return not self[106]
|
|
1392
1474
|
end,
|
|
1393
1475
|
set = function(self, isTeamGlowVisible)
|
|
1394
|
-
|
|
1395
|
-
local
|
|
1476
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1477
|
+
local ____temp_7
|
|
1396
1478
|
if not isTeamGlowVisible then
|
|
1397
|
-
|
|
1479
|
+
____temp_7 = true
|
|
1398
1480
|
else
|
|
1399
|
-
|
|
1481
|
+
____temp_7 = nil
|
|
1400
1482
|
end
|
|
1401
|
-
self[
|
|
1483
|
+
self[106] = ____temp_7
|
|
1402
1484
|
end
|
|
1403
1485
|
},
|
|
1404
1486
|
true
|
|
@@ -1407,9 +1489,9 @@ __TS__SetDescriptor(
|
|
|
1407
1489
|
Unit.prototype,
|
|
1408
1490
|
"color",
|
|
1409
1491
|
{set = function(self, color)
|
|
1410
|
-
|
|
1411
|
-
if self[
|
|
1412
|
-
|
|
1492
|
+
SetUnitColor(self.handle, color.handle)
|
|
1493
|
+
if self[106] then
|
|
1494
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1413
1495
|
end
|
|
1414
1496
|
end},
|
|
1415
1497
|
true
|
|
@@ -1432,14 +1514,14 @@ __TS__SetDescriptor(
|
|
|
1432
1514
|
"maxHealth",
|
|
1433
1515
|
{
|
|
1434
1516
|
get = function(self)
|
|
1435
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1517
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1436
1518
|
end,
|
|
1437
1519
|
set = function(self, maxHealth)
|
|
1438
|
-
if maxHealth < 1 and self[
|
|
1439
|
-
self[
|
|
1520
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1521
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1440
1522
|
maxHealth = 1
|
|
1441
1523
|
end
|
|
1442
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1524
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1443
1525
|
end
|
|
1444
1526
|
},
|
|
1445
1527
|
true
|
|
@@ -1481,10 +1563,10 @@ __TS__SetDescriptor(
|
|
|
1481
1563
|
"health",
|
|
1482
1564
|
{
|
|
1483
1565
|
get = function(self)
|
|
1484
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1566
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1485
1567
|
end,
|
|
1486
1568
|
set = function(self, health)
|
|
1487
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1569
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1488
1570
|
end
|
|
1489
1571
|
},
|
|
1490
1572
|
true
|
|
@@ -1578,7 +1660,7 @@ __TS__SetDescriptor(
|
|
|
1578
1660
|
"x",
|
|
1579
1661
|
{
|
|
1580
1662
|
get = function(self)
|
|
1581
|
-
return getUnitX(self.handle)
|
|
1663
|
+
return self[107] or getUnitX(self.handle)
|
|
1582
1664
|
end,
|
|
1583
1665
|
set = function(self, v)
|
|
1584
1666
|
SetUnitX(self.handle, v)
|
|
@@ -1591,7 +1673,7 @@ __TS__SetDescriptor(
|
|
|
1591
1673
|
"y",
|
|
1592
1674
|
{
|
|
1593
1675
|
get = function(self)
|
|
1594
|
-
return getUnitY(self.handle)
|
|
1676
|
+
return self[108] or getUnitY(self.handle)
|
|
1595
1677
|
end,
|
|
1596
1678
|
set = function(self, v)
|
|
1597
1679
|
SetUnitY(self.handle, v)
|
|
@@ -1677,10 +1759,10 @@ __TS__SetDescriptor(
|
|
|
1677
1759
|
"gold",
|
|
1678
1760
|
{
|
|
1679
1761
|
get = function(self)
|
|
1680
|
-
return
|
|
1762
|
+
return GetResourceAmount(self.handle)
|
|
1681
1763
|
end,
|
|
1682
1764
|
set = function(self, gold)
|
|
1683
|
-
|
|
1765
|
+
SetResourceAmount(self.handle, gold)
|
|
1684
1766
|
end
|
|
1685
1767
|
},
|
|
1686
1768
|
true
|
|
@@ -1695,17 +1777,17 @@ __TS__SetDescriptor(
|
|
|
1695
1777
|
set = function(self, isPaused)
|
|
1696
1778
|
local handle = self.handle
|
|
1697
1779
|
if isPaused and not IsUnitPaused(handle) then
|
|
1698
|
-
self[
|
|
1699
|
-
for _ = self[
|
|
1780
|
+
self[101] = true
|
|
1781
|
+
for _ = self[102] or 0, -1 do
|
|
1700
1782
|
BlzPauseUnitEx(handle, true)
|
|
1701
1783
|
end
|
|
1702
1784
|
PauseUnit(handle, true)
|
|
1703
1785
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1704
1786
|
PauseUnit(handle, false)
|
|
1705
|
-
for _ = self[
|
|
1787
|
+
for _ = self[102] or 0, -1 do
|
|
1706
1788
|
BlzPauseUnitEx(handle, false)
|
|
1707
1789
|
end
|
|
1708
|
-
self[
|
|
1790
|
+
self[101] = nil
|
|
1709
1791
|
end
|
|
1710
1792
|
end
|
|
1711
1793
|
},
|
|
@@ -1808,6 +1890,19 @@ __TS__SetDescriptor(
|
|
|
1808
1890
|
end},
|
|
1809
1891
|
true
|
|
1810
1892
|
)
|
|
1893
|
+
__TS__SetDescriptor(
|
|
1894
|
+
Unit.prototype,
|
|
1895
|
+
"movementType",
|
|
1896
|
+
{
|
|
1897
|
+
get = function(self)
|
|
1898
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1899
|
+
end,
|
|
1900
|
+
set = function(self, movementType)
|
|
1901
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1902
|
+
end
|
|
1903
|
+
},
|
|
1904
|
+
true
|
|
1905
|
+
)
|
|
1811
1906
|
__TS__SetDescriptor(
|
|
1812
1907
|
Unit.prototype,
|
|
1813
1908
|
"pathing",
|
|
@@ -1989,6 +2084,14 @@ __TS__SetDescriptor(
|
|
|
1989
2084
|
end},
|
|
1990
2085
|
true
|
|
1991
2086
|
)
|
|
2087
|
+
__TS__SetDescriptor(
|
|
2088
|
+
Unit.prototype,
|
|
2089
|
+
"targetAcquiredEvent",
|
|
2090
|
+
{get = function(self)
|
|
2091
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2092
|
+
end},
|
|
2093
|
+
true
|
|
2094
|
+
)
|
|
1992
2095
|
__TS__SetDescriptor(
|
|
1993
2096
|
Unit.prototype,
|
|
1994
2097
|
"onSelect",
|
|
@@ -2124,25 +2227,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2124
2227
|
InitializingEvent,
|
|
2125
2228
|
function(event)
|
|
2126
2229
|
local function listener(unit, id)
|
|
2127
|
-
local
|
|
2230
|
+
local ____GetSpellTargetUnit_result_10
|
|
2128
2231
|
if GetSpellTargetUnit() then
|
|
2129
|
-
|
|
2232
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2130
2233
|
else
|
|
2131
|
-
local
|
|
2234
|
+
local ____GetSpellTargetItem_result_9
|
|
2132
2235
|
if GetSpellTargetItem() then
|
|
2133
|
-
|
|
2236
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2134
2237
|
else
|
|
2135
|
-
local
|
|
2238
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2136
2239
|
if GetSpellTargetDestructable() then
|
|
2137
|
-
|
|
2240
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2138
2241
|
else
|
|
2139
|
-
|
|
2242
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2140
2243
|
end
|
|
2141
|
-
|
|
2244
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2142
2245
|
end
|
|
2143
|
-
|
|
2246
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2144
2247
|
end
|
|
2145
|
-
local target =
|
|
2248
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2146
2249
|
if target then
|
|
2147
2250
|
invoke(event, unit, id, target)
|
|
2148
2251
|
end
|
|
@@ -2314,10 +2417,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2314
2417
|
____exports.UnitTriggerEvent,
|
|
2315
2418
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2316
2419
|
function()
|
|
2317
|
-
local
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2420
|
+
local handle = getOrderedUnit()
|
|
2421
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2422
|
+
local unit = ____exports.Unit:of(handle)
|
|
2423
|
+
if unit.state == 1 then
|
|
2424
|
+
return unit, getIssuedOrderId()
|
|
2425
|
+
end
|
|
2321
2426
|
end
|
|
2322
2427
|
return IgnoreEvent
|
|
2323
2428
|
end
|
|
@@ -2348,13 +2453,19 @@ Unit.onDamaging = (function()
|
|
|
2348
2453
|
if source and source.typeId == dummyUnitId then
|
|
2349
2454
|
source = nil
|
|
2350
2455
|
end
|
|
2351
|
-
local target = BlzGetEventDamageTarget()
|
|
2456
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2457
|
+
local metadata = damageMetadataByTarget[target]
|
|
2458
|
+
damageMetadataByTarget[target] = nil
|
|
2352
2459
|
local data = {
|
|
2353
2460
|
amount = GetEventDamage(),
|
|
2354
|
-
attackType = BlzGetEventAttackType(),
|
|
2461
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2355
2462
|
damageType = BlzGetEventDamageType(),
|
|
2356
2463
|
weaponType = BlzGetEventWeaponType(),
|
|
2357
|
-
|
|
2464
|
+
metadata = metadata,
|
|
2465
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2466
|
+
originalAmount = GetEventDamage(),
|
|
2467
|
+
originalMetadata = metadata,
|
|
2468
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2358
2469
|
}
|
|
2359
2470
|
if data.isAttack and source then
|
|
2360
2471
|
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
|
|
@@ -2368,18 +2479,36 @@ Unit.onDamaging = (function()
|
|
|
2368
2479
|
invoke(
|
|
2369
2480
|
event,
|
|
2370
2481
|
source,
|
|
2371
|
-
|
|
2482
|
+
target,
|
|
2372
2483
|
setmetatable(
|
|
2373
2484
|
{},
|
|
2374
2485
|
{
|
|
2375
2486
|
__index = data,
|
|
2376
2487
|
__newindex = function(self, key, value)
|
|
2377
|
-
damageSetters[key]
|
|
2488
|
+
local damageSetter = damageSetters[key]
|
|
2489
|
+
if damageSetter ~= nil then
|
|
2490
|
+
damageSetter(value)
|
|
2491
|
+
end
|
|
2378
2492
|
data[key] = value
|
|
2379
2493
|
end
|
|
2380
2494
|
}
|
|
2381
2495
|
)
|
|
2382
2496
|
)
|
|
2497
|
+
if data[0] and source then
|
|
2498
|
+
local sourceOwner = source.owner.handle
|
|
2499
|
+
data[1] = sourceOwner
|
|
2500
|
+
local targetOwner = target.owner.handle
|
|
2501
|
+
data[2] = targetOwner
|
|
2502
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2503
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2504
|
+
data[3] = true
|
|
2505
|
+
end
|
|
2506
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2507
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2508
|
+
data[4] = true
|
|
2509
|
+
end
|
|
2510
|
+
end
|
|
2511
|
+
damagingEventByTarget[target] = data
|
|
2383
2512
|
return
|
|
2384
2513
|
end
|
|
2385
2514
|
BlzSetEventDamage(0)
|
|
@@ -2387,7 +2516,7 @@ Unit.onDamaging = (function()
|
|
|
2387
2516
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2388
2517
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2389
2518
|
local sourceOwner = source.owner.handle
|
|
2390
|
-
local targetOwner =
|
|
2519
|
+
local targetOwner = target.owner.handle
|
|
2391
2520
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2392
2521
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2393
2522
|
Timer:run(function()
|
|
@@ -2403,23 +2532,19 @@ Unit.onDamaging = (function()
|
|
|
2403
2532
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2404
2533
|
local condition = ____value[1]
|
|
2405
2534
|
local action = ____value[2]
|
|
2406
|
-
if condition(
|
|
2407
|
-
source,
|
|
2408
|
-
____exports.Unit:of(target),
|
|
2409
|
-
data
|
|
2410
|
-
) then
|
|
2535
|
+
if condition(source, target, data) then
|
|
2411
2536
|
action(
|
|
2412
2537
|
source,
|
|
2413
|
-
|
|
2538
|
+
target,
|
|
2414
2539
|
setmetatable(
|
|
2415
2540
|
{fire = function()
|
|
2416
2541
|
UnitDamageTarget(
|
|
2417
2542
|
source.handle,
|
|
2418
|
-
target,
|
|
2543
|
+
target.handle,
|
|
2419
2544
|
data.amount,
|
|
2420
2545
|
true,
|
|
2421
2546
|
true,
|
|
2422
|
-
data.attackType,
|
|
2547
|
+
attackTypeToNative(data.attackType),
|
|
2423
2548
|
data.damageType,
|
|
2424
2549
|
data.weaponType
|
|
2425
2550
|
)
|
|
@@ -2446,30 +2571,54 @@ Unit.onDamage = __TS__New(
|
|
|
2446
2571
|
if source and source.typeId == dummyUnitId then
|
|
2447
2572
|
source = nil
|
|
2448
2573
|
end
|
|
2574
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2575
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2576
|
+
damagingEventByTarget[target] = nil
|
|
2449
2577
|
local data = {
|
|
2450
2578
|
amount = GetEventDamage(),
|
|
2451
|
-
attackType = BlzGetEventAttackType(),
|
|
2579
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2452
2580
|
damageType = BlzGetEventDamageType(),
|
|
2453
2581
|
weaponType = BlzGetEventWeaponType(),
|
|
2582
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2454
2583
|
isAttack = BlzGetEventIsAttack(),
|
|
2455
|
-
originalAmount = GetEventDamage(),
|
|
2584
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2585
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2456
2586
|
preventDeath = damageEventPreventDeath
|
|
2457
2587
|
}
|
|
2588
|
+
if damagingEvent then
|
|
2589
|
+
for key, value in pairs(damagingEvent) do
|
|
2590
|
+
if isAttribute(key) then
|
|
2591
|
+
data[key] = value
|
|
2592
|
+
end
|
|
2593
|
+
end
|
|
2594
|
+
local sourceOwner = damagingEvent[1]
|
|
2595
|
+
if sourceOwner then
|
|
2596
|
+
local targetOwner = damagingEvent[2]
|
|
2597
|
+
if damagingEvent[3] then
|
|
2598
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2599
|
+
end
|
|
2600
|
+
if damagingEvent[4] then
|
|
2601
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2602
|
+
end
|
|
2603
|
+
end
|
|
2604
|
+
end
|
|
2458
2605
|
local evData = setmetatable(
|
|
2459
2606
|
{},
|
|
2460
2607
|
{
|
|
2461
2608
|
__index = data,
|
|
2462
2609
|
__newindex = function(self, key, value)
|
|
2463
|
-
damageSetters[key]
|
|
2610
|
+
local damageSetter = damageSetters[key]
|
|
2611
|
+
if damageSetter ~= nil then
|
|
2612
|
+
damageSetter(value)
|
|
2613
|
+
end
|
|
2464
2614
|
data[key] = value
|
|
2465
2615
|
end
|
|
2466
2616
|
}
|
|
2467
2617
|
)
|
|
2468
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2469
2618
|
invoke(event, source, target, evData)
|
|
2470
2619
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2471
2620
|
local bonusHealth = math.ceil(evData.amount)
|
|
2472
|
-
target[
|
|
2621
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2473
2622
|
BlzSetUnitMaxHP(
|
|
2474
2623
|
target.handle,
|
|
2475
2624
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2483,7 +2632,7 @@ Unit.onDamage = __TS__New(
|
|
|
2483
2632
|
evData[0],
|
|
2484
2633
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2485
2634
|
)
|
|
2486
|
-
target[
|
|
2635
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2487
2636
|
SetWidgetLife(
|
|
2488
2637
|
target.handle,
|
|
2489
2638
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2508,8 +2657,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2508
2657
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2509
2658
|
function()
|
|
2510
2659
|
local unit = getTriggerUnit()
|
|
2511
|
-
|
|
2512
|
-
|
|
2660
|
+
local item = getManipulatedItem()
|
|
2661
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2662
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2513
2663
|
end
|
|
2514
2664
|
return IgnoreEvent
|
|
2515
2665
|
end
|
|
@@ -2518,9 +2668,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2518
2668
|
____exports.UnitTriggerEvent,
|
|
2519
2669
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2520
2670
|
function()
|
|
2521
|
-
local
|
|
2522
|
-
|
|
2523
|
-
|
|
2671
|
+
local unitHandle = getTriggerUnit()
|
|
2672
|
+
local itemHandle = getManipulatedItem()
|
|
2673
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2674
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2675
|
+
local item = Item:of(itemHandle)
|
|
2676
|
+
if item.owner ~= unit then
|
|
2677
|
+
return unit, item
|
|
2678
|
+
end
|
|
2524
2679
|
end
|
|
2525
2680
|
return IgnoreEvent
|
|
2526
2681
|
end
|
|
@@ -2528,12 +2683,79 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2528
2683
|
Unit.itemUsedEvent = __TS__New(
|
|
2529
2684
|
____exports.UnitTriggerEvent,
|
|
2530
2685
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2531
|
-
function()
|
|
2686
|
+
function()
|
|
2687
|
+
local unit = getTriggerUnit()
|
|
2688
|
+
local item = getManipulatedItem()
|
|
2689
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2690
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2691
|
+
end
|
|
2692
|
+
return IgnoreEvent
|
|
2693
|
+
end
|
|
2532
2694
|
)
|
|
2533
2695
|
Unit.itemStackedEvent = __TS__New(
|
|
2534
2696
|
____exports.UnitTriggerEvent,
|
|
2535
2697
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2536
|
-
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(
|
|
2698
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2699
|
+
)
|
|
2700
|
+
__TS__ObjectDefineProperty(
|
|
2701
|
+
Unit,
|
|
2702
|
+
"itemChargesChangedEvent",
|
|
2703
|
+
{get = function(self)
|
|
2704
|
+
local event = __TS__New(Event)
|
|
2705
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2706
|
+
local unit = item.owner
|
|
2707
|
+
if unit ~= nil then
|
|
2708
|
+
invoke(event, unit, item)
|
|
2709
|
+
end
|
|
2710
|
+
end)
|
|
2711
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2712
|
+
return event
|
|
2713
|
+
end}
|
|
2714
|
+
)
|
|
2715
|
+
__TS__ObjectDefineProperty(
|
|
2716
|
+
Unit,
|
|
2717
|
+
"itemUseOrderEvent",
|
|
2718
|
+
{get = function(self)
|
|
2719
|
+
local event = __TS__New(Event)
|
|
2720
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2721
|
+
local slot = order - orderId("useslot0")
|
|
2722
|
+
local function listener(unit)
|
|
2723
|
+
local item = unit.items[slot + 1]
|
|
2724
|
+
if item ~= nil then
|
|
2725
|
+
invoke(event, unit, item)
|
|
2726
|
+
end
|
|
2727
|
+
end
|
|
2728
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2729
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2730
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2731
|
+
end
|
|
2732
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2733
|
+
return event
|
|
2734
|
+
end}
|
|
2735
|
+
)
|
|
2736
|
+
__TS__ObjectDefineProperty(
|
|
2737
|
+
Unit,
|
|
2738
|
+
"itemMoveOrderEvent",
|
|
2739
|
+
{get = function(self)
|
|
2740
|
+
local event = __TS__New(Event)
|
|
2741
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2742
|
+
local slotTo = order - orderId("moveslot0")
|
|
2743
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2744
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2745
|
+
if slotFrom ~= nil then
|
|
2746
|
+
invoke(
|
|
2747
|
+
event,
|
|
2748
|
+
unit,
|
|
2749
|
+
item,
|
|
2750
|
+
slotFrom,
|
|
2751
|
+
slotTo
|
|
2752
|
+
)
|
|
2753
|
+
end
|
|
2754
|
+
end)
|
|
2755
|
+
end
|
|
2756
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2757
|
+
return event
|
|
2758
|
+
end}
|
|
2537
2759
|
)
|
|
2538
2760
|
__TS__ObjectDefineProperty(
|
|
2539
2761
|
Unit,
|