warscript 0.0.1-dev.ccc2b77 → 0.0.1-dev.cdcfbc9
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 +3 -0
- package/core/types/frame.lua +83 -21
- package/core/types/player.lua +3 -1
- 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 +12 -1
- package/decl/native.d.ts +846 -790
- package/engine/behavior.d.ts +5 -0
- package/engine/behavior.lua +106 -27
- 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 +7 -3
- package/engine/behaviour/unit/stun-immunity.lua +52 -27
- package/engine/behaviour/unit.d.ts +34 -0
- package/engine/behaviour/unit.lua +190 -4
- package/engine/buff.d.ts +63 -45
- package/engine/buff.lua +300 -237
- package/engine/internal/ability.d.ts +22 -3
- package/engine/internal/ability.lua +133 -13
- 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 +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 +1 -0
- package/engine/internal/unit/item.lua +8 -4
- 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 +18 -5
- package/engine/internal/unit.d.ts +51 -15
- package/engine/internal/unit.lua +370 -151
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.lua +2 -1
- 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 +3 -1
- package/engine/object-data/entry/item-type.lua +15 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +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 +8 -4
- 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/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/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +249 -10
- package/engine/unit.d.ts +3 -0
- package/engine/unit.lua +3 -0
- package/objutil/buff.lua +2 -3
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +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 +1 -0
- package/utility/linked-set.lua +3 -0
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/internal/unit.lua
CHANGED
|
@@ -51,12 +51,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(
|
|
@@ -1134,6 +1189,9 @@ end
|
|
|
1134
1189
|
function Unit.prototype.__tostring(self)
|
|
1135
1190
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1136
1191
|
end
|
|
1192
|
+
function Unit.getBySyncId(self, syncId)
|
|
1193
|
+
return unitBySyncId[syncId]
|
|
1194
|
+
end
|
|
1137
1195
|
__TS__SetDescriptor(
|
|
1138
1196
|
Unit.prototype,
|
|
1139
1197
|
"_deltas",
|
|
@@ -1193,7 +1251,15 @@ __TS__SetDescriptor(
|
|
|
1193
1251
|
Unit.prototype,
|
|
1194
1252
|
"isIllusion",
|
|
1195
1253
|
{get = function(self)
|
|
1196
|
-
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")
|
|
1197
1263
|
end},
|
|
1198
1264
|
true
|
|
1199
1265
|
)
|
|
@@ -1270,6 +1336,19 @@ __TS__SetDescriptor(
|
|
|
1270
1336
|
},
|
|
1271
1337
|
true
|
|
1272
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
|
+
)
|
|
1273
1352
|
__TS__SetDescriptor(
|
|
1274
1353
|
Unit.prototype,
|
|
1275
1354
|
"strengthBase",
|
|
@@ -1391,17 +1470,17 @@ __TS__SetDescriptor(
|
|
|
1391
1470
|
"isTeamGlowVisible",
|
|
1392
1471
|
{
|
|
1393
1472
|
get = function(self)
|
|
1394
|
-
return not self[
|
|
1473
|
+
return not self[106]
|
|
1395
1474
|
end,
|
|
1396
1475
|
set = function(self, isTeamGlowVisible)
|
|
1397
|
-
|
|
1398
|
-
local
|
|
1476
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1477
|
+
local ____temp_7
|
|
1399
1478
|
if not isTeamGlowVisible then
|
|
1400
|
-
|
|
1479
|
+
____temp_7 = true
|
|
1401
1480
|
else
|
|
1402
|
-
|
|
1481
|
+
____temp_7 = nil
|
|
1403
1482
|
end
|
|
1404
|
-
self[
|
|
1483
|
+
self[106] = ____temp_7
|
|
1405
1484
|
end
|
|
1406
1485
|
},
|
|
1407
1486
|
true
|
|
@@ -1410,9 +1489,9 @@ __TS__SetDescriptor(
|
|
|
1410
1489
|
Unit.prototype,
|
|
1411
1490
|
"color",
|
|
1412
1491
|
{set = function(self, color)
|
|
1413
|
-
|
|
1414
|
-
if self[
|
|
1415
|
-
|
|
1492
|
+
SetUnitColor(self.handle, color.handle)
|
|
1493
|
+
if self[106] then
|
|
1494
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1416
1495
|
end
|
|
1417
1496
|
end},
|
|
1418
1497
|
true
|
|
@@ -1435,14 +1514,14 @@ __TS__SetDescriptor(
|
|
|
1435
1514
|
"maxHealth",
|
|
1436
1515
|
{
|
|
1437
1516
|
get = function(self)
|
|
1438
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1517
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1439
1518
|
end,
|
|
1440
1519
|
set = function(self, maxHealth)
|
|
1441
|
-
if maxHealth < 1 and self[
|
|
1442
|
-
self[
|
|
1520
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1521
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1443
1522
|
maxHealth = 1
|
|
1444
1523
|
end
|
|
1445
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1524
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1446
1525
|
end
|
|
1447
1526
|
},
|
|
1448
1527
|
true
|
|
@@ -1484,10 +1563,10 @@ __TS__SetDescriptor(
|
|
|
1484
1563
|
"health",
|
|
1485
1564
|
{
|
|
1486
1565
|
get = function(self)
|
|
1487
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1566
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1488
1567
|
end,
|
|
1489
1568
|
set = function(self, health)
|
|
1490
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1569
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1491
1570
|
end
|
|
1492
1571
|
},
|
|
1493
1572
|
true
|
|
@@ -1581,7 +1660,7 @@ __TS__SetDescriptor(
|
|
|
1581
1660
|
"x",
|
|
1582
1661
|
{
|
|
1583
1662
|
get = function(self)
|
|
1584
|
-
return getUnitX(self.handle)
|
|
1663
|
+
return self[107] or getUnitX(self.handle)
|
|
1585
1664
|
end,
|
|
1586
1665
|
set = function(self, v)
|
|
1587
1666
|
SetUnitX(self.handle, v)
|
|
@@ -1594,7 +1673,7 @@ __TS__SetDescriptor(
|
|
|
1594
1673
|
"y",
|
|
1595
1674
|
{
|
|
1596
1675
|
get = function(self)
|
|
1597
|
-
return getUnitY(self.handle)
|
|
1676
|
+
return self[108] or getUnitY(self.handle)
|
|
1598
1677
|
end,
|
|
1599
1678
|
set = function(self, v)
|
|
1600
1679
|
SetUnitY(self.handle, v)
|
|
@@ -1680,10 +1759,10 @@ __TS__SetDescriptor(
|
|
|
1680
1759
|
"gold",
|
|
1681
1760
|
{
|
|
1682
1761
|
get = function(self)
|
|
1683
|
-
return
|
|
1762
|
+
return GetResourceAmount(self.handle)
|
|
1684
1763
|
end,
|
|
1685
1764
|
set = function(self, gold)
|
|
1686
|
-
|
|
1765
|
+
SetResourceAmount(self.handle, gold)
|
|
1687
1766
|
end
|
|
1688
1767
|
},
|
|
1689
1768
|
true
|
|
@@ -1698,17 +1777,17 @@ __TS__SetDescriptor(
|
|
|
1698
1777
|
set = function(self, isPaused)
|
|
1699
1778
|
local handle = self.handle
|
|
1700
1779
|
if isPaused and not IsUnitPaused(handle) then
|
|
1701
|
-
self[
|
|
1702
|
-
for _ = self[
|
|
1780
|
+
self[101] = true
|
|
1781
|
+
for _ = self[102] or 0, -1 do
|
|
1703
1782
|
BlzPauseUnitEx(handle, true)
|
|
1704
1783
|
end
|
|
1705
1784
|
PauseUnit(handle, true)
|
|
1706
1785
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1707
1786
|
PauseUnit(handle, false)
|
|
1708
|
-
for _ = self[
|
|
1787
|
+
for _ = self[102] or 0, -1 do
|
|
1709
1788
|
BlzPauseUnitEx(handle, false)
|
|
1710
1789
|
end
|
|
1711
|
-
self[
|
|
1790
|
+
self[101] = nil
|
|
1712
1791
|
end
|
|
1713
1792
|
end
|
|
1714
1793
|
},
|
|
@@ -1811,6 +1890,19 @@ __TS__SetDescriptor(
|
|
|
1811
1890
|
end},
|
|
1812
1891
|
true
|
|
1813
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
|
+
)
|
|
1814
1906
|
__TS__SetDescriptor(
|
|
1815
1907
|
Unit.prototype,
|
|
1816
1908
|
"pathing",
|
|
@@ -1992,6 +2084,14 @@ __TS__SetDescriptor(
|
|
|
1992
2084
|
end},
|
|
1993
2085
|
true
|
|
1994
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
|
+
)
|
|
1995
2095
|
__TS__SetDescriptor(
|
|
1996
2096
|
Unit.prototype,
|
|
1997
2097
|
"onSelect",
|
|
@@ -2127,25 +2227,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2127
2227
|
InitializingEvent,
|
|
2128
2228
|
function(event)
|
|
2129
2229
|
local function listener(unit, id)
|
|
2130
|
-
local
|
|
2230
|
+
local ____GetSpellTargetUnit_result_10
|
|
2131
2231
|
if GetSpellTargetUnit() then
|
|
2132
|
-
|
|
2232
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2133
2233
|
else
|
|
2134
|
-
local
|
|
2234
|
+
local ____GetSpellTargetItem_result_9
|
|
2135
2235
|
if GetSpellTargetItem() then
|
|
2136
|
-
|
|
2236
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2137
2237
|
else
|
|
2138
|
-
local
|
|
2238
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2139
2239
|
if GetSpellTargetDestructable() then
|
|
2140
|
-
|
|
2240
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2141
2241
|
else
|
|
2142
|
-
|
|
2242
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2143
2243
|
end
|
|
2144
|
-
|
|
2244
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2145
2245
|
end
|
|
2146
|
-
|
|
2246
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2147
2247
|
end
|
|
2148
|
-
local target =
|
|
2248
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2149
2249
|
if target then
|
|
2150
2250
|
invoke(event, unit, id, target)
|
|
2151
2251
|
end
|
|
@@ -2317,10 +2417,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2317
2417
|
____exports.UnitTriggerEvent,
|
|
2318
2418
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2319
2419
|
function()
|
|
2320
|
-
local
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
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
|
|
2324
2426
|
end
|
|
2325
2427
|
return IgnoreEvent
|
|
2326
2428
|
end
|
|
@@ -2351,13 +2453,19 @@ Unit.onDamaging = (function()
|
|
|
2351
2453
|
if source and source.typeId == dummyUnitId then
|
|
2352
2454
|
source = nil
|
|
2353
2455
|
end
|
|
2354
|
-
local target = BlzGetEventDamageTarget()
|
|
2456
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2457
|
+
local metadata = damageMetadataByTarget[target]
|
|
2458
|
+
damageMetadataByTarget[target] = nil
|
|
2355
2459
|
local data = {
|
|
2356
2460
|
amount = GetEventDamage(),
|
|
2357
|
-
attackType = BlzGetEventAttackType(),
|
|
2461
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2358
2462
|
damageType = BlzGetEventDamageType(),
|
|
2359
2463
|
weaponType = BlzGetEventWeaponType(),
|
|
2360
|
-
|
|
2464
|
+
metadata = metadata,
|
|
2465
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2466
|
+
originalAmount = GetEventDamage(),
|
|
2467
|
+
originalMetadata = metadata,
|
|
2468
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2361
2469
|
}
|
|
2362
2470
|
if data.isAttack and source then
|
|
2363
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
|
|
@@ -2371,18 +2479,36 @@ Unit.onDamaging = (function()
|
|
|
2371
2479
|
invoke(
|
|
2372
2480
|
event,
|
|
2373
2481
|
source,
|
|
2374
|
-
|
|
2482
|
+
target,
|
|
2375
2483
|
setmetatable(
|
|
2376
2484
|
{},
|
|
2377
2485
|
{
|
|
2378
2486
|
__index = data,
|
|
2379
2487
|
__newindex = function(self, key, value)
|
|
2380
|
-
damageSetters[key]
|
|
2488
|
+
local damageSetter = damageSetters[key]
|
|
2489
|
+
if damageSetter ~= nil then
|
|
2490
|
+
damageSetter(value)
|
|
2491
|
+
end
|
|
2381
2492
|
data[key] = value
|
|
2382
2493
|
end
|
|
2383
2494
|
}
|
|
2384
2495
|
)
|
|
2385
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
|
|
2386
2512
|
return
|
|
2387
2513
|
end
|
|
2388
2514
|
BlzSetEventDamage(0)
|
|
@@ -2390,7 +2516,7 @@ Unit.onDamaging = (function()
|
|
|
2390
2516
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2391
2517
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2392
2518
|
local sourceOwner = source.owner.handle
|
|
2393
|
-
local targetOwner =
|
|
2519
|
+
local targetOwner = target.owner.handle
|
|
2394
2520
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2395
2521
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2396
2522
|
Timer:run(function()
|
|
@@ -2406,23 +2532,19 @@ Unit.onDamaging = (function()
|
|
|
2406
2532
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2407
2533
|
local condition = ____value[1]
|
|
2408
2534
|
local action = ____value[2]
|
|
2409
|
-
if condition(
|
|
2410
|
-
source,
|
|
2411
|
-
____exports.Unit:of(target),
|
|
2412
|
-
data
|
|
2413
|
-
) then
|
|
2535
|
+
if condition(source, target, data) then
|
|
2414
2536
|
action(
|
|
2415
2537
|
source,
|
|
2416
|
-
|
|
2538
|
+
target,
|
|
2417
2539
|
setmetatable(
|
|
2418
2540
|
{fire = function()
|
|
2419
2541
|
UnitDamageTarget(
|
|
2420
2542
|
source.handle,
|
|
2421
|
-
target,
|
|
2543
|
+
target.handle,
|
|
2422
2544
|
data.amount,
|
|
2423
2545
|
true,
|
|
2424
2546
|
true,
|
|
2425
|
-
data.attackType,
|
|
2547
|
+
attackTypeToNative(data.attackType),
|
|
2426
2548
|
data.damageType,
|
|
2427
2549
|
data.weaponType
|
|
2428
2550
|
)
|
|
@@ -2449,30 +2571,54 @@ Unit.onDamage = __TS__New(
|
|
|
2449
2571
|
if source and source.typeId == dummyUnitId then
|
|
2450
2572
|
source = nil
|
|
2451
2573
|
end
|
|
2574
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2575
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2576
|
+
damagingEventByTarget[target] = nil
|
|
2452
2577
|
local data = {
|
|
2453
2578
|
amount = GetEventDamage(),
|
|
2454
|
-
attackType = BlzGetEventAttackType(),
|
|
2579
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2455
2580
|
damageType = BlzGetEventDamageType(),
|
|
2456
2581
|
weaponType = BlzGetEventWeaponType(),
|
|
2582
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2457
2583
|
isAttack = BlzGetEventIsAttack(),
|
|
2458
|
-
originalAmount = GetEventDamage(),
|
|
2584
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2585
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2459
2586
|
preventDeath = damageEventPreventDeath
|
|
2460
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
|
|
2461
2605
|
local evData = setmetatable(
|
|
2462
2606
|
{},
|
|
2463
2607
|
{
|
|
2464
2608
|
__index = data,
|
|
2465
2609
|
__newindex = function(self, key, value)
|
|
2466
|
-
damageSetters[key]
|
|
2610
|
+
local damageSetter = damageSetters[key]
|
|
2611
|
+
if damageSetter ~= nil then
|
|
2612
|
+
damageSetter(value)
|
|
2613
|
+
end
|
|
2467
2614
|
data[key] = value
|
|
2468
2615
|
end
|
|
2469
2616
|
}
|
|
2470
2617
|
)
|
|
2471
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2472
2618
|
invoke(event, source, target, evData)
|
|
2473
2619
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2474
2620
|
local bonusHealth = math.ceil(evData.amount)
|
|
2475
|
-
target[
|
|
2621
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2476
2622
|
BlzSetUnitMaxHP(
|
|
2477
2623
|
target.handle,
|
|
2478
2624
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2486,7 +2632,7 @@ Unit.onDamage = __TS__New(
|
|
|
2486
2632
|
evData[0],
|
|
2487
2633
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2488
2634
|
)
|
|
2489
|
-
target[
|
|
2635
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2490
2636
|
SetWidgetLife(
|
|
2491
2637
|
target.handle,
|
|
2492
2638
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2511,8 +2657,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2511
2657
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2512
2658
|
function()
|
|
2513
2659
|
local unit = getTriggerUnit()
|
|
2514
|
-
|
|
2515
|
-
|
|
2660
|
+
local item = getManipulatedItem()
|
|
2661
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2662
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2516
2663
|
end
|
|
2517
2664
|
return IgnoreEvent
|
|
2518
2665
|
end
|
|
@@ -2521,9 +2668,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2521
2668
|
____exports.UnitTriggerEvent,
|
|
2522
2669
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2523
2670
|
function()
|
|
2524
|
-
local
|
|
2525
|
-
|
|
2526
|
-
|
|
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
|
|
2527
2679
|
end
|
|
2528
2680
|
return IgnoreEvent
|
|
2529
2681
|
end
|
|
@@ -2531,12 +2683,79 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2531
2683
|
Unit.itemUsedEvent = __TS__New(
|
|
2532
2684
|
____exports.UnitTriggerEvent,
|
|
2533
2685
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2534
|
-
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
|
|
2535
2694
|
)
|
|
2536
2695
|
Unit.itemStackedEvent = __TS__New(
|
|
2537
2696
|
____exports.UnitTriggerEvent,
|
|
2538
2697
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2539
|
-
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}
|
|
2540
2759
|
)
|
|
2541
2760
|
__TS__ObjectDefineProperty(
|
|
2542
2761
|
Unit,
|