warscript 0.0.1-dev.d1328b7 → 0.0.1-dev.d1983c6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +5 -0
- package/attributes.lua +8 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +3 -0
- package/core/types/frame.lua +69 -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 +25 -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 +28 -0
- package/engine/behaviour/unit.lua +163 -4
- package/engine/buff.d.ts +63 -42
- package/engine/buff.lua +318 -234
- package/engine/internal/ability.d.ts +17 -2
- package/engine/internal/ability.lua +100 -4
- package/engine/internal/item/ability.lua +162 -4
- 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/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 -0
- package/engine/internal/unit/item.lua +8 -4
- 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+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 +37 -7
- package/engine/internal/unit.lua +324 -116
- 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 +10 -4
- package/engine/object-field/ability.lua +3 -0
- 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 +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 +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/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,19 +936,11 @@ 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
|
-
if
|
|
943
|
+
if doUnitAbilityAction(self.handle, abilityId, unitRemoveAbility, abilityId) then
|
|
915
944
|
local abilities = self.abilities
|
|
916
945
|
for i = 1, #abilities do
|
|
917
946
|
if abilities[i].typeId == abilityId then
|
|
@@ -936,12 +965,34 @@ end
|
|
|
936
965
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
937
966
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
938
967
|
end
|
|
968
|
+
function Unit.prototype.interruptMovement(self)
|
|
969
|
+
local handle = self.handle
|
|
970
|
+
unitDisableAbility(
|
|
971
|
+
handle,
|
|
972
|
+
fourCC("Amov"),
|
|
973
|
+
true,
|
|
974
|
+
false
|
|
975
|
+
)
|
|
976
|
+
unitDisableAbility(
|
|
977
|
+
handle,
|
|
978
|
+
fourCC("Amov"),
|
|
979
|
+
false,
|
|
980
|
+
false
|
|
981
|
+
)
|
|
982
|
+
end
|
|
939
983
|
function Unit.prototype.interruptAttack(self)
|
|
940
984
|
unitInterruptAttack(self.handle)
|
|
941
985
|
end
|
|
942
986
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
943
|
-
|
|
944
|
-
unitDisableAbility(
|
|
987
|
+
local handle = self.handle
|
|
988
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
989
|
+
Timer:run(
|
|
990
|
+
unitDisableAbility,
|
|
991
|
+
handle,
|
|
992
|
+
abilityId,
|
|
993
|
+
false,
|
|
994
|
+
false
|
|
995
|
+
)
|
|
945
996
|
end
|
|
946
997
|
function Unit.prototype.getDistanceTo(self, target)
|
|
947
998
|
local handle = self.handle
|
|
@@ -1202,7 +1253,15 @@ __TS__SetDescriptor(
|
|
|
1202
1253
|
Unit.prototype,
|
|
1203
1254
|
"isIllusion",
|
|
1204
1255
|
{get = function(self)
|
|
1205
|
-
return
|
|
1256
|
+
return IsUnitIllusion(self.handle)
|
|
1257
|
+
end},
|
|
1258
|
+
true
|
|
1259
|
+
)
|
|
1260
|
+
__TS__SetDescriptor(
|
|
1261
|
+
Unit.prototype,
|
|
1262
|
+
"isStunned",
|
|
1263
|
+
{get = function(self)
|
|
1264
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1206
1265
|
end},
|
|
1207
1266
|
true
|
|
1208
1267
|
)
|
|
@@ -1279,6 +1338,19 @@ __TS__SetDescriptor(
|
|
|
1279
1338
|
},
|
|
1280
1339
|
true
|
|
1281
1340
|
)
|
|
1341
|
+
__TS__SetDescriptor(
|
|
1342
|
+
Unit.prototype,
|
|
1343
|
+
"primaryAttribute",
|
|
1344
|
+
{
|
|
1345
|
+
get = function(self)
|
|
1346
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1347
|
+
end,
|
|
1348
|
+
set = function(self, primaryAttribute)
|
|
1349
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1350
|
+
end
|
|
1351
|
+
},
|
|
1352
|
+
true
|
|
1353
|
+
)
|
|
1282
1354
|
__TS__SetDescriptor(
|
|
1283
1355
|
Unit.prototype,
|
|
1284
1356
|
"strengthBase",
|
|
@@ -1403,14 +1475,14 @@ __TS__SetDescriptor(
|
|
|
1403
1475
|
return not self[106]
|
|
1404
1476
|
end,
|
|
1405
1477
|
set = function(self, isTeamGlowVisible)
|
|
1406
|
-
|
|
1407
|
-
local
|
|
1478
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1479
|
+
local ____temp_7
|
|
1408
1480
|
if not isTeamGlowVisible then
|
|
1409
|
-
|
|
1481
|
+
____temp_7 = true
|
|
1410
1482
|
else
|
|
1411
|
-
|
|
1483
|
+
____temp_7 = nil
|
|
1412
1484
|
end
|
|
1413
|
-
self[106] =
|
|
1485
|
+
self[106] = ____temp_7
|
|
1414
1486
|
end
|
|
1415
1487
|
},
|
|
1416
1488
|
true
|
|
@@ -1419,9 +1491,9 @@ __TS__SetDescriptor(
|
|
|
1419
1491
|
Unit.prototype,
|
|
1420
1492
|
"color",
|
|
1421
1493
|
{set = function(self, color)
|
|
1422
|
-
|
|
1494
|
+
SetUnitColor(self.handle, color.handle)
|
|
1423
1495
|
if self[106] then
|
|
1424
|
-
|
|
1496
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1425
1497
|
end
|
|
1426
1498
|
end},
|
|
1427
1499
|
true
|
|
@@ -1590,7 +1662,7 @@ __TS__SetDescriptor(
|
|
|
1590
1662
|
"x",
|
|
1591
1663
|
{
|
|
1592
1664
|
get = function(self)
|
|
1593
|
-
return getUnitX(self.handle)
|
|
1665
|
+
return self[107] or getUnitX(self.handle)
|
|
1594
1666
|
end,
|
|
1595
1667
|
set = function(self, v)
|
|
1596
1668
|
SetUnitX(self.handle, v)
|
|
@@ -1603,7 +1675,7 @@ __TS__SetDescriptor(
|
|
|
1603
1675
|
"y",
|
|
1604
1676
|
{
|
|
1605
1677
|
get = function(self)
|
|
1606
|
-
return getUnitY(self.handle)
|
|
1678
|
+
return self[108] or getUnitY(self.handle)
|
|
1607
1679
|
end,
|
|
1608
1680
|
set = function(self, v)
|
|
1609
1681
|
SetUnitY(self.handle, v)
|
|
@@ -1689,10 +1761,10 @@ __TS__SetDescriptor(
|
|
|
1689
1761
|
"gold",
|
|
1690
1762
|
{
|
|
1691
1763
|
get = function(self)
|
|
1692
|
-
return
|
|
1764
|
+
return GetResourceAmount(self.handle)
|
|
1693
1765
|
end,
|
|
1694
1766
|
set = function(self, gold)
|
|
1695
|
-
|
|
1767
|
+
SetResourceAmount(self.handle, gold)
|
|
1696
1768
|
end
|
|
1697
1769
|
},
|
|
1698
1770
|
true
|
|
@@ -1820,6 +1892,19 @@ __TS__SetDescriptor(
|
|
|
1820
1892
|
end},
|
|
1821
1893
|
true
|
|
1822
1894
|
)
|
|
1895
|
+
__TS__SetDescriptor(
|
|
1896
|
+
Unit.prototype,
|
|
1897
|
+
"movementType",
|
|
1898
|
+
{
|
|
1899
|
+
get = function(self)
|
|
1900
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1901
|
+
end,
|
|
1902
|
+
set = function(self, movementType)
|
|
1903
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1904
|
+
end
|
|
1905
|
+
},
|
|
1906
|
+
true
|
|
1907
|
+
)
|
|
1823
1908
|
__TS__SetDescriptor(
|
|
1824
1909
|
Unit.prototype,
|
|
1825
1910
|
"pathing",
|
|
@@ -2001,6 +2086,14 @@ __TS__SetDescriptor(
|
|
|
2001
2086
|
end},
|
|
2002
2087
|
true
|
|
2003
2088
|
)
|
|
2089
|
+
__TS__SetDescriptor(
|
|
2090
|
+
Unit.prototype,
|
|
2091
|
+
"targetAcquiredEvent",
|
|
2092
|
+
{get = function(self)
|
|
2093
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2094
|
+
end},
|
|
2095
|
+
true
|
|
2096
|
+
)
|
|
2004
2097
|
__TS__SetDescriptor(
|
|
2005
2098
|
Unit.prototype,
|
|
2006
2099
|
"onSelect",
|
|
@@ -2136,25 +2229,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2136
2229
|
InitializingEvent,
|
|
2137
2230
|
function(event)
|
|
2138
2231
|
local function listener(unit, id)
|
|
2139
|
-
local
|
|
2232
|
+
local ____GetSpellTargetUnit_result_10
|
|
2140
2233
|
if GetSpellTargetUnit() then
|
|
2141
|
-
|
|
2234
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2142
2235
|
else
|
|
2143
|
-
local
|
|
2236
|
+
local ____GetSpellTargetItem_result_9
|
|
2144
2237
|
if GetSpellTargetItem() then
|
|
2145
|
-
|
|
2238
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2146
2239
|
else
|
|
2147
|
-
local
|
|
2240
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2148
2241
|
if GetSpellTargetDestructable() then
|
|
2149
|
-
|
|
2242
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2150
2243
|
else
|
|
2151
|
-
|
|
2244
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2152
2245
|
end
|
|
2153
|
-
|
|
2246
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2154
2247
|
end
|
|
2155
|
-
|
|
2248
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2156
2249
|
end
|
|
2157
|
-
local target =
|
|
2250
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2158
2251
|
if target then
|
|
2159
2252
|
invoke(event, unit, id, target)
|
|
2160
2253
|
end
|
|
@@ -2326,10 +2419,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2326
2419
|
____exports.UnitTriggerEvent,
|
|
2327
2420
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2328
2421
|
function()
|
|
2329
|
-
local
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2422
|
+
local handle = getOrderedUnit()
|
|
2423
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2424
|
+
local unit = ____exports.Unit:of(handle)
|
|
2425
|
+
if unit.state == 1 then
|
|
2426
|
+
return unit, getIssuedOrderId()
|
|
2427
|
+
end
|
|
2333
2428
|
end
|
|
2334
2429
|
return IgnoreEvent
|
|
2335
2430
|
end
|
|
@@ -2360,13 +2455,19 @@ Unit.onDamaging = (function()
|
|
|
2360
2455
|
if source and source.typeId == dummyUnitId then
|
|
2361
2456
|
source = nil
|
|
2362
2457
|
end
|
|
2363
|
-
local target = BlzGetEventDamageTarget()
|
|
2458
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2459
|
+
local metadata = damageMetadataByTarget[target]
|
|
2460
|
+
damageMetadataByTarget[target] = nil
|
|
2364
2461
|
local data = {
|
|
2365
2462
|
amount = GetEventDamage(),
|
|
2366
|
-
attackType = BlzGetEventAttackType(),
|
|
2463
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2367
2464
|
damageType = BlzGetEventDamageType(),
|
|
2368
2465
|
weaponType = BlzGetEventWeaponType(),
|
|
2369
|
-
|
|
2466
|
+
metadata = metadata,
|
|
2467
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2468
|
+
originalAmount = GetEventDamage(),
|
|
2469
|
+
originalMetadata = metadata,
|
|
2470
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2370
2471
|
}
|
|
2371
2472
|
if data.isAttack and source then
|
|
2372
2473
|
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 +2481,36 @@ Unit.onDamaging = (function()
|
|
|
2380
2481
|
invoke(
|
|
2381
2482
|
event,
|
|
2382
2483
|
source,
|
|
2383
|
-
|
|
2484
|
+
target,
|
|
2384
2485
|
setmetatable(
|
|
2385
2486
|
{},
|
|
2386
2487
|
{
|
|
2387
2488
|
__index = data,
|
|
2388
2489
|
__newindex = function(self, key, value)
|
|
2389
|
-
damageSetters[key]
|
|
2490
|
+
local damageSetter = damageSetters[key]
|
|
2491
|
+
if damageSetter ~= nil then
|
|
2492
|
+
damageSetter(value)
|
|
2493
|
+
end
|
|
2390
2494
|
data[key] = value
|
|
2391
2495
|
end
|
|
2392
2496
|
}
|
|
2393
2497
|
)
|
|
2394
2498
|
)
|
|
2499
|
+
if data[0] and source then
|
|
2500
|
+
local sourceOwner = source.owner.handle
|
|
2501
|
+
data[1] = sourceOwner
|
|
2502
|
+
local targetOwner = target.owner.handle
|
|
2503
|
+
data[2] = targetOwner
|
|
2504
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2505
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2506
|
+
data[3] = true
|
|
2507
|
+
end
|
|
2508
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2509
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2510
|
+
data[4] = true
|
|
2511
|
+
end
|
|
2512
|
+
end
|
|
2513
|
+
damagingEventByTarget[target] = data
|
|
2395
2514
|
return
|
|
2396
2515
|
end
|
|
2397
2516
|
BlzSetEventDamage(0)
|
|
@@ -2399,7 +2518,7 @@ Unit.onDamaging = (function()
|
|
|
2399
2518
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2400
2519
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2401
2520
|
local sourceOwner = source.owner.handle
|
|
2402
|
-
local targetOwner =
|
|
2521
|
+
local targetOwner = target.owner.handle
|
|
2403
2522
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2404
2523
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2405
2524
|
Timer:run(function()
|
|
@@ -2415,23 +2534,19 @@ Unit.onDamaging = (function()
|
|
|
2415
2534
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2416
2535
|
local condition = ____value[1]
|
|
2417
2536
|
local action = ____value[2]
|
|
2418
|
-
if condition(
|
|
2419
|
-
source,
|
|
2420
|
-
____exports.Unit:of(target),
|
|
2421
|
-
data
|
|
2422
|
-
) then
|
|
2537
|
+
if condition(source, target, data) then
|
|
2423
2538
|
action(
|
|
2424
2539
|
source,
|
|
2425
|
-
|
|
2540
|
+
target,
|
|
2426
2541
|
setmetatable(
|
|
2427
2542
|
{fire = function()
|
|
2428
2543
|
UnitDamageTarget(
|
|
2429
2544
|
source.handle,
|
|
2430
|
-
target,
|
|
2545
|
+
target.handle,
|
|
2431
2546
|
data.amount,
|
|
2432
2547
|
true,
|
|
2433
2548
|
true,
|
|
2434
|
-
data.attackType,
|
|
2549
|
+
attackTypeToNative(data.attackType),
|
|
2435
2550
|
data.damageType,
|
|
2436
2551
|
data.weaponType
|
|
2437
2552
|
)
|
|
@@ -2458,26 +2573,50 @@ Unit.onDamage = __TS__New(
|
|
|
2458
2573
|
if source and source.typeId == dummyUnitId then
|
|
2459
2574
|
source = nil
|
|
2460
2575
|
end
|
|
2576
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2577
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2578
|
+
damagingEventByTarget[target] = nil
|
|
2461
2579
|
local data = {
|
|
2462
2580
|
amount = GetEventDamage(),
|
|
2463
|
-
attackType = BlzGetEventAttackType(),
|
|
2581
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2464
2582
|
damageType = BlzGetEventDamageType(),
|
|
2465
2583
|
weaponType = BlzGetEventWeaponType(),
|
|
2584
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2466
2585
|
isAttack = BlzGetEventIsAttack(),
|
|
2467
|
-
originalAmount = GetEventDamage(),
|
|
2586
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2587
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2468
2588
|
preventDeath = damageEventPreventDeath
|
|
2469
2589
|
}
|
|
2590
|
+
if damagingEvent then
|
|
2591
|
+
for key, value in pairs(damagingEvent) do
|
|
2592
|
+
if isAttribute(key) then
|
|
2593
|
+
data[key] = value
|
|
2594
|
+
end
|
|
2595
|
+
end
|
|
2596
|
+
local sourceOwner = damagingEvent[1]
|
|
2597
|
+
if sourceOwner then
|
|
2598
|
+
local targetOwner = damagingEvent[2]
|
|
2599
|
+
if damagingEvent[3] then
|
|
2600
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2601
|
+
end
|
|
2602
|
+
if damagingEvent[4] then
|
|
2603
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2604
|
+
end
|
|
2605
|
+
end
|
|
2606
|
+
end
|
|
2470
2607
|
local evData = setmetatable(
|
|
2471
2608
|
{},
|
|
2472
2609
|
{
|
|
2473
2610
|
__index = data,
|
|
2474
2611
|
__newindex = function(self, key, value)
|
|
2475
|
-
damageSetters[key]
|
|
2612
|
+
local damageSetter = damageSetters[key]
|
|
2613
|
+
if damageSetter ~= nil then
|
|
2614
|
+
damageSetter(value)
|
|
2615
|
+
end
|
|
2476
2616
|
data[key] = value
|
|
2477
2617
|
end
|
|
2478
2618
|
}
|
|
2479
2619
|
)
|
|
2480
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2481
2620
|
invoke(event, source, target, evData)
|
|
2482
2621
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2483
2622
|
local bonusHealth = math.ceil(evData.amount)
|
|
@@ -2520,8 +2659,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2520
2659
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2521
2660
|
function()
|
|
2522
2661
|
local unit = getTriggerUnit()
|
|
2523
|
-
|
|
2524
|
-
|
|
2662
|
+
local item = getManipulatedItem()
|
|
2663
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2664
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2525
2665
|
end
|
|
2526
2666
|
return IgnoreEvent
|
|
2527
2667
|
end
|
|
@@ -2531,8 +2671,9 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2531
2671
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2532
2672
|
function()
|
|
2533
2673
|
local unit = getTriggerUnit()
|
|
2534
|
-
|
|
2535
|
-
|
|
2674
|
+
local item = getManipulatedItem()
|
|
2675
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2676
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2536
2677
|
end
|
|
2537
2678
|
return IgnoreEvent
|
|
2538
2679
|
end
|
|
@@ -2540,13 +2681,80 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2540
2681
|
Unit.itemUsedEvent = __TS__New(
|
|
2541
2682
|
____exports.UnitTriggerEvent,
|
|
2542
2683
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2543
|
-
function()
|
|
2684
|
+
function()
|
|
2685
|
+
local unit = getTriggerUnit()
|
|
2686
|
+
local item = getManipulatedItem()
|
|
2687
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2688
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2689
|
+
end
|
|
2690
|
+
return IgnoreEvent
|
|
2691
|
+
end
|
|
2544
2692
|
)
|
|
2545
2693
|
Unit.itemStackedEvent = __TS__New(
|
|
2546
2694
|
____exports.UnitTriggerEvent,
|
|
2547
2695
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2548
2696
|
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2549
2697
|
)
|
|
2698
|
+
__TS__ObjectDefineProperty(
|
|
2699
|
+
Unit,
|
|
2700
|
+
"itemChargesChangedEvent",
|
|
2701
|
+
{get = function(self)
|
|
2702
|
+
local event = __TS__New(Event)
|
|
2703
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2704
|
+
local unit = item.owner
|
|
2705
|
+
if unit ~= nil then
|
|
2706
|
+
invoke(event, unit, item)
|
|
2707
|
+
end
|
|
2708
|
+
end)
|
|
2709
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2710
|
+
return event
|
|
2711
|
+
end}
|
|
2712
|
+
)
|
|
2713
|
+
__TS__ObjectDefineProperty(
|
|
2714
|
+
Unit,
|
|
2715
|
+
"itemUseOrderEvent",
|
|
2716
|
+
{get = function(self)
|
|
2717
|
+
local event = __TS__New(Event)
|
|
2718
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2719
|
+
local slot = order - orderId("useslot0")
|
|
2720
|
+
local function listener(unit)
|
|
2721
|
+
local item = unit.items[slot + 1]
|
|
2722
|
+
if item ~= nil then
|
|
2723
|
+
invoke(event, unit, item)
|
|
2724
|
+
end
|
|
2725
|
+
end
|
|
2726
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2727
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2728
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2729
|
+
end
|
|
2730
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2731
|
+
return event
|
|
2732
|
+
end}
|
|
2733
|
+
)
|
|
2734
|
+
__TS__ObjectDefineProperty(
|
|
2735
|
+
Unit,
|
|
2736
|
+
"itemMoveOrderEvent",
|
|
2737
|
+
{get = function(self)
|
|
2738
|
+
local event = __TS__New(Event)
|
|
2739
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2740
|
+
local slotTo = order - orderId("moveslot0")
|
|
2741
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2742
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2743
|
+
if slotFrom ~= nil then
|
|
2744
|
+
invoke(
|
|
2745
|
+
event,
|
|
2746
|
+
unit,
|
|
2747
|
+
item,
|
|
2748
|
+
slotFrom,
|
|
2749
|
+
slotTo
|
|
2750
|
+
)
|
|
2751
|
+
end
|
|
2752
|
+
end)
|
|
2753
|
+
end
|
|
2754
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2755
|
+
return event
|
|
2756
|
+
end}
|
|
2757
|
+
)
|
|
2550
2758
|
__TS__ObjectDefineProperty(
|
|
2551
2759
|
Unit,
|
|
2552
2760
|
"onCreate",
|