warscript 0.0.1-dev.22f399b → 0.0.1-dev.26f0c5f
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/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +6 -0
- package/core/types/frame.lua +91 -1
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +7 -8
- package/core/types/timer.lua +18 -21
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/native.d.ts +840 -786
- package/engine/behavior.d.ts +2 -2
- package/engine/behavior.lua +6 -6
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +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 +42 -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.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 +33 -0
- package/engine/behaviour/unit.lua +180 -4
- package/engine/buff.d.ts +102 -39
- package/engine/buff.lua +464 -203
- package/engine/internal/ability.d.ts +20 -13
- package/engine/internal/ability.lua +97 -76
- package/engine/internal/item/ability.lua +161 -4
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/item.d.ts +7 -4
- package/engine/internal/item.lua +131 -28
- 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/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 +6 -2
- package/engine/internal/unit/bonus.lua +23 -1
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +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 +2 -2
- 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 +25 -6
- package/engine/internal/unit.d.ts +53 -14
- package/engine/internal/unit.lua +400 -147
- 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/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 +89 -33
- 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 +10 -3
- package/engine/object-data/entry/unit-type.lua +155 -92
- 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 +26 -3
- package/engine/object-field/ability.lua +54 -1
- package/engine/object-field/unit.d.ts +50 -3
- package/engine/object-field/unit.lua +186 -7
- package/engine/object-field.d.ts +17 -6
- package/engine/object-field.lua +187 -89
- 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 +3 -0
- package/engine/standard/fields/unit.lua +5 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +175 -10
- package/engine/unit.d.ts +4 -0
- package/engine/unit.lua +4 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/buff.lua +2 -3
- 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/property.d.ts +55 -0
- package/property.lua +374 -0
- package/utility/arrays.d.ts +9 -1
- package/utility/arrays.lua +37 -3
- package/utility/functions.d.ts +1 -0
- package/utility/functions.lua +1 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +12 -2
- package/utility/linked-set.lua +8 -2
- package/utility/lua-maps.d.ts +4 -0
- package/utility/lua-maps.lua +20 -0
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +1 -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
|
|
@@ -125,8 +132,6 @@ local isUnitType = IsUnitType
|
|
|
125
132
|
local isUnitAlly = IsUnitAlly
|
|
126
133
|
local isUnitEnemy = IsUnitEnemy
|
|
127
134
|
local getOwningPlayer = GetOwningPlayer
|
|
128
|
-
local setUnitColor = SetUnitColor
|
|
129
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
130
135
|
____exports.UnitClassification = {}
|
|
131
136
|
local UnitClassification = ____exports.UnitClassification
|
|
132
137
|
do
|
|
@@ -136,6 +141,7 @@ do
|
|
|
136
141
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
137
142
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
138
143
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
144
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
139
145
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
140
146
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
141
147
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -343,6 +349,9 @@ local function dispatchAbility(event)
|
|
|
343
349
|
}
|
|
344
350
|
)
|
|
345
351
|
end
|
|
352
|
+
local function damagingEventPreventRetaliation(self)
|
|
353
|
+
self[0] = true
|
|
354
|
+
end
|
|
346
355
|
local function damageEventPreventDeath(self, callback, ...)
|
|
347
356
|
if self[0] ~= nil then
|
|
348
357
|
return
|
|
@@ -354,7 +363,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
354
363
|
rawset(self, 1 + i, (select(i, ...)))
|
|
355
364
|
end
|
|
356
365
|
end
|
|
357
|
-
local damageSetters = {
|
|
366
|
+
local damageSetters = {
|
|
367
|
+
amount = BlzSetEventDamage,
|
|
368
|
+
attackType = function(attackType)
|
|
369
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
370
|
+
end,
|
|
371
|
+
damageType = BlzSetEventDamageType,
|
|
372
|
+
weaponType = BlzSetEventWeaponType
|
|
373
|
+
}
|
|
358
374
|
local jlimitopByOperator = {
|
|
359
375
|
[0] = LESS_THAN_OR_EQUAL,
|
|
360
376
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -432,6 +448,19 @@ __TS__SetDescriptor(
|
|
|
432
448
|
},
|
|
433
449
|
true
|
|
434
450
|
)
|
|
451
|
+
__TS__SetDescriptor(
|
|
452
|
+
UnitWeapon.prototype,
|
|
453
|
+
"allowedTargetCombatClassifications",
|
|
454
|
+
{
|
|
455
|
+
get = function(self)
|
|
456
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
457
|
+
end,
|
|
458
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
459
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
460
|
+
end
|
|
461
|
+
},
|
|
462
|
+
true
|
|
463
|
+
)
|
|
435
464
|
__TS__SetDescriptor(
|
|
436
465
|
UnitWeapon.prototype,
|
|
437
466
|
"damageBase",
|
|
@@ -562,17 +591,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
591
|
____exports.Unit:of(unit)
|
|
563
592
|
)
|
|
564
593
|
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
594
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
595
|
local item = unitItemInSlot(unit, i)
|
|
578
596
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -630,15 +648,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
630
648
|
dummies[player] = dummy
|
|
631
649
|
end
|
|
632
650
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
651
|
+
local counter = (unit[103] or 0) - 1
|
|
634
652
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
653
|
+
unit[103] = counter
|
|
636
654
|
return
|
|
637
655
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
656
|
+
unit[103] = nil
|
|
657
|
+
local healthBonus = unit[104]
|
|
640
658
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
659
|
+
unit[104] = nil
|
|
642
660
|
local handle = unit.handle
|
|
643
661
|
BlzSetUnitMaxHP(
|
|
644
662
|
handle,
|
|
@@ -646,12 +664,53 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
664
|
)
|
|
647
665
|
end
|
|
648
666
|
end
|
|
667
|
+
local nextSyncId = 1
|
|
668
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
669
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
670
|
+
local function addAbility(unit, abilityTypeId)
|
|
671
|
+
local handle = unit.handle
|
|
672
|
+
if unitAddAbility(handle, abilityTypeId) then
|
|
673
|
+
local ability = UnitAbility:of(
|
|
674
|
+
checkNotNull(getUnitAbility(handle, abilityTypeId)),
|
|
675
|
+
abilityTypeId,
|
|
676
|
+
unit
|
|
677
|
+
)
|
|
678
|
+
local abilities = unit.abilities
|
|
679
|
+
abilities[#abilities + 1] = ability
|
|
680
|
+
return ability
|
|
681
|
+
end
|
|
682
|
+
return nil
|
|
683
|
+
end
|
|
684
|
+
local function getAbility(unit, abilityTypeId)
|
|
685
|
+
return UnitAbility:of(
|
|
686
|
+
getUnitAbility(unit.handle, abilityTypeId),
|
|
687
|
+
abilityTypeId,
|
|
688
|
+
unit
|
|
689
|
+
)
|
|
690
|
+
end
|
|
691
|
+
local function removeAbility(unit, abilityTypeId)
|
|
692
|
+
if unitRemoveAbility(unit.handle, abilityTypeId) then
|
|
693
|
+
local abilities = unit.abilities
|
|
694
|
+
for i = 1, #abilities do
|
|
695
|
+
if abilities[i].typeId == abilityTypeId then
|
|
696
|
+
abilities[i]:destroy()
|
|
697
|
+
tremove(abilities, i)
|
|
698
|
+
return true
|
|
699
|
+
end
|
|
700
|
+
end
|
|
701
|
+
return true
|
|
702
|
+
end
|
|
703
|
+
return false
|
|
704
|
+
end
|
|
649
705
|
____exports.Unit = __TS__Class()
|
|
650
706
|
local Unit = ____exports.Unit
|
|
651
707
|
Unit.name = "Unit"
|
|
652
708
|
__TS__ClassExtends(Unit, Handle)
|
|
653
709
|
function Unit.prototype.____constructor(self, handle)
|
|
654
710
|
Handle.prototype.____constructor(self, handle)
|
|
711
|
+
local ____nextSyncId_0 = nextSyncId
|
|
712
|
+
nextSyncId = ____nextSyncId_0 + 1
|
|
713
|
+
self.syncId = ____nextSyncId_0
|
|
655
714
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
715
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
657
716
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -664,6 +723,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
664
723
|
fourCC("Amrf")
|
|
665
724
|
))
|
|
666
725
|
end
|
|
726
|
+
unitBySyncId[self.syncId] = self
|
|
667
727
|
local ____ = self.abilities
|
|
668
728
|
end
|
|
669
729
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -682,6 +742,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
682
742
|
end
|
|
683
743
|
function Unit.prototype.onDestroy(self)
|
|
684
744
|
local handle = self.handle
|
|
745
|
+
self[107] = getUnitX(handle)
|
|
746
|
+
self[108] = getUnitY(handle)
|
|
685
747
|
if not self._owner then
|
|
686
748
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
687
749
|
end
|
|
@@ -749,8 +811,8 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
811
|
end}
|
|
750
812
|
end
|
|
751
813
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
814
|
+
local ____combatClassification_1 = combatClassification
|
|
815
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
|
|
754
816
|
end
|
|
755
817
|
function Unit.prototype.addClassification(self, classification)
|
|
756
818
|
return unitAddType(self.handle, classification)
|
|
@@ -768,13 +830,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
830
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
831
|
end
|
|
770
832
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
833
|
+
local ____temp_2
|
|
772
834
|
if type(x) == "number" then
|
|
773
|
-
|
|
835
|
+
____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
836
|
else
|
|
775
|
-
|
|
837
|
+
____temp_2 = isUnitInRange(self.handle, x.handle, y)
|
|
776
838
|
end
|
|
777
|
-
return
|
|
839
|
+
return ____temp_2
|
|
778
840
|
end
|
|
779
841
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
842
|
return isUnitAlly(
|
|
@@ -792,16 +854,28 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
792
854
|
if type(animation) == "number" then
|
|
793
855
|
setUnitAnimationByIndex(self.handle, animation)
|
|
794
856
|
elseif rarity then
|
|
795
|
-
|
|
857
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
796
858
|
else
|
|
797
859
|
setUnitAnimation(self.handle, animation)
|
|
798
860
|
end
|
|
799
861
|
end
|
|
862
|
+
function Unit.prototype.resetAnimation(self)
|
|
863
|
+
ResetUnitAnimation(self.handle)
|
|
864
|
+
end
|
|
800
865
|
function Unit.prototype.queueAnimation(self, animation)
|
|
801
|
-
|
|
866
|
+
QueueUnitAnimation(self.handle, animation)
|
|
867
|
+
end
|
|
868
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
869
|
+
if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
|
|
870
|
+
return self.firstWeapon
|
|
871
|
+
end
|
|
872
|
+
if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
|
|
873
|
+
return self.secondWeapon
|
|
874
|
+
end
|
|
875
|
+
return nil
|
|
802
876
|
end
|
|
803
877
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
878
|
+
self[103] = (self[103] or 0) + 1
|
|
805
879
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
880
|
end
|
|
807
881
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -811,21 +885,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
811
885
|
return IsUnitSelected(self.handle, player.handle)
|
|
812
886
|
end
|
|
813
887
|
function Unit.prototype.explode(self)
|
|
814
|
-
|
|
888
|
+
SetUnitExploded(self.handle, true)
|
|
815
889
|
killUnit(self.handle)
|
|
816
890
|
end
|
|
817
891
|
function Unit.prototype.kill(self)
|
|
818
892
|
killUnit(self.handle)
|
|
819
893
|
end
|
|
820
894
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
821
|
-
local
|
|
822
|
-
local
|
|
823
|
-
local
|
|
824
|
-
if
|
|
825
|
-
|
|
895
|
+
local ____ReviveHero_5 = ReviveHero
|
|
896
|
+
local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
|
|
897
|
+
local ____doEffect_3 = doEffect
|
|
898
|
+
if ____doEffect_3 == nil then
|
|
899
|
+
____doEffect_3 = false
|
|
826
900
|
end
|
|
827
|
-
__TS__SparseArrayPush(
|
|
828
|
-
|
|
901
|
+
__TS__SparseArrayPush(____array_4, ____doEffect_3)
|
|
902
|
+
____ReviveHero_5(__TS__SparseArraySpread(____array_4))
|
|
829
903
|
end
|
|
830
904
|
function Unit.prototype.healTarget(self, target, amount)
|
|
831
905
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -865,20 +939,16 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
865
939
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
866
940
|
end
|
|
867
941
|
function Unit.prototype.itemInSlot(self, slot)
|
|
868
|
-
return Item:of(
|
|
942
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
869
943
|
end
|
|
870
944
|
function Unit.prototype.addAbility(self, abilityId)
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
abilities[#abilities + 1] = ability
|
|
879
|
-
return ability
|
|
880
|
-
end
|
|
881
|
-
return nil
|
|
945
|
+
return doUnitAbilityAction(
|
|
946
|
+
self.handle,
|
|
947
|
+
abilityId,
|
|
948
|
+
addAbility,
|
|
949
|
+
self,
|
|
950
|
+
abilityId
|
|
951
|
+
)
|
|
882
952
|
end
|
|
883
953
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
884
954
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -893,30 +963,22 @@ function Unit.prototype.hasAbility(self, abilityId)
|
|
|
893
963
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
894
964
|
end
|
|
895
965
|
function Unit.prototype.getAbilityById(self, abilityId)
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
899
|
-
return nil
|
|
900
|
-
end
|
|
901
|
-
return UnitAbility:of(
|
|
902
|
-
getUnitAbility(self.handle, abilityId),
|
|
966
|
+
return doUnitAbilityAction(
|
|
967
|
+
self.handle,
|
|
903
968
|
abilityId,
|
|
904
|
-
|
|
969
|
+
getAbility,
|
|
970
|
+
self,
|
|
971
|
+
abilityId
|
|
905
972
|
)
|
|
906
973
|
end
|
|
907
974
|
function Unit.prototype.removeAbility(self, abilityId)
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
end
|
|
916
|
-
end
|
|
917
|
-
return true
|
|
918
|
-
end
|
|
919
|
-
return false
|
|
975
|
+
return doUnitAbilityAction(
|
|
976
|
+
self.handle,
|
|
977
|
+
abilityId,
|
|
978
|
+
removeAbility,
|
|
979
|
+
self,
|
|
980
|
+
abilityId
|
|
981
|
+
)
|
|
920
982
|
end
|
|
921
983
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
922
984
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -930,12 +992,34 @@ end
|
|
|
930
992
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
931
993
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
932
994
|
end
|
|
995
|
+
function Unit.prototype.interruptMovement(self)
|
|
996
|
+
local handle = self.handle
|
|
997
|
+
unitDisableAbility(
|
|
998
|
+
handle,
|
|
999
|
+
fourCC("Amov"),
|
|
1000
|
+
true,
|
|
1001
|
+
false
|
|
1002
|
+
)
|
|
1003
|
+
unitDisableAbility(
|
|
1004
|
+
handle,
|
|
1005
|
+
fourCC("Amov"),
|
|
1006
|
+
false,
|
|
1007
|
+
false
|
|
1008
|
+
)
|
|
1009
|
+
end
|
|
933
1010
|
function Unit.prototype.interruptAttack(self)
|
|
934
1011
|
unitInterruptAttack(self.handle)
|
|
935
1012
|
end
|
|
936
1013
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
937
|
-
|
|
938
|
-
unitDisableAbility(
|
|
1014
|
+
local handle = self.handle
|
|
1015
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
1016
|
+
Timer:run(
|
|
1017
|
+
unitDisableAbility,
|
|
1018
|
+
handle,
|
|
1019
|
+
abilityId,
|
|
1020
|
+
false,
|
|
1021
|
+
false
|
|
1022
|
+
)
|
|
939
1023
|
end
|
|
940
1024
|
function Unit.prototype.getDistanceTo(self, target)
|
|
941
1025
|
local handle = self.handle
|
|
@@ -995,18 +1079,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
995
1079
|
self:decrementStunCounter()
|
|
996
1080
|
end
|
|
997
1081
|
function Unit.prototype.incrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
1082
|
+
local stunCounter = self[102] or 0
|
|
1083
|
+
if not self[101] or stunCounter >= 0 then
|
|
1000
1084
|
BlzPauseUnitEx(self.handle, true)
|
|
1001
1085
|
end
|
|
1002
|
-
self[
|
|
1086
|
+
self[102] = stunCounter + 1
|
|
1003
1087
|
end
|
|
1004
1088
|
function Unit.prototype.decrementStunCounter(self)
|
|
1005
|
-
local stunCounter = self[
|
|
1006
|
-
if not self[
|
|
1089
|
+
local stunCounter = self[102] or 0
|
|
1090
|
+
if not self[101] or stunCounter >= 1 then
|
|
1007
1091
|
BlzPauseUnitEx(self.handle, false)
|
|
1008
1092
|
end
|
|
1009
|
-
self[
|
|
1093
|
+
self[102] = stunCounter - 1
|
|
1010
1094
|
end
|
|
1011
1095
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1012
1096
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1108,8 +1192,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1108
1192
|
)
|
|
1109
1193
|
return targetCollection
|
|
1110
1194
|
end
|
|
1111
|
-
function Unit.getSelectionOf(self, player)
|
|
1112
|
-
|
|
1195
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1196
|
+
if target == nil then
|
|
1197
|
+
target = {}
|
|
1198
|
+
end
|
|
1199
|
+
targetCollection = target
|
|
1113
1200
|
targetCollectionNextIndex = 1
|
|
1114
1201
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1115
1202
|
return targetCollection
|
|
@@ -1131,6 +1218,9 @@ end
|
|
|
1131
1218
|
function Unit.prototype.__tostring(self)
|
|
1132
1219
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1133
1220
|
end
|
|
1221
|
+
function Unit.getBySyncId(self, syncId)
|
|
1222
|
+
return unitBySyncId[syncId]
|
|
1223
|
+
end
|
|
1134
1224
|
__TS__SetDescriptor(
|
|
1135
1225
|
Unit.prototype,
|
|
1136
1226
|
"_deltas",
|
|
@@ -1194,6 +1284,14 @@ __TS__SetDescriptor(
|
|
|
1194
1284
|
end},
|
|
1195
1285
|
true
|
|
1196
1286
|
)
|
|
1287
|
+
__TS__SetDescriptor(
|
|
1288
|
+
Unit.prototype,
|
|
1289
|
+
"isStunned",
|
|
1290
|
+
{get = function(self)
|
|
1291
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1292
|
+
end},
|
|
1293
|
+
true
|
|
1294
|
+
)
|
|
1197
1295
|
__TS__SetDescriptor(
|
|
1198
1296
|
Unit.prototype,
|
|
1199
1297
|
"combatClassifications",
|
|
@@ -1267,6 +1365,19 @@ __TS__SetDescriptor(
|
|
|
1267
1365
|
},
|
|
1268
1366
|
true
|
|
1269
1367
|
)
|
|
1368
|
+
__TS__SetDescriptor(
|
|
1369
|
+
Unit.prototype,
|
|
1370
|
+
"primaryAttribute",
|
|
1371
|
+
{
|
|
1372
|
+
get = function(self)
|
|
1373
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1374
|
+
end,
|
|
1375
|
+
set = function(self, primaryAttribute)
|
|
1376
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1377
|
+
end
|
|
1378
|
+
},
|
|
1379
|
+
true
|
|
1380
|
+
)
|
|
1270
1381
|
__TS__SetDescriptor(
|
|
1271
1382
|
Unit.prototype,
|
|
1272
1383
|
"strengthBase",
|
|
@@ -1388,17 +1499,17 @@ __TS__SetDescriptor(
|
|
|
1388
1499
|
"isTeamGlowVisible",
|
|
1389
1500
|
{
|
|
1390
1501
|
get = function(self)
|
|
1391
|
-
return not self[
|
|
1502
|
+
return not self[106]
|
|
1392
1503
|
end,
|
|
1393
1504
|
set = function(self, isTeamGlowVisible)
|
|
1394
|
-
|
|
1395
|
-
local
|
|
1505
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1506
|
+
local ____temp_6
|
|
1396
1507
|
if not isTeamGlowVisible then
|
|
1397
|
-
|
|
1508
|
+
____temp_6 = true
|
|
1398
1509
|
else
|
|
1399
|
-
|
|
1510
|
+
____temp_6 = nil
|
|
1400
1511
|
end
|
|
1401
|
-
self[
|
|
1512
|
+
self[106] = ____temp_6
|
|
1402
1513
|
end
|
|
1403
1514
|
},
|
|
1404
1515
|
true
|
|
@@ -1407,9 +1518,9 @@ __TS__SetDescriptor(
|
|
|
1407
1518
|
Unit.prototype,
|
|
1408
1519
|
"color",
|
|
1409
1520
|
{set = function(self, color)
|
|
1410
|
-
|
|
1411
|
-
if self[
|
|
1412
|
-
|
|
1521
|
+
SetUnitColor(self.handle, color.handle)
|
|
1522
|
+
if self[106] then
|
|
1523
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1413
1524
|
end
|
|
1414
1525
|
end},
|
|
1415
1526
|
true
|
|
@@ -1432,14 +1543,14 @@ __TS__SetDescriptor(
|
|
|
1432
1543
|
"maxHealth",
|
|
1433
1544
|
{
|
|
1434
1545
|
get = function(self)
|
|
1435
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1546
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1436
1547
|
end,
|
|
1437
1548
|
set = function(self, maxHealth)
|
|
1438
|
-
if maxHealth < 1 and self[
|
|
1439
|
-
self[
|
|
1549
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1550
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1440
1551
|
maxHealth = 1
|
|
1441
1552
|
end
|
|
1442
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1553
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1443
1554
|
end
|
|
1444
1555
|
},
|
|
1445
1556
|
true
|
|
@@ -1481,10 +1592,10 @@ __TS__SetDescriptor(
|
|
|
1481
1592
|
"health",
|
|
1482
1593
|
{
|
|
1483
1594
|
get = function(self)
|
|
1484
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1595
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1485
1596
|
end,
|
|
1486
1597
|
set = function(self, health)
|
|
1487
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1598
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1488
1599
|
end
|
|
1489
1600
|
},
|
|
1490
1601
|
true
|
|
@@ -1578,7 +1689,7 @@ __TS__SetDescriptor(
|
|
|
1578
1689
|
"x",
|
|
1579
1690
|
{
|
|
1580
1691
|
get = function(self)
|
|
1581
|
-
return getUnitX(self.handle)
|
|
1692
|
+
return self[107] or getUnitX(self.handle)
|
|
1582
1693
|
end,
|
|
1583
1694
|
set = function(self, v)
|
|
1584
1695
|
SetUnitX(self.handle, v)
|
|
@@ -1591,7 +1702,7 @@ __TS__SetDescriptor(
|
|
|
1591
1702
|
"y",
|
|
1592
1703
|
{
|
|
1593
1704
|
get = function(self)
|
|
1594
|
-
return getUnitY(self.handle)
|
|
1705
|
+
return self[108] or getUnitY(self.handle)
|
|
1595
1706
|
end,
|
|
1596
1707
|
set = function(self, v)
|
|
1597
1708
|
SetUnitY(self.handle, v)
|
|
@@ -1677,10 +1788,10 @@ __TS__SetDescriptor(
|
|
|
1677
1788
|
"gold",
|
|
1678
1789
|
{
|
|
1679
1790
|
get = function(self)
|
|
1680
|
-
return
|
|
1791
|
+
return GetResourceAmount(self.handle)
|
|
1681
1792
|
end,
|
|
1682
1793
|
set = function(self, gold)
|
|
1683
|
-
|
|
1794
|
+
SetResourceAmount(self.handle, gold)
|
|
1684
1795
|
end
|
|
1685
1796
|
},
|
|
1686
1797
|
true
|
|
@@ -1695,17 +1806,17 @@ __TS__SetDescriptor(
|
|
|
1695
1806
|
set = function(self, isPaused)
|
|
1696
1807
|
local handle = self.handle
|
|
1697
1808
|
if isPaused and not IsUnitPaused(handle) then
|
|
1698
|
-
self[
|
|
1699
|
-
for _ = self[
|
|
1809
|
+
self[101] = true
|
|
1810
|
+
for _ = self[102] or 0, -1 do
|
|
1700
1811
|
BlzPauseUnitEx(handle, true)
|
|
1701
1812
|
end
|
|
1702
1813
|
PauseUnit(handle, true)
|
|
1703
1814
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1704
1815
|
PauseUnit(handle, false)
|
|
1705
|
-
for _ = self[
|
|
1816
|
+
for _ = self[102] or 0, -1 do
|
|
1706
1817
|
BlzPauseUnitEx(handle, false)
|
|
1707
1818
|
end
|
|
1708
|
-
self[
|
|
1819
|
+
self[101] = nil
|
|
1709
1820
|
end
|
|
1710
1821
|
end
|
|
1711
1822
|
},
|
|
@@ -1808,6 +1919,19 @@ __TS__SetDescriptor(
|
|
|
1808
1919
|
end},
|
|
1809
1920
|
true
|
|
1810
1921
|
)
|
|
1922
|
+
__TS__SetDescriptor(
|
|
1923
|
+
Unit.prototype,
|
|
1924
|
+
"movementType",
|
|
1925
|
+
{
|
|
1926
|
+
get = function(self)
|
|
1927
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1928
|
+
end,
|
|
1929
|
+
set = function(self, movementType)
|
|
1930
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1931
|
+
end
|
|
1932
|
+
},
|
|
1933
|
+
true
|
|
1934
|
+
)
|
|
1811
1935
|
__TS__SetDescriptor(
|
|
1812
1936
|
Unit.prototype,
|
|
1813
1937
|
"pathing",
|
|
@@ -1989,6 +2113,14 @@ __TS__SetDescriptor(
|
|
|
1989
2113
|
end},
|
|
1990
2114
|
true
|
|
1991
2115
|
)
|
|
2116
|
+
__TS__SetDescriptor(
|
|
2117
|
+
Unit.prototype,
|
|
2118
|
+
"targetAcquiredEvent",
|
|
2119
|
+
{get = function(self)
|
|
2120
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2121
|
+
end},
|
|
2122
|
+
true
|
|
2123
|
+
)
|
|
1992
2124
|
__TS__SetDescriptor(
|
|
1993
2125
|
Unit.prototype,
|
|
1994
2126
|
"onSelect",
|
|
@@ -2124,25 +2256,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2124
2256
|
InitializingEvent,
|
|
2125
2257
|
function(event)
|
|
2126
2258
|
local function listener(unit, id)
|
|
2127
|
-
local
|
|
2259
|
+
local ____GetSpellTargetUnit_result_9
|
|
2128
2260
|
if GetSpellTargetUnit() then
|
|
2129
|
-
|
|
2261
|
+
____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2130
2262
|
else
|
|
2131
|
-
local
|
|
2263
|
+
local ____GetSpellTargetItem_result_8
|
|
2132
2264
|
if GetSpellTargetItem() then
|
|
2133
|
-
|
|
2265
|
+
____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
|
|
2134
2266
|
else
|
|
2135
|
-
local
|
|
2267
|
+
local ____GetSpellTargetDestructable_result_7
|
|
2136
2268
|
if GetSpellTargetDestructable() then
|
|
2137
|
-
|
|
2269
|
+
____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
|
|
2138
2270
|
else
|
|
2139
|
-
|
|
2271
|
+
____GetSpellTargetDestructable_result_7 = nil
|
|
2140
2272
|
end
|
|
2141
|
-
|
|
2273
|
+
____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
|
|
2142
2274
|
end
|
|
2143
|
-
|
|
2275
|
+
____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
|
|
2144
2276
|
end
|
|
2145
|
-
local target =
|
|
2277
|
+
local target = ____GetSpellTargetUnit_result_9
|
|
2146
2278
|
if target then
|
|
2147
2279
|
invoke(event, unit, id, target)
|
|
2148
2280
|
end
|
|
@@ -2314,10 +2446,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2314
2446
|
____exports.UnitTriggerEvent,
|
|
2315
2447
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2316
2448
|
function()
|
|
2317
|
-
local
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2449
|
+
local handle = getOrderedUnit()
|
|
2450
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2451
|
+
local unit = ____exports.Unit:of(handle)
|
|
2452
|
+
if unit.state == 1 then
|
|
2453
|
+
return unit, getIssuedOrderId()
|
|
2454
|
+
end
|
|
2321
2455
|
end
|
|
2322
2456
|
return IgnoreEvent
|
|
2323
2457
|
end
|
|
@@ -2348,13 +2482,19 @@ Unit.onDamaging = (function()
|
|
|
2348
2482
|
if source and source.typeId == dummyUnitId then
|
|
2349
2483
|
source = nil
|
|
2350
2484
|
end
|
|
2351
|
-
local target = BlzGetEventDamageTarget()
|
|
2485
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2486
|
+
local metadata = damageMetadataByTarget[target]
|
|
2487
|
+
damageMetadataByTarget[target] = nil
|
|
2352
2488
|
local data = {
|
|
2353
2489
|
amount = GetEventDamage(),
|
|
2354
|
-
attackType = BlzGetEventAttackType(),
|
|
2490
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2355
2491
|
damageType = BlzGetEventDamageType(),
|
|
2356
2492
|
weaponType = BlzGetEventWeaponType(),
|
|
2357
|
-
|
|
2493
|
+
metadata = metadata,
|
|
2494
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2495
|
+
originalAmount = GetEventDamage(),
|
|
2496
|
+
originalMetadata = metadata,
|
|
2497
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2358
2498
|
}
|
|
2359
2499
|
if data.isAttack and source then
|
|
2360
2500
|
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 +2508,36 @@ Unit.onDamaging = (function()
|
|
|
2368
2508
|
invoke(
|
|
2369
2509
|
event,
|
|
2370
2510
|
source,
|
|
2371
|
-
|
|
2511
|
+
target,
|
|
2372
2512
|
setmetatable(
|
|
2373
2513
|
{},
|
|
2374
2514
|
{
|
|
2375
2515
|
__index = data,
|
|
2376
2516
|
__newindex = function(self, key, value)
|
|
2377
|
-
damageSetters[key]
|
|
2517
|
+
local damageSetter = damageSetters[key]
|
|
2518
|
+
if damageSetter ~= nil then
|
|
2519
|
+
damageSetter(value)
|
|
2520
|
+
end
|
|
2378
2521
|
data[key] = value
|
|
2379
2522
|
end
|
|
2380
2523
|
}
|
|
2381
2524
|
)
|
|
2382
2525
|
)
|
|
2526
|
+
if data[0] and source then
|
|
2527
|
+
local sourceOwner = source.owner.handle
|
|
2528
|
+
data[1] = sourceOwner
|
|
2529
|
+
local targetOwner = target.owner.handle
|
|
2530
|
+
data[2] = targetOwner
|
|
2531
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2532
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2533
|
+
data[3] = true
|
|
2534
|
+
end
|
|
2535
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2536
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2537
|
+
data[4] = true
|
|
2538
|
+
end
|
|
2539
|
+
end
|
|
2540
|
+
damagingEventByTarget[target] = data
|
|
2383
2541
|
return
|
|
2384
2542
|
end
|
|
2385
2543
|
BlzSetEventDamage(0)
|
|
@@ -2387,7 +2545,7 @@ Unit.onDamaging = (function()
|
|
|
2387
2545
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2388
2546
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2389
2547
|
local sourceOwner = source.owner.handle
|
|
2390
|
-
local targetOwner =
|
|
2548
|
+
local targetOwner = target.owner.handle
|
|
2391
2549
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2392
2550
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2393
2551
|
Timer:run(function()
|
|
@@ -2403,23 +2561,19 @@ Unit.onDamaging = (function()
|
|
|
2403
2561
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2404
2562
|
local condition = ____value[1]
|
|
2405
2563
|
local action = ____value[2]
|
|
2406
|
-
if condition(
|
|
2407
|
-
source,
|
|
2408
|
-
____exports.Unit:of(target),
|
|
2409
|
-
data
|
|
2410
|
-
) then
|
|
2564
|
+
if condition(source, target, data) then
|
|
2411
2565
|
action(
|
|
2412
2566
|
source,
|
|
2413
|
-
|
|
2567
|
+
target,
|
|
2414
2568
|
setmetatable(
|
|
2415
2569
|
{fire = function()
|
|
2416
2570
|
UnitDamageTarget(
|
|
2417
2571
|
source.handle,
|
|
2418
|
-
target,
|
|
2572
|
+
target.handle,
|
|
2419
2573
|
data.amount,
|
|
2420
2574
|
true,
|
|
2421
2575
|
true,
|
|
2422
|
-
data.attackType,
|
|
2576
|
+
attackTypeToNative(data.attackType),
|
|
2423
2577
|
data.damageType,
|
|
2424
2578
|
data.weaponType
|
|
2425
2579
|
)
|
|
@@ -2446,29 +2600,54 @@ Unit.onDamage = __TS__New(
|
|
|
2446
2600
|
if source and source.typeId == dummyUnitId then
|
|
2447
2601
|
source = nil
|
|
2448
2602
|
end
|
|
2603
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2604
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2605
|
+
damagingEventByTarget[target] = nil
|
|
2449
2606
|
local data = {
|
|
2450
2607
|
amount = GetEventDamage(),
|
|
2451
|
-
attackType = BlzGetEventAttackType(),
|
|
2608
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2452
2609
|
damageType = BlzGetEventDamageType(),
|
|
2453
2610
|
weaponType = BlzGetEventWeaponType(),
|
|
2611
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2454
2612
|
isAttack = BlzGetEventIsAttack(),
|
|
2613
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2614
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2455
2615
|
preventDeath = damageEventPreventDeath
|
|
2456
2616
|
}
|
|
2617
|
+
if damagingEvent then
|
|
2618
|
+
for key, value in pairs(damagingEvent) do
|
|
2619
|
+
if isAttribute(key) then
|
|
2620
|
+
data[key] = value
|
|
2621
|
+
end
|
|
2622
|
+
end
|
|
2623
|
+
local sourceOwner = damagingEvent[1]
|
|
2624
|
+
if sourceOwner then
|
|
2625
|
+
local targetOwner = damagingEvent[2]
|
|
2626
|
+
if damagingEvent[3] then
|
|
2627
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2628
|
+
end
|
|
2629
|
+
if damagingEvent[4] then
|
|
2630
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2631
|
+
end
|
|
2632
|
+
end
|
|
2633
|
+
end
|
|
2457
2634
|
local evData = setmetatable(
|
|
2458
2635
|
{},
|
|
2459
2636
|
{
|
|
2460
2637
|
__index = data,
|
|
2461
2638
|
__newindex = function(self, key, value)
|
|
2462
|
-
damageSetters[key]
|
|
2639
|
+
local damageSetter = damageSetters[key]
|
|
2640
|
+
if damageSetter ~= nil then
|
|
2641
|
+
damageSetter(value)
|
|
2642
|
+
end
|
|
2463
2643
|
data[key] = value
|
|
2464
2644
|
end
|
|
2465
2645
|
}
|
|
2466
2646
|
)
|
|
2467
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2468
2647
|
invoke(event, source, target, evData)
|
|
2469
2648
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2470
2649
|
local bonusHealth = math.ceil(evData.amount)
|
|
2471
|
-
target[
|
|
2650
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2472
2651
|
BlzSetUnitMaxHP(
|
|
2473
2652
|
target.handle,
|
|
2474
2653
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2482,7 +2661,7 @@ Unit.onDamage = __TS__New(
|
|
|
2482
2661
|
evData[0],
|
|
2483
2662
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2484
2663
|
)
|
|
2485
|
-
target[
|
|
2664
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2486
2665
|
SetWidgetLife(
|
|
2487
2666
|
target.handle,
|
|
2488
2667
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2502,32 +2681,106 @@ Unit.onDamage = __TS__New(
|
|
|
2502
2681
|
DestroyTrigger(trigger)
|
|
2503
2682
|
end
|
|
2504
2683
|
)
|
|
2505
|
-
Unit.
|
|
2684
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2506
2685
|
____exports.UnitTriggerEvent,
|
|
2507
2686
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2508
2687
|
function()
|
|
2509
2688
|
local unit = getTriggerUnit()
|
|
2510
|
-
|
|
2511
|
-
|
|
2689
|
+
local item = getManipulatedItem()
|
|
2690
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2691
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2512
2692
|
end
|
|
2513
2693
|
return IgnoreEvent
|
|
2514
2694
|
end
|
|
2515
2695
|
)
|
|
2516
|
-
Unit.
|
|
2696
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2517
2697
|
____exports.UnitTriggerEvent,
|
|
2518
2698
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2519
2699
|
function()
|
|
2520
2700
|
local unit = getTriggerUnit()
|
|
2521
|
-
|
|
2522
|
-
|
|
2701
|
+
local item = getManipulatedItem()
|
|
2702
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2703
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2523
2704
|
end
|
|
2524
2705
|
return IgnoreEvent
|
|
2525
2706
|
end
|
|
2526
2707
|
)
|
|
2527
|
-
Unit.
|
|
2708
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2528
2709
|
____exports.UnitTriggerEvent,
|
|
2529
2710
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2530
|
-
function()
|
|
2711
|
+
function()
|
|
2712
|
+
local unit = getTriggerUnit()
|
|
2713
|
+
local item = getManipulatedItem()
|
|
2714
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2715
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2716
|
+
end
|
|
2717
|
+
return IgnoreEvent
|
|
2718
|
+
end
|
|
2719
|
+
)
|
|
2720
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2721
|
+
____exports.UnitTriggerEvent,
|
|
2722
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2723
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2724
|
+
)
|
|
2725
|
+
__TS__ObjectDefineProperty(
|
|
2726
|
+
Unit,
|
|
2727
|
+
"itemChargesChangedEvent",
|
|
2728
|
+
{get = function(self)
|
|
2729
|
+
local event = __TS__New(Event)
|
|
2730
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2731
|
+
local unit = item.owner
|
|
2732
|
+
if unit ~= nil then
|
|
2733
|
+
invoke(event, unit, item)
|
|
2734
|
+
end
|
|
2735
|
+
end)
|
|
2736
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2737
|
+
return event
|
|
2738
|
+
end}
|
|
2739
|
+
)
|
|
2740
|
+
__TS__ObjectDefineProperty(
|
|
2741
|
+
Unit,
|
|
2742
|
+
"itemUseOrderEvent",
|
|
2743
|
+
{get = function(self)
|
|
2744
|
+
local event = __TS__New(Event)
|
|
2745
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2746
|
+
local slot = order - orderId("useslot0")
|
|
2747
|
+
local function listener(unit)
|
|
2748
|
+
local item = unit.items[slot + 1]
|
|
2749
|
+
if item ~= nil then
|
|
2750
|
+
invoke(event, unit, item)
|
|
2751
|
+
end
|
|
2752
|
+
end
|
|
2753
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2754
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2755
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2756
|
+
end
|
|
2757
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2758
|
+
return event
|
|
2759
|
+
end}
|
|
2760
|
+
)
|
|
2761
|
+
__TS__ObjectDefineProperty(
|
|
2762
|
+
Unit,
|
|
2763
|
+
"itemMoveOrderEvent",
|
|
2764
|
+
{get = function(self)
|
|
2765
|
+
local event = __TS__New(Event)
|
|
2766
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2767
|
+
local slotTo = order - orderId("moveslot0")
|
|
2768
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2769
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2770
|
+
if slotFrom ~= nil then
|
|
2771
|
+
invoke(
|
|
2772
|
+
event,
|
|
2773
|
+
unit,
|
|
2774
|
+
item,
|
|
2775
|
+
slotFrom,
|
|
2776
|
+
slotTo
|
|
2777
|
+
)
|
|
2778
|
+
end
|
|
2779
|
+
end)
|
|
2780
|
+
end
|
|
2781
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2782
|
+
return event
|
|
2783
|
+
end}
|
|
2531
2784
|
)
|
|
2532
2785
|
__TS__ObjectDefineProperty(
|
|
2533
2786
|
Unit,
|