warscript 0.0.1-dev.9af2d1a → 0.0.1-dev.9c98c3a
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 +6 -0
- package/attributes.lua +17 -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 +24 -21
- package/core/types/player.lua +3 -1
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/tileCell.d.ts +9 -0
- package/core/types/tileCell.lua +92 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -1
- package/decl/native.d.ts +846 -790
- package/engine/behavior.d.ts +5 -0
- package/engine/behavior.lua +106 -27
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +20 -4
- package/engine/behaviour/ability.lua +111 -47
- package/engine/behaviour/unit/stun-immunity.d.ts +7 -3
- package/engine/behaviour/unit/stun-immunity.lua +52 -27
- package/engine/behaviour/unit.d.ts +34 -0
- package/engine/behaviour/unit.lua +190 -4
- package/engine/buff.d.ts +63 -45
- package/engine/buff.lua +300 -237
- package/engine/internal/ability.d.ts +20 -3
- package/engine/internal/ability.lua +126 -13
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +20 -19
- package/engine/internal/item.lua +191 -74
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +128 -3
- 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.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 +42 -14
- package/engine/internal/unit.d.ts +37 -11
- package/engine/internal/unit.lua +333 -126
- 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 +93 -36
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.d.ts +3 -1
- package/engine/object-data/entry/item-type.lua +15 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +21 -5
- package/engine/object-data/entry/unit-type.lua +214 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +12 -6
- package/engine/object-field/ability.lua +8 -4
- package/engine/object-field/unit.d.ts +57 -3
- package/engine/object-field/unit.lua +207 -7
- package/engine/object-field.d.ts +17 -6
- package/engine/object-field.lua +190 -90
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- package/engine/standard/fields/unit.d.ts +4 -0
- package/engine/standard/fields/unit.lua +7 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +249 -10
- package/engine/unit.d.ts +2 -0
- package/engine/unit.lua +2 -0
- package/objutil/buff.lua +2 -3
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +10 -1
- package/utility/arrays.lua +45 -3
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +2 -0
- package/utility/linked-set.lua +22 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/internal/unit.lua
CHANGED
|
@@ -51,12 +51,21 @@ local ____arrays = require("utility.arrays")
|
|
|
51
51
|
local forEach = ____arrays.forEach
|
|
52
52
|
local ____math = require("math")
|
|
53
53
|
local min = ____math.min
|
|
54
|
+
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
55
|
+
local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
|
|
56
|
+
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
57
|
+
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
58
|
+
local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
|
|
59
|
+
local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
|
|
60
|
+
local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
|
|
61
|
+
local ____attributes = require("attributes")
|
|
62
|
+
local isAttribute = ____attributes.isAttribute
|
|
63
|
+
local ____ability = require("engine.internal.item.ability")
|
|
64
|
+
local doUnitAbilityAction = ____ability.doUnitAbilityAction
|
|
54
65
|
local match = string.match
|
|
55
66
|
local ____tostring = _G.tostring
|
|
56
67
|
local setUnitAnimation = SetUnitAnimation
|
|
57
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
58
68
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
59
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
60
69
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
61
70
|
local getUnitRealField = BlzGetUnitRealField
|
|
62
71
|
local getHeroStr = GetHeroStr
|
|
@@ -75,9 +84,9 @@ local setUnitScale = SetUnitScale
|
|
|
75
84
|
local setUnitPosition = SetUnitPosition
|
|
76
85
|
local setUnitTimeScale = SetUnitTimeScale
|
|
77
86
|
local getHandleId = GetHandleId
|
|
87
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
78
88
|
local createUnit = CreateUnit
|
|
79
89
|
local killUnit = KillUnit
|
|
80
|
-
local setUnitExploded = SetUnitExploded
|
|
81
90
|
local removeUnit = RemoveUnit
|
|
82
91
|
local getUnitTypeId = GetUnitTypeId
|
|
83
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -93,8 +102,6 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
93
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
94
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
95
104
|
local isUnitInRange = IsUnitInRange
|
|
96
|
-
local setResourceAmount = SetResourceAmount
|
|
97
|
-
local getResourceAmount = GetResourceAmount
|
|
98
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
99
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
100
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
@@ -118,15 +125,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
118
125
|
local getIssuedOrderId = GetIssuedOrderId
|
|
119
126
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
120
127
|
local unitAlive = UnitAlive
|
|
121
|
-
local unitAddType = UnitAddType
|
|
122
|
-
local unitRemoveType = UnitRemoveType
|
|
123
|
-
local isUnitIllusion = IsUnitIllusion
|
|
124
|
-
local isUnitType = IsUnitType
|
|
125
128
|
local isUnitAlly = IsUnitAlly
|
|
126
129
|
local isUnitEnemy = IsUnitEnemy
|
|
127
130
|
local getOwningPlayer = GetOwningPlayer
|
|
128
|
-
local setUnitColor = SetUnitColor
|
|
129
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
130
131
|
____exports.UnitClassification = {}
|
|
131
132
|
local UnitClassification = ____exports.UnitClassification
|
|
132
133
|
do
|
|
@@ -136,6 +137,7 @@ do
|
|
|
136
137
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
137
138
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
138
139
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
140
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
139
141
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
140
142
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
141
143
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -343,6 +345,9 @@ local function dispatchAbility(event)
|
|
|
343
345
|
}
|
|
344
346
|
)
|
|
345
347
|
end
|
|
348
|
+
local function damagingEventPreventRetaliation(self)
|
|
349
|
+
self[0] = true
|
|
350
|
+
end
|
|
346
351
|
local function damageEventPreventDeath(self, callback, ...)
|
|
347
352
|
if self[0] ~= nil then
|
|
348
353
|
return
|
|
@@ -354,7 +359,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
354
359
|
rawset(self, 1 + i, (select(i, ...)))
|
|
355
360
|
end
|
|
356
361
|
end
|
|
357
|
-
local damageSetters = {
|
|
362
|
+
local damageSetters = {
|
|
363
|
+
amount = BlzSetEventDamage,
|
|
364
|
+
attackType = function(attackType)
|
|
365
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
366
|
+
end,
|
|
367
|
+
damageType = BlzSetEventDamageType,
|
|
368
|
+
weaponType = BlzSetEventWeaponType
|
|
369
|
+
}
|
|
358
370
|
local jlimitopByOperator = {
|
|
359
371
|
[0] = LESS_THAN_OR_EQUAL,
|
|
360
372
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -398,6 +410,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
398
410
|
self.unit = unit
|
|
399
411
|
self.index = index
|
|
400
412
|
end
|
|
413
|
+
__TS__SetDescriptor(
|
|
414
|
+
UnitWeapon.prototype,
|
|
415
|
+
"isEnabled",
|
|
416
|
+
{
|
|
417
|
+
get = function(self)
|
|
418
|
+
return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
|
|
419
|
+
end,
|
|
420
|
+
set = function(self, isEnabled)
|
|
421
|
+
BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
|
|
422
|
+
end
|
|
423
|
+
},
|
|
424
|
+
true
|
|
425
|
+
)
|
|
401
426
|
__TS__SetDescriptor(
|
|
402
427
|
UnitWeapon.prototype,
|
|
403
428
|
"cooldown",
|
|
@@ -432,6 +457,19 @@ __TS__SetDescriptor(
|
|
|
432
457
|
},
|
|
433
458
|
true
|
|
434
459
|
)
|
|
460
|
+
__TS__SetDescriptor(
|
|
461
|
+
UnitWeapon.prototype,
|
|
462
|
+
"allowedTargetCombatClassifications",
|
|
463
|
+
{
|
|
464
|
+
get = function(self)
|
|
465
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
466
|
+
end,
|
|
467
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
468
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
469
|
+
end
|
|
470
|
+
},
|
|
471
|
+
true
|
|
472
|
+
)
|
|
435
473
|
__TS__SetDescriptor(
|
|
436
474
|
UnitWeapon.prototype,
|
|
437
475
|
"damageBase",
|
|
@@ -636,16 +674,26 @@ local function delayHealthChecksCallback(unit)
|
|
|
636
674
|
end
|
|
637
675
|
end
|
|
638
676
|
local nextSyncId = 1
|
|
639
|
-
local unitBySyncId = setmetatable({}, {__mode = "
|
|
677
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
678
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
679
|
+
local function addAbility(unit, abilityTypeId)
|
|
680
|
+
local ____unitAddAbility_result_0
|
|
681
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
682
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
683
|
+
else
|
|
684
|
+
____unitAddAbility_result_0 = nil
|
|
685
|
+
end
|
|
686
|
+
return ____unitAddAbility_result_0
|
|
687
|
+
end
|
|
640
688
|
____exports.Unit = __TS__Class()
|
|
641
689
|
local Unit = ____exports.Unit
|
|
642
690
|
Unit.name = "Unit"
|
|
643
691
|
__TS__ClassExtends(Unit, Handle)
|
|
644
692
|
function Unit.prototype.____constructor(self, handle)
|
|
645
693
|
Handle.prototype.____constructor(self, handle)
|
|
646
|
-
local
|
|
647
|
-
nextSyncId =
|
|
648
|
-
self.syncId =
|
|
694
|
+
local ____nextSyncId_1 = nextSyncId
|
|
695
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
696
|
+
self.syncId = ____nextSyncId_1
|
|
649
697
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
650
698
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
651
699
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -677,6 +725,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
677
725
|
end
|
|
678
726
|
function Unit.prototype.onDestroy(self)
|
|
679
727
|
local handle = self.handle
|
|
728
|
+
self[107] = getUnitX(handle)
|
|
729
|
+
self[108] = getUnitY(handle)
|
|
680
730
|
if not self._owner then
|
|
681
731
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
682
732
|
end
|
|
@@ -744,17 +794,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
744
794
|
end}
|
|
745
795
|
end
|
|
746
796
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
747
|
-
local
|
|
748
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
797
|
+
local ____combatClassification_2 = combatClassification
|
|
798
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
749
799
|
end
|
|
750
800
|
function Unit.prototype.addClassification(self, classification)
|
|
751
|
-
return
|
|
801
|
+
return UnitAddType(self.handle, classification)
|
|
752
802
|
end
|
|
753
803
|
function Unit.prototype.removeClassification(self, classification)
|
|
754
|
-
return
|
|
804
|
+
return UnitRemoveType(self.handle, classification)
|
|
755
805
|
end
|
|
756
806
|
function Unit.prototype.hasClassification(self, classification)
|
|
757
|
-
return
|
|
807
|
+
return IsUnitType(self.handle, classification)
|
|
758
808
|
end
|
|
759
809
|
function Unit.prototype.isVisibleTo(self, player)
|
|
760
810
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -763,13 +813,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
763
813
|
return isUnitInvisible(self.handle, player.handle)
|
|
764
814
|
end
|
|
765
815
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
766
|
-
local
|
|
816
|
+
local ____temp_3
|
|
767
817
|
if type(x) == "number" then
|
|
768
|
-
|
|
818
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
769
819
|
else
|
|
770
|
-
|
|
820
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
771
821
|
end
|
|
772
|
-
return
|
|
822
|
+
return ____temp_3
|
|
773
823
|
end
|
|
774
824
|
function Unit.prototype.isAllyOf(self, unit)
|
|
775
825
|
return isUnitAlly(
|
|
@@ -787,13 +837,27 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
787
837
|
if type(animation) == "number" then
|
|
788
838
|
setUnitAnimationByIndex(self.handle, animation)
|
|
789
839
|
elseif rarity then
|
|
790
|
-
|
|
840
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
791
841
|
else
|
|
792
842
|
setUnitAnimation(self.handle, animation)
|
|
793
843
|
end
|
|
794
844
|
end
|
|
845
|
+
function Unit.prototype.resetAnimation(self)
|
|
846
|
+
ResetUnitAnimation(self.handle)
|
|
847
|
+
end
|
|
795
848
|
function Unit.prototype.queueAnimation(self, animation)
|
|
796
|
-
|
|
849
|
+
QueueUnitAnimation(self.handle, animation)
|
|
850
|
+
end
|
|
851
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
852
|
+
local firstWeapon = self.firstWeapon
|
|
853
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
854
|
+
return firstWeapon
|
|
855
|
+
end
|
|
856
|
+
local secondWeapon = self.secondWeapon
|
|
857
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
858
|
+
return secondWeapon
|
|
859
|
+
end
|
|
860
|
+
return nil
|
|
797
861
|
end
|
|
798
862
|
function Unit.prototype.delayHealthChecks(self)
|
|
799
863
|
self[103] = (self[103] or 0) + 1
|
|
@@ -806,21 +870,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
806
870
|
return IsUnitSelected(self.handle, player.handle)
|
|
807
871
|
end
|
|
808
872
|
function Unit.prototype.explode(self)
|
|
809
|
-
|
|
873
|
+
SetUnitExploded(self.handle, true)
|
|
810
874
|
killUnit(self.handle)
|
|
811
875
|
end
|
|
812
876
|
function Unit.prototype.kill(self)
|
|
813
877
|
killUnit(self.handle)
|
|
814
878
|
end
|
|
815
879
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
816
|
-
local
|
|
817
|
-
local
|
|
818
|
-
local
|
|
819
|
-
if
|
|
820
|
-
|
|
880
|
+
local ____ReviveHero_6 = ReviveHero
|
|
881
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
882
|
+
local ____doEffect_4 = doEffect
|
|
883
|
+
if ____doEffect_4 == nil then
|
|
884
|
+
____doEffect_4 = false
|
|
821
885
|
end
|
|
822
|
-
__TS__SparseArrayPush(
|
|
823
|
-
|
|
886
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
887
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
824
888
|
end
|
|
825
889
|
function Unit.prototype.healTarget(self, target, amount)
|
|
826
890
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -863,17 +927,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
863
927
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
864
928
|
end
|
|
865
929
|
function Unit.prototype.addAbility(self, abilityId)
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
930
|
+
local ability = UnitAbility:of(
|
|
931
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
932
|
+
abilityId,
|
|
933
|
+
self
|
|
934
|
+
)
|
|
935
|
+
if ability ~= nil then
|
|
872
936
|
local abilities = self.abilities
|
|
873
937
|
abilities[#abilities + 1] = ability
|
|
874
|
-
return ability
|
|
875
938
|
end
|
|
876
|
-
return
|
|
939
|
+
return ability
|
|
877
940
|
end
|
|
878
941
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
879
942
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -887,31 +950,21 @@ end
|
|
|
887
950
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
888
951
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
889
952
|
end
|
|
890
|
-
function Unit.prototype.
|
|
891
|
-
local
|
|
892
|
-
|
|
893
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
894
|
-
return nil
|
|
895
|
-
end
|
|
896
|
-
return UnitAbility:of(
|
|
897
|
-
getUnitAbility(self.handle, abilityId),
|
|
898
|
-
abilityId,
|
|
899
|
-
self
|
|
900
|
-
)
|
|
953
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
954
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
955
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
901
956
|
end
|
|
902
|
-
function Unit.prototype.removeAbility(self,
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
end
|
|
957
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
958
|
+
local abilities = self.abilities
|
|
959
|
+
for i = 1, #abilities do
|
|
960
|
+
if abilities[i].typeId == abilityTypeId then
|
|
961
|
+
local ability = abilities[i]
|
|
962
|
+
tremove(abilities, i)
|
|
963
|
+
ability:destroy()
|
|
964
|
+
return true
|
|
911
965
|
end
|
|
912
|
-
return true
|
|
913
966
|
end
|
|
914
|
-
return
|
|
967
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
915
968
|
end
|
|
916
969
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
917
970
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -925,12 +978,34 @@ end
|
|
|
925
978
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
926
979
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
927
980
|
end
|
|
981
|
+
function Unit.prototype.interruptMovement(self)
|
|
982
|
+
local handle = self.handle
|
|
983
|
+
unitDisableAbility(
|
|
984
|
+
handle,
|
|
985
|
+
fourCC("Amov"),
|
|
986
|
+
true,
|
|
987
|
+
false
|
|
988
|
+
)
|
|
989
|
+
unitDisableAbility(
|
|
990
|
+
handle,
|
|
991
|
+
fourCC("Amov"),
|
|
992
|
+
false,
|
|
993
|
+
false
|
|
994
|
+
)
|
|
995
|
+
end
|
|
928
996
|
function Unit.prototype.interruptAttack(self)
|
|
929
997
|
unitInterruptAttack(self.handle)
|
|
930
998
|
end
|
|
931
999
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
932
|
-
|
|
933
|
-
unitDisableAbility(
|
|
1000
|
+
local handle = self.handle
|
|
1001
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
1002
|
+
Timer:run(
|
|
1003
|
+
unitDisableAbility,
|
|
1004
|
+
handle,
|
|
1005
|
+
abilityId,
|
|
1006
|
+
false,
|
|
1007
|
+
false
|
|
1008
|
+
)
|
|
934
1009
|
end
|
|
935
1010
|
function Unit.prototype.getDistanceTo(self, target)
|
|
936
1011
|
local handle = self.handle
|
|
@@ -1191,7 +1266,15 @@ __TS__SetDescriptor(
|
|
|
1191
1266
|
Unit.prototype,
|
|
1192
1267
|
"isIllusion",
|
|
1193
1268
|
{get = function(self)
|
|
1194
|
-
return
|
|
1269
|
+
return IsUnitIllusion(self.handle)
|
|
1270
|
+
end},
|
|
1271
|
+
true
|
|
1272
|
+
)
|
|
1273
|
+
__TS__SetDescriptor(
|
|
1274
|
+
Unit.prototype,
|
|
1275
|
+
"isStunned",
|
|
1276
|
+
{get = function(self)
|
|
1277
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1195
1278
|
end},
|
|
1196
1279
|
true
|
|
1197
1280
|
)
|
|
@@ -1268,6 +1351,19 @@ __TS__SetDescriptor(
|
|
|
1268
1351
|
},
|
|
1269
1352
|
true
|
|
1270
1353
|
)
|
|
1354
|
+
__TS__SetDescriptor(
|
|
1355
|
+
Unit.prototype,
|
|
1356
|
+
"primaryAttribute",
|
|
1357
|
+
{
|
|
1358
|
+
get = function(self)
|
|
1359
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1360
|
+
end,
|
|
1361
|
+
set = function(self, primaryAttribute)
|
|
1362
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1363
|
+
end
|
|
1364
|
+
},
|
|
1365
|
+
true
|
|
1366
|
+
)
|
|
1271
1367
|
__TS__SetDescriptor(
|
|
1272
1368
|
Unit.prototype,
|
|
1273
1369
|
"strengthBase",
|
|
@@ -1392,14 +1488,14 @@ __TS__SetDescriptor(
|
|
|
1392
1488
|
return not self[106]
|
|
1393
1489
|
end,
|
|
1394
1490
|
set = function(self, isTeamGlowVisible)
|
|
1395
|
-
|
|
1396
|
-
local
|
|
1491
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1492
|
+
local ____temp_7
|
|
1397
1493
|
if not isTeamGlowVisible then
|
|
1398
|
-
|
|
1494
|
+
____temp_7 = true
|
|
1399
1495
|
else
|
|
1400
|
-
|
|
1496
|
+
____temp_7 = nil
|
|
1401
1497
|
end
|
|
1402
|
-
self[106] =
|
|
1498
|
+
self[106] = ____temp_7
|
|
1403
1499
|
end
|
|
1404
1500
|
},
|
|
1405
1501
|
true
|
|
@@ -1408,9 +1504,9 @@ __TS__SetDescriptor(
|
|
|
1408
1504
|
Unit.prototype,
|
|
1409
1505
|
"color",
|
|
1410
1506
|
{set = function(self, color)
|
|
1411
|
-
|
|
1507
|
+
SetUnitColor(self.handle, color.handle)
|
|
1412
1508
|
if self[106] then
|
|
1413
|
-
|
|
1509
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1414
1510
|
end
|
|
1415
1511
|
end},
|
|
1416
1512
|
true
|
|
@@ -1579,7 +1675,7 @@ __TS__SetDescriptor(
|
|
|
1579
1675
|
"x",
|
|
1580
1676
|
{
|
|
1581
1677
|
get = function(self)
|
|
1582
|
-
return getUnitX(self.handle)
|
|
1678
|
+
return self[107] or getUnitX(self.handle)
|
|
1583
1679
|
end,
|
|
1584
1680
|
set = function(self, v)
|
|
1585
1681
|
SetUnitX(self.handle, v)
|
|
@@ -1592,7 +1688,7 @@ __TS__SetDescriptor(
|
|
|
1592
1688
|
"y",
|
|
1593
1689
|
{
|
|
1594
1690
|
get = function(self)
|
|
1595
|
-
return getUnitY(self.handle)
|
|
1691
|
+
return self[108] or getUnitY(self.handle)
|
|
1596
1692
|
end,
|
|
1597
1693
|
set = function(self, v)
|
|
1598
1694
|
SetUnitY(self.handle, v)
|
|
@@ -1678,10 +1774,10 @@ __TS__SetDescriptor(
|
|
|
1678
1774
|
"gold",
|
|
1679
1775
|
{
|
|
1680
1776
|
get = function(self)
|
|
1681
|
-
return
|
|
1777
|
+
return GetResourceAmount(self.handle)
|
|
1682
1778
|
end,
|
|
1683
1779
|
set = function(self, gold)
|
|
1684
|
-
|
|
1780
|
+
SetResourceAmount(self.handle, gold)
|
|
1685
1781
|
end
|
|
1686
1782
|
},
|
|
1687
1783
|
true
|
|
@@ -1809,6 +1905,19 @@ __TS__SetDescriptor(
|
|
|
1809
1905
|
end},
|
|
1810
1906
|
true
|
|
1811
1907
|
)
|
|
1908
|
+
__TS__SetDescriptor(
|
|
1909
|
+
Unit.prototype,
|
|
1910
|
+
"movementType",
|
|
1911
|
+
{
|
|
1912
|
+
get = function(self)
|
|
1913
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1914
|
+
end,
|
|
1915
|
+
set = function(self, movementType)
|
|
1916
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1917
|
+
end
|
|
1918
|
+
},
|
|
1919
|
+
true
|
|
1920
|
+
)
|
|
1812
1921
|
__TS__SetDescriptor(
|
|
1813
1922
|
Unit.prototype,
|
|
1814
1923
|
"pathing",
|
|
@@ -1990,6 +2099,14 @@ __TS__SetDescriptor(
|
|
|
1990
2099
|
end},
|
|
1991
2100
|
true
|
|
1992
2101
|
)
|
|
2102
|
+
__TS__SetDescriptor(
|
|
2103
|
+
Unit.prototype,
|
|
2104
|
+
"targetAcquiredEvent",
|
|
2105
|
+
{get = function(self)
|
|
2106
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2107
|
+
end},
|
|
2108
|
+
true
|
|
2109
|
+
)
|
|
1993
2110
|
__TS__SetDescriptor(
|
|
1994
2111
|
Unit.prototype,
|
|
1995
2112
|
"onSelect",
|
|
@@ -2125,25 +2242,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2125
2242
|
InitializingEvent,
|
|
2126
2243
|
function(event)
|
|
2127
2244
|
local function listener(unit, id)
|
|
2128
|
-
local
|
|
2245
|
+
local ____GetSpellTargetUnit_result_10
|
|
2129
2246
|
if GetSpellTargetUnit() then
|
|
2130
|
-
|
|
2247
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2131
2248
|
else
|
|
2132
|
-
local
|
|
2249
|
+
local ____GetSpellTargetItem_result_9
|
|
2133
2250
|
if GetSpellTargetItem() then
|
|
2134
|
-
|
|
2251
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2135
2252
|
else
|
|
2136
|
-
local
|
|
2253
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2137
2254
|
if GetSpellTargetDestructable() then
|
|
2138
|
-
|
|
2255
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2139
2256
|
else
|
|
2140
|
-
|
|
2257
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2141
2258
|
end
|
|
2142
|
-
|
|
2259
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2143
2260
|
end
|
|
2144
|
-
|
|
2261
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2145
2262
|
end
|
|
2146
|
-
local target =
|
|
2263
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2147
2264
|
if target then
|
|
2148
2265
|
invoke(event, unit, id, target)
|
|
2149
2266
|
end
|
|
@@ -2315,10 +2432,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2315
2432
|
____exports.UnitTriggerEvent,
|
|
2316
2433
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2317
2434
|
function()
|
|
2318
|
-
local
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2435
|
+
local handle = getOrderedUnit()
|
|
2436
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2437
|
+
local unit = ____exports.Unit:of(handle)
|
|
2438
|
+
if unit.state == 1 then
|
|
2439
|
+
return unit, getIssuedOrderId()
|
|
2440
|
+
end
|
|
2322
2441
|
end
|
|
2323
2442
|
return IgnoreEvent
|
|
2324
2443
|
end
|
|
@@ -2349,38 +2468,57 @@ Unit.onDamaging = (function()
|
|
|
2349
2468
|
if source and source.typeId == dummyUnitId then
|
|
2350
2469
|
source = nil
|
|
2351
2470
|
end
|
|
2352
|
-
local target = BlzGetEventDamageTarget()
|
|
2471
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2472
|
+
local metadata = damageMetadataByTarget[target]
|
|
2473
|
+
damageMetadataByTarget[target] = nil
|
|
2353
2474
|
local data = {
|
|
2354
2475
|
amount = GetEventDamage(),
|
|
2355
|
-
attackType = BlzGetEventAttackType(),
|
|
2476
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2356
2477
|
damageType = BlzGetEventDamageType(),
|
|
2357
2478
|
weaponType = BlzGetEventWeaponType(),
|
|
2358
|
-
|
|
2479
|
+
metadata = metadata,
|
|
2480
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2481
|
+
originalAmount = GetEventDamage(),
|
|
2482
|
+
originalMetadata = metadata,
|
|
2483
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2359
2484
|
}
|
|
2360
2485
|
if data.isAttack and source then
|
|
2361
|
-
|
|
2362
|
-
if weapon == -1 then
|
|
2363
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2364
|
-
weapon = 0
|
|
2365
|
-
end
|
|
2366
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2486
|
+
data.weapon = source:chooseWeapon(target)
|
|
2367
2487
|
end
|
|
2368
2488
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2369
2489
|
invoke(
|
|
2370
2490
|
event,
|
|
2371
2491
|
source,
|
|
2372
|
-
|
|
2492
|
+
target,
|
|
2373
2493
|
setmetatable(
|
|
2374
2494
|
{},
|
|
2375
2495
|
{
|
|
2376
2496
|
__index = data,
|
|
2377
2497
|
__newindex = function(self, key, value)
|
|
2378
|
-
damageSetters[key]
|
|
2498
|
+
local damageSetter = damageSetters[key]
|
|
2499
|
+
if damageSetter ~= nil then
|
|
2500
|
+
damageSetter(value)
|
|
2501
|
+
end
|
|
2379
2502
|
data[key] = value
|
|
2380
2503
|
end
|
|
2381
2504
|
}
|
|
2382
2505
|
)
|
|
2383
2506
|
)
|
|
2507
|
+
if data[0] and source then
|
|
2508
|
+
local sourceOwner = source.owner.handle
|
|
2509
|
+
data[1] = sourceOwner
|
|
2510
|
+
local targetOwner = target.owner.handle
|
|
2511
|
+
data[2] = targetOwner
|
|
2512
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2513
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2514
|
+
data[3] = true
|
|
2515
|
+
end
|
|
2516
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2517
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2518
|
+
data[4] = true
|
|
2519
|
+
end
|
|
2520
|
+
end
|
|
2521
|
+
damagingEventByTarget[target] = data
|
|
2384
2522
|
return
|
|
2385
2523
|
end
|
|
2386
2524
|
BlzSetEventDamage(0)
|
|
@@ -2388,7 +2526,7 @@ Unit.onDamaging = (function()
|
|
|
2388
2526
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2389
2527
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2390
2528
|
local sourceOwner = source.owner.handle
|
|
2391
|
-
local targetOwner =
|
|
2529
|
+
local targetOwner = target.owner.handle
|
|
2392
2530
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2393
2531
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2394
2532
|
Timer:run(function()
|
|
@@ -2404,23 +2542,19 @@ Unit.onDamaging = (function()
|
|
|
2404
2542
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2405
2543
|
local condition = ____value[1]
|
|
2406
2544
|
local action = ____value[2]
|
|
2407
|
-
if condition(
|
|
2408
|
-
source,
|
|
2409
|
-
____exports.Unit:of(target),
|
|
2410
|
-
data
|
|
2411
|
-
) then
|
|
2545
|
+
if condition(source, target, data) then
|
|
2412
2546
|
action(
|
|
2413
2547
|
source,
|
|
2414
|
-
|
|
2548
|
+
target,
|
|
2415
2549
|
setmetatable(
|
|
2416
2550
|
{fire = function()
|
|
2417
2551
|
UnitDamageTarget(
|
|
2418
2552
|
source.handle,
|
|
2419
|
-
target,
|
|
2553
|
+
target.handle,
|
|
2420
2554
|
data.amount,
|
|
2421
2555
|
true,
|
|
2422
2556
|
true,
|
|
2423
|
-
data.attackType,
|
|
2557
|
+
attackTypeToNative(data.attackType),
|
|
2424
2558
|
data.damageType,
|
|
2425
2559
|
data.weaponType
|
|
2426
2560
|
)
|
|
@@ -2447,26 +2581,50 @@ Unit.onDamage = __TS__New(
|
|
|
2447
2581
|
if source and source.typeId == dummyUnitId then
|
|
2448
2582
|
source = nil
|
|
2449
2583
|
end
|
|
2584
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2585
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2586
|
+
damagingEventByTarget[target] = nil
|
|
2450
2587
|
local data = {
|
|
2451
2588
|
amount = GetEventDamage(),
|
|
2452
|
-
attackType = BlzGetEventAttackType(),
|
|
2589
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2453
2590
|
damageType = BlzGetEventDamageType(),
|
|
2454
2591
|
weaponType = BlzGetEventWeaponType(),
|
|
2592
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2455
2593
|
isAttack = BlzGetEventIsAttack(),
|
|
2456
|
-
originalAmount = GetEventDamage(),
|
|
2594
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2595
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2457
2596
|
preventDeath = damageEventPreventDeath
|
|
2458
2597
|
}
|
|
2598
|
+
if damagingEvent then
|
|
2599
|
+
for key, value in pairs(damagingEvent) do
|
|
2600
|
+
if isAttribute(key) then
|
|
2601
|
+
data[key] = value
|
|
2602
|
+
end
|
|
2603
|
+
end
|
|
2604
|
+
local sourceOwner = damagingEvent[1]
|
|
2605
|
+
if sourceOwner then
|
|
2606
|
+
local targetOwner = damagingEvent[2]
|
|
2607
|
+
if damagingEvent[3] then
|
|
2608
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2609
|
+
end
|
|
2610
|
+
if damagingEvent[4] then
|
|
2611
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2612
|
+
end
|
|
2613
|
+
end
|
|
2614
|
+
end
|
|
2459
2615
|
local evData = setmetatable(
|
|
2460
2616
|
{},
|
|
2461
2617
|
{
|
|
2462
2618
|
__index = data,
|
|
2463
2619
|
__newindex = function(self, key, value)
|
|
2464
|
-
damageSetters[key]
|
|
2620
|
+
local damageSetter = damageSetters[key]
|
|
2621
|
+
if damageSetter ~= nil then
|
|
2622
|
+
damageSetter(value)
|
|
2623
|
+
end
|
|
2465
2624
|
data[key] = value
|
|
2466
2625
|
end
|
|
2467
2626
|
}
|
|
2468
2627
|
)
|
|
2469
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2470
2628
|
invoke(event, source, target, evData)
|
|
2471
2629
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2472
2630
|
local bonusHealth = math.ceil(evData.amount)
|
|
@@ -2509,8 +2667,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2509
2667
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2510
2668
|
function()
|
|
2511
2669
|
local unit = getTriggerUnit()
|
|
2512
|
-
|
|
2513
|
-
|
|
2670
|
+
local item = getManipulatedItem()
|
|
2671
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2672
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2514
2673
|
end
|
|
2515
2674
|
return IgnoreEvent
|
|
2516
2675
|
end
|
|
@@ -2519,9 +2678,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2519
2678
|
____exports.UnitTriggerEvent,
|
|
2520
2679
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2521
2680
|
function()
|
|
2522
|
-
local
|
|
2523
|
-
|
|
2524
|
-
|
|
2681
|
+
local unitHandle = getTriggerUnit()
|
|
2682
|
+
local itemHandle = getManipulatedItem()
|
|
2683
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2684
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2685
|
+
local item = Item:of(itemHandle)
|
|
2686
|
+
if item.owner ~= unit then
|
|
2687
|
+
return unit, item
|
|
2688
|
+
end
|
|
2525
2689
|
end
|
|
2526
2690
|
return IgnoreEvent
|
|
2527
2691
|
end
|
|
@@ -2529,16 +2693,59 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2529
2693
|
Unit.itemUsedEvent = __TS__New(
|
|
2530
2694
|
____exports.UnitTriggerEvent,
|
|
2531
2695
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2532
|
-
function()
|
|
2696
|
+
function()
|
|
2697
|
+
local unit = getTriggerUnit()
|
|
2698
|
+
local item = getManipulatedItem()
|
|
2699
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2700
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2701
|
+
end
|
|
2702
|
+
return IgnoreEvent
|
|
2703
|
+
end
|
|
2533
2704
|
)
|
|
2534
2705
|
Unit.itemStackedEvent = __TS__New(
|
|
2535
2706
|
____exports.UnitTriggerEvent,
|
|
2536
2707
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2537
|
-
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(
|
|
2708
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2709
|
+
)
|
|
2710
|
+
__TS__ObjectDefineProperty(
|
|
2711
|
+
Unit,
|
|
2712
|
+
"itemChargesChangedEvent",
|
|
2713
|
+
{get = function(self)
|
|
2714
|
+
local event = __TS__New(Event)
|
|
2715
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2716
|
+
local unit = item.owner
|
|
2717
|
+
if unit ~= nil then
|
|
2718
|
+
invoke(event, unit, item)
|
|
2719
|
+
end
|
|
2720
|
+
end)
|
|
2721
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2722
|
+
return event
|
|
2723
|
+
end}
|
|
2724
|
+
)
|
|
2725
|
+
__TS__ObjectDefineProperty(
|
|
2726
|
+
Unit,
|
|
2727
|
+
"itemUseOrderEvent",
|
|
2728
|
+
{get = function(self)
|
|
2729
|
+
local event = __TS__New(Event)
|
|
2730
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2731
|
+
local slot = order - orderId("useslot0")
|
|
2732
|
+
local function listener(unit)
|
|
2733
|
+
local item = unit.items[slot + 1]
|
|
2734
|
+
if item ~= nil then
|
|
2735
|
+
invoke(event, unit, item)
|
|
2736
|
+
end
|
|
2737
|
+
end
|
|
2738
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2739
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2740
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2741
|
+
end
|
|
2742
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2743
|
+
return event
|
|
2744
|
+
end}
|
|
2538
2745
|
)
|
|
2539
2746
|
__TS__ObjectDefineProperty(
|
|
2540
2747
|
Unit,
|
|
2541
|
-
"
|
|
2748
|
+
"itemMoveOrderEvent",
|
|
2542
2749
|
{get = function(self)
|
|
2543
2750
|
local event = __TS__New(Event)
|
|
2544
2751
|
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
@@ -2556,7 +2763,7 @@ __TS__ObjectDefineProperty(
|
|
|
2556
2763
|
end
|
|
2557
2764
|
end)
|
|
2558
2765
|
end
|
|
2559
|
-
rawset(self, "
|
|
2766
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2560
2767
|
return event
|
|
2561
2768
|
end}
|
|
2562
2769
|
)
|