warscript 0.0.1-dev.d30161d → 0.0.1-dev.d3265a5
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 +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 +6 -7
- 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 +112 -39
- package/engine/behaviour/unit.d.ts +22 -0
- package/engine/behaviour/unit.lua +134 -4
- package/engine/buff.d.ts +84 -43
- package/engine/buff.lua +385 -226
- package/engine/internal/ability.d.ts +20 -13
- package/engine/internal/ability.lua +97 -76
- package/engine/internal/item/ability.lua +112 -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 +15 -1
- package/engine/internal/unit/ability.lua +50 -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 +52 -13
- package/engine/internal/unit.lua +344 -116
- 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 +12 -1
- package/engine/text-tag.lua +44 -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/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,19 @@ 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
|
|
54
63
|
local match = string.match
|
|
55
64
|
local ____tostring = _G.tostring
|
|
56
65
|
local setUnitAnimation = SetUnitAnimation
|
|
57
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
58
66
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
59
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
60
67
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
61
68
|
local getUnitRealField = BlzGetUnitRealField
|
|
62
69
|
local getHeroStr = GetHeroStr
|
|
@@ -75,9 +82,9 @@ local setUnitScale = SetUnitScale
|
|
|
75
82
|
local setUnitPosition = SetUnitPosition
|
|
76
83
|
local setUnitTimeScale = SetUnitTimeScale
|
|
77
84
|
local getHandleId = GetHandleId
|
|
85
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
78
86
|
local createUnit = CreateUnit
|
|
79
87
|
local killUnit = KillUnit
|
|
80
|
-
local setUnitExploded = SetUnitExploded
|
|
81
88
|
local removeUnit = RemoveUnit
|
|
82
89
|
local getUnitTypeId = GetUnitTypeId
|
|
83
90
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -93,8 +100,6 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
93
100
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
94
101
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
95
102
|
local isUnitInRange = IsUnitInRange
|
|
96
|
-
local setResourceAmount = SetResourceAmount
|
|
97
|
-
local getResourceAmount = GetResourceAmount
|
|
98
103
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
99
104
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
100
105
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
@@ -125,8 +130,6 @@ local isUnitType = IsUnitType
|
|
|
125
130
|
local isUnitAlly = IsUnitAlly
|
|
126
131
|
local isUnitEnemy = IsUnitEnemy
|
|
127
132
|
local getOwningPlayer = GetOwningPlayer
|
|
128
|
-
local setUnitColor = SetUnitColor
|
|
129
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
130
133
|
____exports.UnitClassification = {}
|
|
131
134
|
local UnitClassification = ____exports.UnitClassification
|
|
132
135
|
do
|
|
@@ -136,6 +139,7 @@ do
|
|
|
136
139
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
137
140
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
138
141
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
142
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
139
143
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
140
144
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
141
145
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -343,6 +347,9 @@ local function dispatchAbility(event)
|
|
|
343
347
|
}
|
|
344
348
|
)
|
|
345
349
|
end
|
|
350
|
+
local function damagingEventPreventRetaliation(self)
|
|
351
|
+
self[0] = true
|
|
352
|
+
end
|
|
346
353
|
local function damageEventPreventDeath(self, callback, ...)
|
|
347
354
|
if self[0] ~= nil then
|
|
348
355
|
return
|
|
@@ -354,7 +361,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
354
361
|
rawset(self, 1 + i, (select(i, ...)))
|
|
355
362
|
end
|
|
356
363
|
end
|
|
357
|
-
local damageSetters = {
|
|
364
|
+
local damageSetters = {
|
|
365
|
+
amount = BlzSetEventDamage,
|
|
366
|
+
attackType = function(attackType)
|
|
367
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
368
|
+
end,
|
|
369
|
+
damageType = BlzSetEventDamageType,
|
|
370
|
+
weaponType = BlzSetEventWeaponType
|
|
371
|
+
}
|
|
358
372
|
local jlimitopByOperator = {
|
|
359
373
|
[0] = LESS_THAN_OR_EQUAL,
|
|
360
374
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -432,6 +446,19 @@ __TS__SetDescriptor(
|
|
|
432
446
|
},
|
|
433
447
|
true
|
|
434
448
|
)
|
|
449
|
+
__TS__SetDescriptor(
|
|
450
|
+
UnitWeapon.prototype,
|
|
451
|
+
"allowedTargetCombatClassifications",
|
|
452
|
+
{
|
|
453
|
+
get = function(self)
|
|
454
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
455
|
+
end,
|
|
456
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
457
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
458
|
+
end
|
|
459
|
+
},
|
|
460
|
+
true
|
|
461
|
+
)
|
|
435
462
|
__TS__SetDescriptor(
|
|
436
463
|
UnitWeapon.prototype,
|
|
437
464
|
"damageBase",
|
|
@@ -562,17 +589,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
589
|
____exports.Unit:of(unit)
|
|
563
590
|
)
|
|
564
591
|
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
592
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
593
|
local item = unitItemInSlot(unit, i)
|
|
578
594
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -630,15 +646,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
630
646
|
dummies[player] = dummy
|
|
631
647
|
end
|
|
632
648
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
649
|
+
local counter = (unit[103] or 0) - 1
|
|
634
650
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
651
|
+
unit[103] = counter
|
|
636
652
|
return
|
|
637
653
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
654
|
+
unit[103] = nil
|
|
655
|
+
local healthBonus = unit[104]
|
|
640
656
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
657
|
+
unit[104] = nil
|
|
642
658
|
local handle = unit.handle
|
|
643
659
|
BlzSetUnitMaxHP(
|
|
644
660
|
handle,
|
|
@@ -646,12 +662,18 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
662
|
)
|
|
647
663
|
end
|
|
648
664
|
end
|
|
665
|
+
local nextSyncId = 1
|
|
666
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
667
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
649
668
|
____exports.Unit = __TS__Class()
|
|
650
669
|
local Unit = ____exports.Unit
|
|
651
670
|
Unit.name = "Unit"
|
|
652
671
|
__TS__ClassExtends(Unit, Handle)
|
|
653
672
|
function Unit.prototype.____constructor(self, handle)
|
|
654
673
|
Handle.prototype.____constructor(self, handle)
|
|
674
|
+
local ____nextSyncId_0 = nextSyncId
|
|
675
|
+
nextSyncId = ____nextSyncId_0 + 1
|
|
676
|
+
self.syncId = ____nextSyncId_0
|
|
655
677
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
678
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
657
679
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -664,6 +686,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
664
686
|
fourCC("Amrf")
|
|
665
687
|
))
|
|
666
688
|
end
|
|
689
|
+
unitBySyncId[self.syncId] = self
|
|
667
690
|
local ____ = self.abilities
|
|
668
691
|
end
|
|
669
692
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -682,6 +705,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
682
705
|
end
|
|
683
706
|
function Unit.prototype.onDestroy(self)
|
|
684
707
|
local handle = self.handle
|
|
708
|
+
self[107] = getUnitX(handle)
|
|
709
|
+
self[108] = getUnitY(handle)
|
|
685
710
|
if not self._owner then
|
|
686
711
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
687
712
|
end
|
|
@@ -749,8 +774,8 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
774
|
end}
|
|
750
775
|
end
|
|
751
776
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
777
|
+
local ____combatClassification_1 = combatClassification
|
|
778
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
|
|
754
779
|
end
|
|
755
780
|
function Unit.prototype.addClassification(self, classification)
|
|
756
781
|
return unitAddType(self.handle, classification)
|
|
@@ -768,13 +793,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
793
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
794
|
end
|
|
770
795
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
796
|
+
local ____temp_2
|
|
772
797
|
if type(x) == "number" then
|
|
773
|
-
|
|
798
|
+
____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
799
|
else
|
|
775
|
-
|
|
800
|
+
____temp_2 = isUnitInRange(self.handle, x.handle, y)
|
|
776
801
|
end
|
|
777
|
-
return
|
|
802
|
+
return ____temp_2
|
|
778
803
|
end
|
|
779
804
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
805
|
return isUnitAlly(
|
|
@@ -792,16 +817,28 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
792
817
|
if type(animation) == "number" then
|
|
793
818
|
setUnitAnimationByIndex(self.handle, animation)
|
|
794
819
|
elseif rarity then
|
|
795
|
-
|
|
820
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
796
821
|
else
|
|
797
822
|
setUnitAnimation(self.handle, animation)
|
|
798
823
|
end
|
|
799
824
|
end
|
|
825
|
+
function Unit.prototype.resetAnimation(self)
|
|
826
|
+
ResetUnitAnimation(self.handle)
|
|
827
|
+
end
|
|
800
828
|
function Unit.prototype.queueAnimation(self, animation)
|
|
801
|
-
|
|
829
|
+
QueueUnitAnimation(self.handle, animation)
|
|
830
|
+
end
|
|
831
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
832
|
+
if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
|
|
833
|
+
return self.firstWeapon
|
|
834
|
+
end
|
|
835
|
+
if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
|
|
836
|
+
return self.secondWeapon
|
|
837
|
+
end
|
|
838
|
+
return nil
|
|
802
839
|
end
|
|
803
840
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
841
|
+
self[103] = (self[103] or 0) + 1
|
|
805
842
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
843
|
end
|
|
807
844
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -811,21 +848,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
811
848
|
return IsUnitSelected(self.handle, player.handle)
|
|
812
849
|
end
|
|
813
850
|
function Unit.prototype.explode(self)
|
|
814
|
-
|
|
851
|
+
SetUnitExploded(self.handle, true)
|
|
815
852
|
killUnit(self.handle)
|
|
816
853
|
end
|
|
817
854
|
function Unit.prototype.kill(self)
|
|
818
855
|
killUnit(self.handle)
|
|
819
856
|
end
|
|
820
857
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
821
|
-
local
|
|
822
|
-
local
|
|
823
|
-
local
|
|
824
|
-
if
|
|
825
|
-
|
|
858
|
+
local ____ReviveHero_5 = ReviveHero
|
|
859
|
+
local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
|
|
860
|
+
local ____doEffect_3 = doEffect
|
|
861
|
+
if ____doEffect_3 == nil then
|
|
862
|
+
____doEffect_3 = false
|
|
826
863
|
end
|
|
827
|
-
__TS__SparseArrayPush(
|
|
828
|
-
|
|
864
|
+
__TS__SparseArrayPush(____array_4, ____doEffect_3)
|
|
865
|
+
____ReviveHero_5(__TS__SparseArraySpread(____array_4))
|
|
829
866
|
end
|
|
830
867
|
function Unit.prototype.healTarget(self, target, amount)
|
|
831
868
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -865,7 +902,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
865
902
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
866
903
|
end
|
|
867
904
|
function Unit.prototype.itemInSlot(self, slot)
|
|
868
|
-
return Item:of(
|
|
905
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
869
906
|
end
|
|
870
907
|
function Unit.prototype.addAbility(self, abilityId)
|
|
871
908
|
if unitAddAbility(self.handle, abilityId) then
|
|
@@ -930,12 +967,34 @@ end
|
|
|
930
967
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
931
968
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
932
969
|
end
|
|
970
|
+
function Unit.prototype.interruptMovement(self)
|
|
971
|
+
local handle = self.handle
|
|
972
|
+
unitDisableAbility(
|
|
973
|
+
handle,
|
|
974
|
+
fourCC("Amov"),
|
|
975
|
+
true,
|
|
976
|
+
false
|
|
977
|
+
)
|
|
978
|
+
unitDisableAbility(
|
|
979
|
+
handle,
|
|
980
|
+
fourCC("Amov"),
|
|
981
|
+
false,
|
|
982
|
+
false
|
|
983
|
+
)
|
|
984
|
+
end
|
|
933
985
|
function Unit.prototype.interruptAttack(self)
|
|
934
986
|
unitInterruptAttack(self.handle)
|
|
935
987
|
end
|
|
936
988
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
937
|
-
|
|
938
|
-
unitDisableAbility(
|
|
989
|
+
local handle = self.handle
|
|
990
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
991
|
+
Timer:run(
|
|
992
|
+
unitDisableAbility,
|
|
993
|
+
handle,
|
|
994
|
+
abilityId,
|
|
995
|
+
false,
|
|
996
|
+
false
|
|
997
|
+
)
|
|
939
998
|
end
|
|
940
999
|
function Unit.prototype.getDistanceTo(self, target)
|
|
941
1000
|
local handle = self.handle
|
|
@@ -995,18 +1054,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
995
1054
|
self:decrementStunCounter()
|
|
996
1055
|
end
|
|
997
1056
|
function Unit.prototype.incrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
1057
|
+
local stunCounter = self[102] or 0
|
|
1058
|
+
if not self[101] or stunCounter >= 0 then
|
|
1000
1059
|
BlzPauseUnitEx(self.handle, true)
|
|
1001
1060
|
end
|
|
1002
|
-
self[
|
|
1061
|
+
self[102] = stunCounter + 1
|
|
1003
1062
|
end
|
|
1004
1063
|
function Unit.prototype.decrementStunCounter(self)
|
|
1005
|
-
local stunCounter = self[
|
|
1006
|
-
if not self[
|
|
1064
|
+
local stunCounter = self[102] or 0
|
|
1065
|
+
if not self[101] or stunCounter >= 1 then
|
|
1007
1066
|
BlzPauseUnitEx(self.handle, false)
|
|
1008
1067
|
end
|
|
1009
|
-
self[
|
|
1068
|
+
self[102] = stunCounter - 1
|
|
1010
1069
|
end
|
|
1011
1070
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1012
1071
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1108,8 +1167,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1108
1167
|
)
|
|
1109
1168
|
return targetCollection
|
|
1110
1169
|
end
|
|
1111
|
-
function Unit.getSelectionOf(self, player)
|
|
1112
|
-
|
|
1170
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1171
|
+
if target == nil then
|
|
1172
|
+
target = {}
|
|
1173
|
+
end
|
|
1174
|
+
targetCollection = target
|
|
1113
1175
|
targetCollectionNextIndex = 1
|
|
1114
1176
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1115
1177
|
return targetCollection
|
|
@@ -1131,6 +1193,9 @@ end
|
|
|
1131
1193
|
function Unit.prototype.__tostring(self)
|
|
1132
1194
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1133
1195
|
end
|
|
1196
|
+
function Unit.getBySyncId(self, syncId)
|
|
1197
|
+
return unitBySyncId[syncId]
|
|
1198
|
+
end
|
|
1134
1199
|
__TS__SetDescriptor(
|
|
1135
1200
|
Unit.prototype,
|
|
1136
1201
|
"_deltas",
|
|
@@ -1194,6 +1259,14 @@ __TS__SetDescriptor(
|
|
|
1194
1259
|
end},
|
|
1195
1260
|
true
|
|
1196
1261
|
)
|
|
1262
|
+
__TS__SetDescriptor(
|
|
1263
|
+
Unit.prototype,
|
|
1264
|
+
"isStunned",
|
|
1265
|
+
{get = function(self)
|
|
1266
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1267
|
+
end},
|
|
1268
|
+
true
|
|
1269
|
+
)
|
|
1197
1270
|
__TS__SetDescriptor(
|
|
1198
1271
|
Unit.prototype,
|
|
1199
1272
|
"combatClassifications",
|
|
@@ -1267,6 +1340,19 @@ __TS__SetDescriptor(
|
|
|
1267
1340
|
},
|
|
1268
1341
|
true
|
|
1269
1342
|
)
|
|
1343
|
+
__TS__SetDescriptor(
|
|
1344
|
+
Unit.prototype,
|
|
1345
|
+
"primaryAttribute",
|
|
1346
|
+
{
|
|
1347
|
+
get = function(self)
|
|
1348
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1349
|
+
end,
|
|
1350
|
+
set = function(self, primaryAttribute)
|
|
1351
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1352
|
+
end
|
|
1353
|
+
},
|
|
1354
|
+
true
|
|
1355
|
+
)
|
|
1270
1356
|
__TS__SetDescriptor(
|
|
1271
1357
|
Unit.prototype,
|
|
1272
1358
|
"strengthBase",
|
|
@@ -1388,17 +1474,17 @@ __TS__SetDescriptor(
|
|
|
1388
1474
|
"isTeamGlowVisible",
|
|
1389
1475
|
{
|
|
1390
1476
|
get = function(self)
|
|
1391
|
-
return not self[
|
|
1477
|
+
return not self[106]
|
|
1392
1478
|
end,
|
|
1393
1479
|
set = function(self, isTeamGlowVisible)
|
|
1394
|
-
|
|
1395
|
-
local
|
|
1480
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1481
|
+
local ____temp_6
|
|
1396
1482
|
if not isTeamGlowVisible then
|
|
1397
|
-
|
|
1483
|
+
____temp_6 = true
|
|
1398
1484
|
else
|
|
1399
|
-
|
|
1485
|
+
____temp_6 = nil
|
|
1400
1486
|
end
|
|
1401
|
-
self[
|
|
1487
|
+
self[106] = ____temp_6
|
|
1402
1488
|
end
|
|
1403
1489
|
},
|
|
1404
1490
|
true
|
|
@@ -1407,9 +1493,9 @@ __TS__SetDescriptor(
|
|
|
1407
1493
|
Unit.prototype,
|
|
1408
1494
|
"color",
|
|
1409
1495
|
{set = function(self, color)
|
|
1410
|
-
|
|
1411
|
-
if self[
|
|
1412
|
-
|
|
1496
|
+
SetUnitColor(self.handle, color.handle)
|
|
1497
|
+
if self[106] then
|
|
1498
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1413
1499
|
end
|
|
1414
1500
|
end},
|
|
1415
1501
|
true
|
|
@@ -1432,14 +1518,14 @@ __TS__SetDescriptor(
|
|
|
1432
1518
|
"maxHealth",
|
|
1433
1519
|
{
|
|
1434
1520
|
get = function(self)
|
|
1435
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1521
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1436
1522
|
end,
|
|
1437
1523
|
set = function(self, maxHealth)
|
|
1438
|
-
if maxHealth < 1 and self[
|
|
1439
|
-
self[
|
|
1524
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1525
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1440
1526
|
maxHealth = 1
|
|
1441
1527
|
end
|
|
1442
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1528
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1443
1529
|
end
|
|
1444
1530
|
},
|
|
1445
1531
|
true
|
|
@@ -1481,10 +1567,10 @@ __TS__SetDescriptor(
|
|
|
1481
1567
|
"health",
|
|
1482
1568
|
{
|
|
1483
1569
|
get = function(self)
|
|
1484
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1570
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1485
1571
|
end,
|
|
1486
1572
|
set = function(self, health)
|
|
1487
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1573
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1488
1574
|
end
|
|
1489
1575
|
},
|
|
1490
1576
|
true
|
|
@@ -1578,7 +1664,7 @@ __TS__SetDescriptor(
|
|
|
1578
1664
|
"x",
|
|
1579
1665
|
{
|
|
1580
1666
|
get = function(self)
|
|
1581
|
-
return getUnitX(self.handle)
|
|
1667
|
+
return self[107] or getUnitX(self.handle)
|
|
1582
1668
|
end,
|
|
1583
1669
|
set = function(self, v)
|
|
1584
1670
|
SetUnitX(self.handle, v)
|
|
@@ -1591,7 +1677,7 @@ __TS__SetDescriptor(
|
|
|
1591
1677
|
"y",
|
|
1592
1678
|
{
|
|
1593
1679
|
get = function(self)
|
|
1594
|
-
return getUnitY(self.handle)
|
|
1680
|
+
return self[108] or getUnitY(self.handle)
|
|
1595
1681
|
end,
|
|
1596
1682
|
set = function(self, v)
|
|
1597
1683
|
SetUnitY(self.handle, v)
|
|
@@ -1677,10 +1763,10 @@ __TS__SetDescriptor(
|
|
|
1677
1763
|
"gold",
|
|
1678
1764
|
{
|
|
1679
1765
|
get = function(self)
|
|
1680
|
-
return
|
|
1766
|
+
return GetResourceAmount(self.handle)
|
|
1681
1767
|
end,
|
|
1682
1768
|
set = function(self, gold)
|
|
1683
|
-
|
|
1769
|
+
SetResourceAmount(self.handle, gold)
|
|
1684
1770
|
end
|
|
1685
1771
|
},
|
|
1686
1772
|
true
|
|
@@ -1695,17 +1781,17 @@ __TS__SetDescriptor(
|
|
|
1695
1781
|
set = function(self, isPaused)
|
|
1696
1782
|
local handle = self.handle
|
|
1697
1783
|
if isPaused and not IsUnitPaused(handle) then
|
|
1698
|
-
self[
|
|
1699
|
-
for _ = self[
|
|
1784
|
+
self[101] = true
|
|
1785
|
+
for _ = self[102] or 0, -1 do
|
|
1700
1786
|
BlzPauseUnitEx(handle, true)
|
|
1701
1787
|
end
|
|
1702
1788
|
PauseUnit(handle, true)
|
|
1703
1789
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1704
1790
|
PauseUnit(handle, false)
|
|
1705
|
-
for _ = self[
|
|
1791
|
+
for _ = self[102] or 0, -1 do
|
|
1706
1792
|
BlzPauseUnitEx(handle, false)
|
|
1707
1793
|
end
|
|
1708
|
-
self[
|
|
1794
|
+
self[101] = nil
|
|
1709
1795
|
end
|
|
1710
1796
|
end
|
|
1711
1797
|
},
|
|
@@ -1808,6 +1894,19 @@ __TS__SetDescriptor(
|
|
|
1808
1894
|
end},
|
|
1809
1895
|
true
|
|
1810
1896
|
)
|
|
1897
|
+
__TS__SetDescriptor(
|
|
1898
|
+
Unit.prototype,
|
|
1899
|
+
"movementType",
|
|
1900
|
+
{
|
|
1901
|
+
get = function(self)
|
|
1902
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1903
|
+
end,
|
|
1904
|
+
set = function(self, movementType)
|
|
1905
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1906
|
+
end
|
|
1907
|
+
},
|
|
1908
|
+
true
|
|
1909
|
+
)
|
|
1811
1910
|
__TS__SetDescriptor(
|
|
1812
1911
|
Unit.prototype,
|
|
1813
1912
|
"pathing",
|
|
@@ -1989,6 +2088,14 @@ __TS__SetDescriptor(
|
|
|
1989
2088
|
end},
|
|
1990
2089
|
true
|
|
1991
2090
|
)
|
|
2091
|
+
__TS__SetDescriptor(
|
|
2092
|
+
Unit.prototype,
|
|
2093
|
+
"targetAcquiredEvent",
|
|
2094
|
+
{get = function(self)
|
|
2095
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2096
|
+
end},
|
|
2097
|
+
true
|
|
2098
|
+
)
|
|
1992
2099
|
__TS__SetDescriptor(
|
|
1993
2100
|
Unit.prototype,
|
|
1994
2101
|
"onSelect",
|
|
@@ -2124,25 +2231,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2124
2231
|
InitializingEvent,
|
|
2125
2232
|
function(event)
|
|
2126
2233
|
local function listener(unit, id)
|
|
2127
|
-
local
|
|
2234
|
+
local ____GetSpellTargetUnit_result_9
|
|
2128
2235
|
if GetSpellTargetUnit() then
|
|
2129
|
-
|
|
2236
|
+
____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2130
2237
|
else
|
|
2131
|
-
local
|
|
2238
|
+
local ____GetSpellTargetItem_result_8
|
|
2132
2239
|
if GetSpellTargetItem() then
|
|
2133
|
-
|
|
2240
|
+
____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
|
|
2134
2241
|
else
|
|
2135
|
-
local
|
|
2242
|
+
local ____GetSpellTargetDestructable_result_7
|
|
2136
2243
|
if GetSpellTargetDestructable() then
|
|
2137
|
-
|
|
2244
|
+
____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
|
|
2138
2245
|
else
|
|
2139
|
-
|
|
2246
|
+
____GetSpellTargetDestructable_result_7 = nil
|
|
2140
2247
|
end
|
|
2141
|
-
|
|
2248
|
+
____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
|
|
2142
2249
|
end
|
|
2143
|
-
|
|
2250
|
+
____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
|
|
2144
2251
|
end
|
|
2145
|
-
local target =
|
|
2252
|
+
local target = ____GetSpellTargetUnit_result_9
|
|
2146
2253
|
if target then
|
|
2147
2254
|
invoke(event, unit, id, target)
|
|
2148
2255
|
end
|
|
@@ -2314,10 +2421,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2314
2421
|
____exports.UnitTriggerEvent,
|
|
2315
2422
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2316
2423
|
function()
|
|
2317
|
-
local
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2424
|
+
local handle = getOrderedUnit()
|
|
2425
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2426
|
+
local unit = ____exports.Unit:of(handle)
|
|
2427
|
+
if unit.state == 1 then
|
|
2428
|
+
return unit, getIssuedOrderId()
|
|
2429
|
+
end
|
|
2321
2430
|
end
|
|
2322
2431
|
return IgnoreEvent
|
|
2323
2432
|
end
|
|
@@ -2348,13 +2457,19 @@ Unit.onDamaging = (function()
|
|
|
2348
2457
|
if source and source.typeId == dummyUnitId then
|
|
2349
2458
|
source = nil
|
|
2350
2459
|
end
|
|
2351
|
-
local target = BlzGetEventDamageTarget()
|
|
2460
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2461
|
+
local metadata = damageMetadataByTarget[target]
|
|
2462
|
+
damageMetadataByTarget[target] = nil
|
|
2352
2463
|
local data = {
|
|
2353
2464
|
amount = GetEventDamage(),
|
|
2354
|
-
attackType = BlzGetEventAttackType(),
|
|
2465
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2355
2466
|
damageType = BlzGetEventDamageType(),
|
|
2356
2467
|
weaponType = BlzGetEventWeaponType(),
|
|
2357
|
-
|
|
2468
|
+
metadata = metadata,
|
|
2469
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2470
|
+
originalAmount = GetEventDamage(),
|
|
2471
|
+
originalMetadata = metadata,
|
|
2472
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2358
2473
|
}
|
|
2359
2474
|
if data.isAttack and source then
|
|
2360
2475
|
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 +2483,36 @@ Unit.onDamaging = (function()
|
|
|
2368
2483
|
invoke(
|
|
2369
2484
|
event,
|
|
2370
2485
|
source,
|
|
2371
|
-
|
|
2486
|
+
target,
|
|
2372
2487
|
setmetatable(
|
|
2373
2488
|
{},
|
|
2374
2489
|
{
|
|
2375
2490
|
__index = data,
|
|
2376
2491
|
__newindex = function(self, key, value)
|
|
2377
|
-
damageSetters[key]
|
|
2492
|
+
local damageSetter = damageSetters[key]
|
|
2493
|
+
if damageSetter ~= nil then
|
|
2494
|
+
damageSetter(value)
|
|
2495
|
+
end
|
|
2378
2496
|
data[key] = value
|
|
2379
2497
|
end
|
|
2380
2498
|
}
|
|
2381
2499
|
)
|
|
2382
2500
|
)
|
|
2501
|
+
if data[0] and source then
|
|
2502
|
+
local sourceOwner = source.owner.handle
|
|
2503
|
+
data[1] = sourceOwner
|
|
2504
|
+
local targetOwner = target.owner.handle
|
|
2505
|
+
data[2] = targetOwner
|
|
2506
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2507
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2508
|
+
data[3] = true
|
|
2509
|
+
end
|
|
2510
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2511
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2512
|
+
data[4] = true
|
|
2513
|
+
end
|
|
2514
|
+
end
|
|
2515
|
+
damagingEventByTarget[target] = data
|
|
2383
2516
|
return
|
|
2384
2517
|
end
|
|
2385
2518
|
BlzSetEventDamage(0)
|
|
@@ -2387,7 +2520,7 @@ Unit.onDamaging = (function()
|
|
|
2387
2520
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2388
2521
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2389
2522
|
local sourceOwner = source.owner.handle
|
|
2390
|
-
local targetOwner =
|
|
2523
|
+
local targetOwner = target.owner.handle
|
|
2391
2524
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2392
2525
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2393
2526
|
Timer:run(function()
|
|
@@ -2403,23 +2536,19 @@ Unit.onDamaging = (function()
|
|
|
2403
2536
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2404
2537
|
local condition = ____value[1]
|
|
2405
2538
|
local action = ____value[2]
|
|
2406
|
-
if condition(
|
|
2407
|
-
source,
|
|
2408
|
-
____exports.Unit:of(target),
|
|
2409
|
-
data
|
|
2410
|
-
) then
|
|
2539
|
+
if condition(source, target, data) then
|
|
2411
2540
|
action(
|
|
2412
2541
|
source,
|
|
2413
|
-
|
|
2542
|
+
target,
|
|
2414
2543
|
setmetatable(
|
|
2415
2544
|
{fire = function()
|
|
2416
2545
|
UnitDamageTarget(
|
|
2417
2546
|
source.handle,
|
|
2418
|
-
target,
|
|
2547
|
+
target.handle,
|
|
2419
2548
|
data.amount,
|
|
2420
2549
|
true,
|
|
2421
2550
|
true,
|
|
2422
|
-
data.attackType,
|
|
2551
|
+
attackTypeToNative(data.attackType),
|
|
2423
2552
|
data.damageType,
|
|
2424
2553
|
data.weaponType
|
|
2425
2554
|
)
|
|
@@ -2446,29 +2575,54 @@ Unit.onDamage = __TS__New(
|
|
|
2446
2575
|
if source and source.typeId == dummyUnitId then
|
|
2447
2576
|
source = nil
|
|
2448
2577
|
end
|
|
2578
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2579
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2580
|
+
damagingEventByTarget[target] = nil
|
|
2449
2581
|
local data = {
|
|
2450
2582
|
amount = GetEventDamage(),
|
|
2451
|
-
attackType = BlzGetEventAttackType(),
|
|
2583
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2452
2584
|
damageType = BlzGetEventDamageType(),
|
|
2453
2585
|
weaponType = BlzGetEventWeaponType(),
|
|
2586
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2454
2587
|
isAttack = BlzGetEventIsAttack(),
|
|
2588
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2589
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2455
2590
|
preventDeath = damageEventPreventDeath
|
|
2456
2591
|
}
|
|
2592
|
+
if damagingEvent then
|
|
2593
|
+
for key, value in pairs(damagingEvent) do
|
|
2594
|
+
if isAttribute(key) then
|
|
2595
|
+
data[key] = value
|
|
2596
|
+
end
|
|
2597
|
+
end
|
|
2598
|
+
local sourceOwner = damagingEvent[1]
|
|
2599
|
+
if sourceOwner then
|
|
2600
|
+
local targetOwner = damagingEvent[2]
|
|
2601
|
+
if damagingEvent[3] then
|
|
2602
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2603
|
+
end
|
|
2604
|
+
if damagingEvent[4] then
|
|
2605
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2606
|
+
end
|
|
2607
|
+
end
|
|
2608
|
+
end
|
|
2457
2609
|
local evData = setmetatable(
|
|
2458
2610
|
{},
|
|
2459
2611
|
{
|
|
2460
2612
|
__index = data,
|
|
2461
2613
|
__newindex = function(self, key, value)
|
|
2462
|
-
damageSetters[key]
|
|
2614
|
+
local damageSetter = damageSetters[key]
|
|
2615
|
+
if damageSetter ~= nil then
|
|
2616
|
+
damageSetter(value)
|
|
2617
|
+
end
|
|
2463
2618
|
data[key] = value
|
|
2464
2619
|
end
|
|
2465
2620
|
}
|
|
2466
2621
|
)
|
|
2467
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2468
2622
|
invoke(event, source, target, evData)
|
|
2469
2623
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2470
2624
|
local bonusHealth = math.ceil(evData.amount)
|
|
2471
|
-
target[
|
|
2625
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2472
2626
|
BlzSetUnitMaxHP(
|
|
2473
2627
|
target.handle,
|
|
2474
2628
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2482,7 +2636,7 @@ Unit.onDamage = __TS__New(
|
|
|
2482
2636
|
evData[0],
|
|
2483
2637
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2484
2638
|
)
|
|
2485
|
-
target[
|
|
2639
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2486
2640
|
SetWidgetLife(
|
|
2487
2641
|
target.handle,
|
|
2488
2642
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2502,32 +2656,106 @@ Unit.onDamage = __TS__New(
|
|
|
2502
2656
|
DestroyTrigger(trigger)
|
|
2503
2657
|
end
|
|
2504
2658
|
)
|
|
2505
|
-
Unit.
|
|
2659
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2506
2660
|
____exports.UnitTriggerEvent,
|
|
2507
2661
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2508
2662
|
function()
|
|
2509
2663
|
local unit = getTriggerUnit()
|
|
2510
|
-
|
|
2511
|
-
|
|
2664
|
+
local item = getManipulatedItem()
|
|
2665
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2666
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2512
2667
|
end
|
|
2513
2668
|
return IgnoreEvent
|
|
2514
2669
|
end
|
|
2515
2670
|
)
|
|
2516
|
-
Unit.
|
|
2671
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2517
2672
|
____exports.UnitTriggerEvent,
|
|
2518
2673
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2519
2674
|
function()
|
|
2520
2675
|
local unit = getTriggerUnit()
|
|
2521
|
-
|
|
2522
|
-
|
|
2676
|
+
local item = getManipulatedItem()
|
|
2677
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2678
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2523
2679
|
end
|
|
2524
2680
|
return IgnoreEvent
|
|
2525
2681
|
end
|
|
2526
2682
|
)
|
|
2527
|
-
Unit.
|
|
2683
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2528
2684
|
____exports.UnitTriggerEvent,
|
|
2529
2685
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2530
|
-
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
|
|
2694
|
+
)
|
|
2695
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2696
|
+
____exports.UnitTriggerEvent,
|
|
2697
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2698
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) 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}
|
|
2531
2759
|
)
|
|
2532
2760
|
__TS__ObjectDefineProperty(
|
|
2533
2761
|
Unit,
|