warscript 0.0.1-dev.240d8a6 → 0.0.1-dev.256ff3b
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.lua +10 -12
- package/core/types/player.lua +3 -1
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +79 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +8 -8
- package/core/types/timer.lua +39 -23
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -1
- package/decl/native.d.ts +844 -788
- package/engine/behavior.d.ts +2 -0
- package/engine/behavior.lua +53 -27
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +20 -4
- package/engine/behaviour/ability.lua +111 -47
- package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
- package/engine/behaviour/unit/stun-immunity.lua +43 -27
- package/engine/behaviour/unit.d.ts +32 -0
- package/engine/behaviour/unit.lua +185 -4
- package/engine/buff.d.ts +63 -45
- package/engine/buff.lua +300 -237
- package/engine/internal/ability.d.ts +20 -3
- package/engine/internal/ability.lua +125 -13
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +7 -4
- package/engine/internal/item.lua +141 -35
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +98 -14
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +17 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +1 -1
- package/engine/internal/unit/item.lua +6 -12
- package/engine/internal/unit/main-selected.d.ts +6 -0
- package/engine/internal/unit/main-selected.lua +12 -1
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +9 -2
- package/engine/internal/unit.d.ts +35 -11
- package/engine/internal/unit.lua +326 -145
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -17
- package/engine/object-data/entry/ability-type.lua +90 -36
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.d.ts +3 -1
- package/engine/object-data/entry/item-type.lua +15 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +21 -5
- package/engine/object-data/entry/unit-type.lua +214 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +12 -6
- package/engine/object-field/ability.lua +8 -4
- package/engine/object-field/unit.d.ts +57 -3
- package/engine/object-field/unit.lua +207 -7
- package/engine/object-field.d.ts +17 -6
- package/engine/object-field.lua +190 -90
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- package/engine/standard/fields/unit.d.ts +4 -0
- package/engine/standard/fields/unit.lua +7 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +249 -10
- package/engine/unit.d.ts +2 -0
- package/engine/unit.lua +2 -0
- package/objutil/buff.lua +1 -2
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/utility/arrays.d.ts +9 -1
- package/utility/arrays.lua +37 -3
- package/utility/callback-array.d.ts +13 -0
- package/utility/callback-array.lua +46 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +3 -0
- package/utility/lua-maps.d.ts +4 -0
- package/utility/lua-maps.lua +20 -0
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/internal/unit.lua
CHANGED
|
@@ -51,12 +51,21 @@ local ____arrays = require("utility.arrays")
|
|
|
51
51
|
local forEach = ____arrays.forEach
|
|
52
52
|
local ____math = require("math")
|
|
53
53
|
local min = ____math.min
|
|
54
|
+
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
55
|
+
local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
|
|
56
|
+
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
57
|
+
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
58
|
+
local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
|
|
59
|
+
local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
|
|
60
|
+
local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
|
|
61
|
+
local ____attributes = require("attributes")
|
|
62
|
+
local isAttribute = ____attributes.isAttribute
|
|
63
|
+
local ____ability = require("engine.internal.item.ability")
|
|
64
|
+
local doUnitAbilityAction = ____ability.doUnitAbilityAction
|
|
54
65
|
local match = string.match
|
|
55
66
|
local ____tostring = _G.tostring
|
|
56
67
|
local setUnitAnimation = SetUnitAnimation
|
|
57
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
58
68
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
59
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
60
69
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
61
70
|
local getUnitRealField = BlzGetUnitRealField
|
|
62
71
|
local getHeroStr = GetHeroStr
|
|
@@ -75,9 +84,9 @@ local setUnitScale = SetUnitScale
|
|
|
75
84
|
local setUnitPosition = SetUnitPosition
|
|
76
85
|
local setUnitTimeScale = SetUnitTimeScale
|
|
77
86
|
local getHandleId = GetHandleId
|
|
87
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
78
88
|
local createUnit = CreateUnit
|
|
79
89
|
local killUnit = KillUnit
|
|
80
|
-
local setUnitExploded = SetUnitExploded
|
|
81
90
|
local removeUnit = RemoveUnit
|
|
82
91
|
local getUnitTypeId = GetUnitTypeId
|
|
83
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -93,8 +102,6 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
93
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
94
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
95
104
|
local isUnitInRange = IsUnitInRange
|
|
96
|
-
local setResourceAmount = SetResourceAmount
|
|
97
|
-
local getResourceAmount = GetResourceAmount
|
|
98
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
99
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
100
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
@@ -118,15 +125,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
118
125
|
local getIssuedOrderId = GetIssuedOrderId
|
|
119
126
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
120
127
|
local unitAlive = UnitAlive
|
|
121
|
-
local unitAddType = UnitAddType
|
|
122
|
-
local unitRemoveType = UnitRemoveType
|
|
123
|
-
local isUnitIllusion = IsUnitIllusion
|
|
124
|
-
local isUnitType = IsUnitType
|
|
125
128
|
local isUnitAlly = IsUnitAlly
|
|
126
129
|
local isUnitEnemy = IsUnitEnemy
|
|
127
130
|
local getOwningPlayer = GetOwningPlayer
|
|
128
|
-
local setUnitColor = SetUnitColor
|
|
129
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
130
131
|
____exports.UnitClassification = {}
|
|
131
132
|
local UnitClassification = ____exports.UnitClassification
|
|
132
133
|
do
|
|
@@ -136,6 +137,7 @@ do
|
|
|
136
137
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
137
138
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
138
139
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
140
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
139
141
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
140
142
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
141
143
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -343,6 +345,9 @@ local function dispatchAbility(event)
|
|
|
343
345
|
}
|
|
344
346
|
)
|
|
345
347
|
end
|
|
348
|
+
local function damagingEventPreventRetaliation(self)
|
|
349
|
+
self[0] = true
|
|
350
|
+
end
|
|
346
351
|
local function damageEventPreventDeath(self, callback, ...)
|
|
347
352
|
if self[0] ~= nil then
|
|
348
353
|
return
|
|
@@ -354,7 +359,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
354
359
|
rawset(self, 1 + i, (select(i, ...)))
|
|
355
360
|
end
|
|
356
361
|
end
|
|
357
|
-
local damageSetters = {
|
|
362
|
+
local damageSetters = {
|
|
363
|
+
amount = BlzSetEventDamage,
|
|
364
|
+
attackType = function(attackType)
|
|
365
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
366
|
+
end,
|
|
367
|
+
damageType = BlzSetEventDamageType,
|
|
368
|
+
weaponType = BlzSetEventWeaponType
|
|
369
|
+
}
|
|
358
370
|
local jlimitopByOperator = {
|
|
359
371
|
[0] = LESS_THAN_OR_EQUAL,
|
|
360
372
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -432,6 +444,19 @@ __TS__SetDescriptor(
|
|
|
432
444
|
},
|
|
433
445
|
true
|
|
434
446
|
)
|
|
447
|
+
__TS__SetDescriptor(
|
|
448
|
+
UnitWeapon.prototype,
|
|
449
|
+
"allowedTargetCombatClassifications",
|
|
450
|
+
{
|
|
451
|
+
get = function(self)
|
|
452
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
453
|
+
end,
|
|
454
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
455
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
456
|
+
end
|
|
457
|
+
},
|
|
458
|
+
true
|
|
459
|
+
)
|
|
435
460
|
__TS__SetDescriptor(
|
|
436
461
|
UnitWeapon.prototype,
|
|
437
462
|
"damageBase",
|
|
@@ -562,17 +587,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
587
|
____exports.Unit:of(unit)
|
|
563
588
|
)
|
|
564
589
|
end
|
|
565
|
-
if not unitAddAbility(unit, abilityId) then
|
|
566
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
567
|
-
return UnitAbility:of(
|
|
568
|
-
ability,
|
|
569
|
-
abilityId,
|
|
570
|
-
____exports.Unit:of(unit)
|
|
571
|
-
)
|
|
572
|
-
end
|
|
573
|
-
else
|
|
574
|
-
unitRemoveAbility(unit, abilityId)
|
|
575
|
-
end
|
|
576
590
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
591
|
local item = unitItemInSlot(unit, i)
|
|
578
592
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -647,16 +661,26 @@ local function delayHealthChecksCallback(unit)
|
|
|
647
661
|
end
|
|
648
662
|
end
|
|
649
663
|
local nextSyncId = 1
|
|
650
|
-
local unitBySyncId = setmetatable({}, {__mode = "
|
|
664
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
665
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
666
|
+
local function addAbility(unit, abilityTypeId)
|
|
667
|
+
local ____unitAddAbility_result_0
|
|
668
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
669
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
670
|
+
else
|
|
671
|
+
____unitAddAbility_result_0 = nil
|
|
672
|
+
end
|
|
673
|
+
return ____unitAddAbility_result_0
|
|
674
|
+
end
|
|
651
675
|
____exports.Unit = __TS__Class()
|
|
652
676
|
local Unit = ____exports.Unit
|
|
653
677
|
Unit.name = "Unit"
|
|
654
678
|
__TS__ClassExtends(Unit, Handle)
|
|
655
679
|
function Unit.prototype.____constructor(self, handle)
|
|
656
680
|
Handle.prototype.____constructor(self, handle)
|
|
657
|
-
local
|
|
658
|
-
nextSyncId =
|
|
659
|
-
self.syncId =
|
|
681
|
+
local ____nextSyncId_1 = nextSyncId
|
|
682
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
683
|
+
self.syncId = ____nextSyncId_1
|
|
660
684
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
661
685
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
662
686
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -688,6 +712,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
688
712
|
end
|
|
689
713
|
function Unit.prototype.onDestroy(self)
|
|
690
714
|
local handle = self.handle
|
|
715
|
+
self[107] = getUnitX(handle)
|
|
716
|
+
self[108] = getUnitY(handle)
|
|
691
717
|
if not self._owner then
|
|
692
718
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
693
719
|
end
|
|
@@ -755,17 +781,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
755
781
|
end}
|
|
756
782
|
end
|
|
757
783
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
758
|
-
local
|
|
759
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
784
|
+
local ____combatClassification_2 = combatClassification
|
|
785
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
760
786
|
end
|
|
761
787
|
function Unit.prototype.addClassification(self, classification)
|
|
762
|
-
return
|
|
788
|
+
return UnitAddType(self.handle, classification)
|
|
763
789
|
end
|
|
764
790
|
function Unit.prototype.removeClassification(self, classification)
|
|
765
|
-
return
|
|
791
|
+
return UnitRemoveType(self.handle, classification)
|
|
766
792
|
end
|
|
767
793
|
function Unit.prototype.hasClassification(self, classification)
|
|
768
|
-
return
|
|
794
|
+
return IsUnitType(self.handle, classification)
|
|
769
795
|
end
|
|
770
796
|
function Unit.prototype.isVisibleTo(self, player)
|
|
771
797
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -774,13 +800,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
774
800
|
return isUnitInvisible(self.handle, player.handle)
|
|
775
801
|
end
|
|
776
802
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
777
|
-
local
|
|
803
|
+
local ____temp_3
|
|
778
804
|
if type(x) == "number" then
|
|
779
|
-
|
|
805
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
780
806
|
else
|
|
781
|
-
|
|
807
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
782
808
|
end
|
|
783
|
-
return
|
|
809
|
+
return ____temp_3
|
|
784
810
|
end
|
|
785
811
|
function Unit.prototype.isAllyOf(self, unit)
|
|
786
812
|
return isUnitAlly(
|
|
@@ -798,13 +824,25 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
798
824
|
if type(animation) == "number" then
|
|
799
825
|
setUnitAnimationByIndex(self.handle, animation)
|
|
800
826
|
elseif rarity then
|
|
801
|
-
|
|
827
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
802
828
|
else
|
|
803
829
|
setUnitAnimation(self.handle, animation)
|
|
804
830
|
end
|
|
805
831
|
end
|
|
832
|
+
function Unit.prototype.resetAnimation(self)
|
|
833
|
+
ResetUnitAnimation(self.handle)
|
|
834
|
+
end
|
|
806
835
|
function Unit.prototype.queueAnimation(self, animation)
|
|
807
|
-
|
|
836
|
+
QueueUnitAnimation(self.handle, animation)
|
|
837
|
+
end
|
|
838
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
839
|
+
if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
|
|
840
|
+
return self.firstWeapon
|
|
841
|
+
end
|
|
842
|
+
if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
|
|
843
|
+
return self.secondWeapon
|
|
844
|
+
end
|
|
845
|
+
return nil
|
|
808
846
|
end
|
|
809
847
|
function Unit.prototype.delayHealthChecks(self)
|
|
810
848
|
self[103] = (self[103] or 0) + 1
|
|
@@ -817,21 +855,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
817
855
|
return IsUnitSelected(self.handle, player.handle)
|
|
818
856
|
end
|
|
819
857
|
function Unit.prototype.explode(self)
|
|
820
|
-
|
|
858
|
+
SetUnitExploded(self.handle, true)
|
|
821
859
|
killUnit(self.handle)
|
|
822
860
|
end
|
|
823
861
|
function Unit.prototype.kill(self)
|
|
824
862
|
killUnit(self.handle)
|
|
825
863
|
end
|
|
826
864
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
827
|
-
local
|
|
828
|
-
local
|
|
829
|
-
local
|
|
830
|
-
if
|
|
831
|
-
|
|
865
|
+
local ____ReviveHero_6 = ReviveHero
|
|
866
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
867
|
+
local ____doEffect_4 = doEffect
|
|
868
|
+
if ____doEffect_4 == nil then
|
|
869
|
+
____doEffect_4 = false
|
|
832
870
|
end
|
|
833
|
-
__TS__SparseArrayPush(
|
|
834
|
-
|
|
871
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
872
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
835
873
|
end
|
|
836
874
|
function Unit.prototype.healTarget(self, target, amount)
|
|
837
875
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -874,17 +912,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
874
912
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
875
913
|
end
|
|
876
914
|
function Unit.prototype.addAbility(self, abilityId)
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
915
|
+
local ability = UnitAbility:of(
|
|
916
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
917
|
+
abilityId,
|
|
918
|
+
self
|
|
919
|
+
)
|
|
920
|
+
if ability ~= nil then
|
|
883
921
|
local abilities = self.abilities
|
|
884
922
|
abilities[#abilities + 1] = ability
|
|
885
|
-
return ability
|
|
886
923
|
end
|
|
887
|
-
return
|
|
924
|
+
return ability
|
|
888
925
|
end
|
|
889
926
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
890
927
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -899,28 +936,17 @@ function Unit.prototype.hasAbility(self, abilityId)
|
|
|
899
936
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
900
937
|
end
|
|
901
938
|
function Unit.prototype.getAbilityById(self, abilityId)
|
|
902
|
-
local
|
|
903
|
-
|
|
904
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
905
|
-
return nil
|
|
906
|
-
end
|
|
907
|
-
return UnitAbility:of(
|
|
908
|
-
getUnitAbility(self.handle, abilityId),
|
|
909
|
-
abilityId,
|
|
910
|
-
self
|
|
911
|
-
)
|
|
939
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
940
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
912
941
|
end
|
|
913
942
|
function Unit.prototype.removeAbility(self, abilityId)
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
return true
|
|
921
|
-
end
|
|
943
|
+
local abilities = self.abilities
|
|
944
|
+
for i = 1, #abilities do
|
|
945
|
+
if abilities[i].typeId == abilityId then
|
|
946
|
+
abilities[i]:destroy()
|
|
947
|
+
tremove(abilities, i)
|
|
948
|
+
return true
|
|
922
949
|
end
|
|
923
|
-
return true
|
|
924
950
|
end
|
|
925
951
|
return false
|
|
926
952
|
end
|
|
@@ -936,12 +962,34 @@ end
|
|
|
936
962
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
937
963
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
938
964
|
end
|
|
965
|
+
function Unit.prototype.interruptMovement(self)
|
|
966
|
+
local handle = self.handle
|
|
967
|
+
unitDisableAbility(
|
|
968
|
+
handle,
|
|
969
|
+
fourCC("Amov"),
|
|
970
|
+
true,
|
|
971
|
+
false
|
|
972
|
+
)
|
|
973
|
+
unitDisableAbility(
|
|
974
|
+
handle,
|
|
975
|
+
fourCC("Amov"),
|
|
976
|
+
false,
|
|
977
|
+
false
|
|
978
|
+
)
|
|
979
|
+
end
|
|
939
980
|
function Unit.prototype.interruptAttack(self)
|
|
940
981
|
unitInterruptAttack(self.handle)
|
|
941
982
|
end
|
|
942
983
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
943
|
-
|
|
944
|
-
unitDisableAbility(
|
|
984
|
+
local handle = self.handle
|
|
985
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
986
|
+
Timer:run(
|
|
987
|
+
unitDisableAbility,
|
|
988
|
+
handle,
|
|
989
|
+
abilityId,
|
|
990
|
+
false,
|
|
991
|
+
false
|
|
992
|
+
)
|
|
945
993
|
end
|
|
946
994
|
function Unit.prototype.getDistanceTo(self, target)
|
|
947
995
|
local handle = self.handle
|
|
@@ -1202,7 +1250,15 @@ __TS__SetDescriptor(
|
|
|
1202
1250
|
Unit.prototype,
|
|
1203
1251
|
"isIllusion",
|
|
1204
1252
|
{get = function(self)
|
|
1205
|
-
return
|
|
1253
|
+
return IsUnitIllusion(self.handle)
|
|
1254
|
+
end},
|
|
1255
|
+
true
|
|
1256
|
+
)
|
|
1257
|
+
__TS__SetDescriptor(
|
|
1258
|
+
Unit.prototype,
|
|
1259
|
+
"isStunned",
|
|
1260
|
+
{get = function(self)
|
|
1261
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1206
1262
|
end},
|
|
1207
1263
|
true
|
|
1208
1264
|
)
|
|
@@ -1279,6 +1335,19 @@ __TS__SetDescriptor(
|
|
|
1279
1335
|
},
|
|
1280
1336
|
true
|
|
1281
1337
|
)
|
|
1338
|
+
__TS__SetDescriptor(
|
|
1339
|
+
Unit.prototype,
|
|
1340
|
+
"primaryAttribute",
|
|
1341
|
+
{
|
|
1342
|
+
get = function(self)
|
|
1343
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1344
|
+
end,
|
|
1345
|
+
set = function(self, primaryAttribute)
|
|
1346
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1347
|
+
end
|
|
1348
|
+
},
|
|
1349
|
+
true
|
|
1350
|
+
)
|
|
1282
1351
|
__TS__SetDescriptor(
|
|
1283
1352
|
Unit.prototype,
|
|
1284
1353
|
"strengthBase",
|
|
@@ -1403,14 +1472,14 @@ __TS__SetDescriptor(
|
|
|
1403
1472
|
return not self[106]
|
|
1404
1473
|
end,
|
|
1405
1474
|
set = function(self, isTeamGlowVisible)
|
|
1406
|
-
|
|
1407
|
-
local
|
|
1475
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1476
|
+
local ____temp_7
|
|
1408
1477
|
if not isTeamGlowVisible then
|
|
1409
|
-
|
|
1478
|
+
____temp_7 = true
|
|
1410
1479
|
else
|
|
1411
|
-
|
|
1480
|
+
____temp_7 = nil
|
|
1412
1481
|
end
|
|
1413
|
-
self[106] =
|
|
1482
|
+
self[106] = ____temp_7
|
|
1414
1483
|
end
|
|
1415
1484
|
},
|
|
1416
1485
|
true
|
|
@@ -1419,9 +1488,9 @@ __TS__SetDescriptor(
|
|
|
1419
1488
|
Unit.prototype,
|
|
1420
1489
|
"color",
|
|
1421
1490
|
{set = function(self, color)
|
|
1422
|
-
|
|
1491
|
+
SetUnitColor(self.handle, color.handle)
|
|
1423
1492
|
if self[106] then
|
|
1424
|
-
|
|
1493
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1425
1494
|
end
|
|
1426
1495
|
end},
|
|
1427
1496
|
true
|
|
@@ -1590,7 +1659,7 @@ __TS__SetDescriptor(
|
|
|
1590
1659
|
"x",
|
|
1591
1660
|
{
|
|
1592
1661
|
get = function(self)
|
|
1593
|
-
return getUnitX(self.handle)
|
|
1662
|
+
return self[107] or getUnitX(self.handle)
|
|
1594
1663
|
end,
|
|
1595
1664
|
set = function(self, v)
|
|
1596
1665
|
SetUnitX(self.handle, v)
|
|
@@ -1603,7 +1672,7 @@ __TS__SetDescriptor(
|
|
|
1603
1672
|
"y",
|
|
1604
1673
|
{
|
|
1605
1674
|
get = function(self)
|
|
1606
|
-
return getUnitY(self.handle)
|
|
1675
|
+
return self[108] or getUnitY(self.handle)
|
|
1607
1676
|
end,
|
|
1608
1677
|
set = function(self, v)
|
|
1609
1678
|
SetUnitY(self.handle, v)
|
|
@@ -1689,10 +1758,10 @@ __TS__SetDescriptor(
|
|
|
1689
1758
|
"gold",
|
|
1690
1759
|
{
|
|
1691
1760
|
get = function(self)
|
|
1692
|
-
return
|
|
1761
|
+
return GetResourceAmount(self.handle)
|
|
1693
1762
|
end,
|
|
1694
1763
|
set = function(self, gold)
|
|
1695
|
-
|
|
1764
|
+
SetResourceAmount(self.handle, gold)
|
|
1696
1765
|
end
|
|
1697
1766
|
},
|
|
1698
1767
|
true
|
|
@@ -1820,6 +1889,19 @@ __TS__SetDescriptor(
|
|
|
1820
1889
|
end},
|
|
1821
1890
|
true
|
|
1822
1891
|
)
|
|
1892
|
+
__TS__SetDescriptor(
|
|
1893
|
+
Unit.prototype,
|
|
1894
|
+
"movementType",
|
|
1895
|
+
{
|
|
1896
|
+
get = function(self)
|
|
1897
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1898
|
+
end,
|
|
1899
|
+
set = function(self, movementType)
|
|
1900
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1901
|
+
end
|
|
1902
|
+
},
|
|
1903
|
+
true
|
|
1904
|
+
)
|
|
1823
1905
|
__TS__SetDescriptor(
|
|
1824
1906
|
Unit.prototype,
|
|
1825
1907
|
"pathing",
|
|
@@ -2001,6 +2083,14 @@ __TS__SetDescriptor(
|
|
|
2001
2083
|
end},
|
|
2002
2084
|
true
|
|
2003
2085
|
)
|
|
2086
|
+
__TS__SetDescriptor(
|
|
2087
|
+
Unit.prototype,
|
|
2088
|
+
"targetAcquiredEvent",
|
|
2089
|
+
{get = function(self)
|
|
2090
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2091
|
+
end},
|
|
2092
|
+
true
|
|
2093
|
+
)
|
|
2004
2094
|
__TS__SetDescriptor(
|
|
2005
2095
|
Unit.prototype,
|
|
2006
2096
|
"onSelect",
|
|
@@ -2136,25 +2226,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2136
2226
|
InitializingEvent,
|
|
2137
2227
|
function(event)
|
|
2138
2228
|
local function listener(unit, id)
|
|
2139
|
-
local
|
|
2229
|
+
local ____GetSpellTargetUnit_result_10
|
|
2140
2230
|
if GetSpellTargetUnit() then
|
|
2141
|
-
|
|
2231
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2142
2232
|
else
|
|
2143
|
-
local
|
|
2233
|
+
local ____GetSpellTargetItem_result_9
|
|
2144
2234
|
if GetSpellTargetItem() then
|
|
2145
|
-
|
|
2235
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2146
2236
|
else
|
|
2147
|
-
local
|
|
2237
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2148
2238
|
if GetSpellTargetDestructable() then
|
|
2149
|
-
|
|
2239
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2150
2240
|
else
|
|
2151
|
-
|
|
2241
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2152
2242
|
end
|
|
2153
|
-
|
|
2243
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2154
2244
|
end
|
|
2155
|
-
|
|
2245
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2156
2246
|
end
|
|
2157
|
-
local target =
|
|
2247
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2158
2248
|
if target then
|
|
2159
2249
|
invoke(event, unit, id, target)
|
|
2160
2250
|
end
|
|
@@ -2326,10 +2416,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2326
2416
|
____exports.UnitTriggerEvent,
|
|
2327
2417
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2328
2418
|
function()
|
|
2329
|
-
local
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2419
|
+
local handle = getOrderedUnit()
|
|
2420
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2421
|
+
local unit = ____exports.Unit:of(handle)
|
|
2422
|
+
if unit.state == 1 then
|
|
2423
|
+
return unit, getIssuedOrderId()
|
|
2424
|
+
end
|
|
2333
2425
|
end
|
|
2334
2426
|
return IgnoreEvent
|
|
2335
2427
|
end
|
|
@@ -2360,13 +2452,19 @@ Unit.onDamaging = (function()
|
|
|
2360
2452
|
if source and source.typeId == dummyUnitId then
|
|
2361
2453
|
source = nil
|
|
2362
2454
|
end
|
|
2363
|
-
local target = BlzGetEventDamageTarget()
|
|
2455
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2456
|
+
local metadata = damageMetadataByTarget[target]
|
|
2457
|
+
damageMetadataByTarget[target] = nil
|
|
2364
2458
|
local data = {
|
|
2365
2459
|
amount = GetEventDamage(),
|
|
2366
|
-
attackType = BlzGetEventAttackType(),
|
|
2460
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2367
2461
|
damageType = BlzGetEventDamageType(),
|
|
2368
2462
|
weaponType = BlzGetEventWeaponType(),
|
|
2369
|
-
|
|
2463
|
+
metadata = metadata,
|
|
2464
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2465
|
+
originalAmount = GetEventDamage(),
|
|
2466
|
+
originalMetadata = metadata,
|
|
2467
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2370
2468
|
}
|
|
2371
2469
|
if data.isAttack and source then
|
|
2372
2470
|
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
|
|
@@ -2380,18 +2478,36 @@ Unit.onDamaging = (function()
|
|
|
2380
2478
|
invoke(
|
|
2381
2479
|
event,
|
|
2382
2480
|
source,
|
|
2383
|
-
|
|
2481
|
+
target,
|
|
2384
2482
|
setmetatable(
|
|
2385
2483
|
{},
|
|
2386
2484
|
{
|
|
2387
2485
|
__index = data,
|
|
2388
2486
|
__newindex = function(self, key, value)
|
|
2389
|
-
damageSetters[key]
|
|
2487
|
+
local damageSetter = damageSetters[key]
|
|
2488
|
+
if damageSetter ~= nil then
|
|
2489
|
+
damageSetter(value)
|
|
2490
|
+
end
|
|
2390
2491
|
data[key] = value
|
|
2391
2492
|
end
|
|
2392
2493
|
}
|
|
2393
2494
|
)
|
|
2394
2495
|
)
|
|
2496
|
+
if data[0] and source then
|
|
2497
|
+
local sourceOwner = source.owner.handle
|
|
2498
|
+
data[1] = sourceOwner
|
|
2499
|
+
local targetOwner = target.owner.handle
|
|
2500
|
+
data[2] = targetOwner
|
|
2501
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2502
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2503
|
+
data[3] = true
|
|
2504
|
+
end
|
|
2505
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2506
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2507
|
+
data[4] = true
|
|
2508
|
+
end
|
|
2509
|
+
end
|
|
2510
|
+
damagingEventByTarget[target] = data
|
|
2395
2511
|
return
|
|
2396
2512
|
end
|
|
2397
2513
|
BlzSetEventDamage(0)
|
|
@@ -2399,7 +2515,7 @@ Unit.onDamaging = (function()
|
|
|
2399
2515
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2400
2516
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2401
2517
|
local sourceOwner = source.owner.handle
|
|
2402
|
-
local targetOwner =
|
|
2518
|
+
local targetOwner = target.owner.handle
|
|
2403
2519
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2404
2520
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2405
2521
|
Timer:run(function()
|
|
@@ -2415,23 +2531,19 @@ Unit.onDamaging = (function()
|
|
|
2415
2531
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2416
2532
|
local condition = ____value[1]
|
|
2417
2533
|
local action = ____value[2]
|
|
2418
|
-
if condition(
|
|
2419
|
-
source,
|
|
2420
|
-
____exports.Unit:of(target),
|
|
2421
|
-
data
|
|
2422
|
-
) then
|
|
2534
|
+
if condition(source, target, data) then
|
|
2423
2535
|
action(
|
|
2424
2536
|
source,
|
|
2425
|
-
|
|
2537
|
+
target,
|
|
2426
2538
|
setmetatable(
|
|
2427
2539
|
{fire = function()
|
|
2428
2540
|
UnitDamageTarget(
|
|
2429
2541
|
source.handle,
|
|
2430
|
-
target,
|
|
2542
|
+
target.handle,
|
|
2431
2543
|
data.amount,
|
|
2432
2544
|
true,
|
|
2433
2545
|
true,
|
|
2434
|
-
data.attackType,
|
|
2546
|
+
attackTypeToNative(data.attackType),
|
|
2435
2547
|
data.damageType,
|
|
2436
2548
|
data.weaponType
|
|
2437
2549
|
)
|
|
@@ -2458,26 +2570,50 @@ Unit.onDamage = __TS__New(
|
|
|
2458
2570
|
if source and source.typeId == dummyUnitId then
|
|
2459
2571
|
source = nil
|
|
2460
2572
|
end
|
|
2573
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2574
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2575
|
+
damagingEventByTarget[target] = nil
|
|
2461
2576
|
local data = {
|
|
2462
2577
|
amount = GetEventDamage(),
|
|
2463
|
-
attackType = BlzGetEventAttackType(),
|
|
2578
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2464
2579
|
damageType = BlzGetEventDamageType(),
|
|
2465
2580
|
weaponType = BlzGetEventWeaponType(),
|
|
2581
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2466
2582
|
isAttack = BlzGetEventIsAttack(),
|
|
2467
|
-
originalAmount = GetEventDamage(),
|
|
2583
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2584
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2468
2585
|
preventDeath = damageEventPreventDeath
|
|
2469
2586
|
}
|
|
2587
|
+
if damagingEvent then
|
|
2588
|
+
for key, value in pairs(damagingEvent) do
|
|
2589
|
+
if isAttribute(key) then
|
|
2590
|
+
data[key] = value
|
|
2591
|
+
end
|
|
2592
|
+
end
|
|
2593
|
+
local sourceOwner = damagingEvent[1]
|
|
2594
|
+
if sourceOwner then
|
|
2595
|
+
local targetOwner = damagingEvent[2]
|
|
2596
|
+
if damagingEvent[3] then
|
|
2597
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2598
|
+
end
|
|
2599
|
+
if damagingEvent[4] then
|
|
2600
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2601
|
+
end
|
|
2602
|
+
end
|
|
2603
|
+
end
|
|
2470
2604
|
local evData = setmetatable(
|
|
2471
2605
|
{},
|
|
2472
2606
|
{
|
|
2473
2607
|
__index = data,
|
|
2474
2608
|
__newindex = function(self, key, value)
|
|
2475
|
-
damageSetters[key]
|
|
2609
|
+
local damageSetter = damageSetters[key]
|
|
2610
|
+
if damageSetter ~= nil then
|
|
2611
|
+
damageSetter(value)
|
|
2612
|
+
end
|
|
2476
2613
|
data[key] = value
|
|
2477
2614
|
end
|
|
2478
2615
|
}
|
|
2479
2616
|
)
|
|
2480
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2481
2617
|
invoke(event, source, target, evData)
|
|
2482
2618
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2483
2619
|
local bonusHealth = math.ceil(evData.amount)
|
|
@@ -2520,8 +2656,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2520
2656
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2521
2657
|
function()
|
|
2522
2658
|
local unit = getTriggerUnit()
|
|
2523
|
-
|
|
2524
|
-
|
|
2659
|
+
local item = getManipulatedItem()
|
|
2660
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2661
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2525
2662
|
end
|
|
2526
2663
|
return IgnoreEvent
|
|
2527
2664
|
end
|
|
@@ -2530,9 +2667,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2530
2667
|
____exports.UnitTriggerEvent,
|
|
2531
2668
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2532
2669
|
function()
|
|
2533
|
-
local
|
|
2534
|
-
|
|
2535
|
-
|
|
2670
|
+
local unitHandle = getTriggerUnit()
|
|
2671
|
+
local itemHandle = getManipulatedItem()
|
|
2672
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2673
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2674
|
+
local item = Item:of(itemHandle)
|
|
2675
|
+
if item.owner ~= unit then
|
|
2676
|
+
return unit, item
|
|
2677
|
+
end
|
|
2536
2678
|
end
|
|
2537
2679
|
return IgnoreEvent
|
|
2538
2680
|
end
|
|
@@ -2540,38 +2682,77 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2540
2682
|
Unit.itemUsedEvent = __TS__New(
|
|
2541
2683
|
____exports.UnitTriggerEvent,
|
|
2542
2684
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2543
|
-
function()
|
|
2685
|
+
function()
|
|
2686
|
+
local unit = getTriggerUnit()
|
|
2687
|
+
local item = getManipulatedItem()
|
|
2688
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2689
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2690
|
+
end
|
|
2691
|
+
return IgnoreEvent
|
|
2692
|
+
end
|
|
2544
2693
|
)
|
|
2545
2694
|
Unit.itemStackedEvent = __TS__New(
|
|
2546
2695
|
____exports.UnitTriggerEvent,
|
|
2547
2696
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2548
|
-
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(
|
|
2697
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2549
2698
|
)
|
|
2550
2699
|
__TS__ObjectDefineProperty(
|
|
2551
2700
|
Unit,
|
|
2552
|
-
"
|
|
2701
|
+
"itemChargesChangedEvent",
|
|
2553
2702
|
{get = function(self)
|
|
2554
2703
|
local event = __TS__New(Event)
|
|
2555
|
-
|
|
2556
|
-
local
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2704
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2705
|
+
local unit = item.owner
|
|
2706
|
+
if unit ~= nil then
|
|
2707
|
+
invoke(event, unit, item)
|
|
2708
|
+
end
|
|
2709
|
+
end)
|
|
2710
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2711
|
+
return event
|
|
2712
|
+
end}
|
|
2713
|
+
)
|
|
2714
|
+
__TS__ObjectDefineProperty(
|
|
2715
|
+
Unit,
|
|
2716
|
+
"itemUseOrderEvent",
|
|
2717
|
+
{get = function(self)
|
|
2718
|
+
local event = __TS__New(Event)
|
|
2719
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2720
|
+
local slot = order - orderId("useslot0")
|
|
2721
|
+
local function listener(unit)
|
|
2722
|
+
local item = unit.items[slot + 1]
|
|
2723
|
+
if item ~= nil then
|
|
2724
|
+
invoke(event, unit, item)
|
|
2725
|
+
end
|
|
2572
2726
|
end
|
|
2727
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2728
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2729
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2730
|
+
end
|
|
2731
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2732
|
+
return event
|
|
2733
|
+
end}
|
|
2734
|
+
)
|
|
2735
|
+
__TS__ObjectDefineProperty(
|
|
2736
|
+
Unit,
|
|
2737
|
+
"itemMoveOrderEvent",
|
|
2738
|
+
{get = function(self)
|
|
2739
|
+
local event = __TS__New(Event)
|
|
2740
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2741
|
+
local slotTo = order - orderId("moveslot0")
|
|
2742
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2743
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2744
|
+
if slotFrom ~= nil then
|
|
2745
|
+
invoke(
|
|
2746
|
+
event,
|
|
2747
|
+
unit,
|
|
2748
|
+
item,
|
|
2749
|
+
slotFrom,
|
|
2750
|
+
slotTo
|
|
2751
|
+
)
|
|
2752
|
+
end
|
|
2753
|
+
end)
|
|
2573
2754
|
end
|
|
2574
|
-
rawset(self, "
|
|
2755
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2575
2756
|
return event
|
|
2576
2757
|
end}
|
|
2577
2758
|
)
|