warscript 0.0.1-dev.8561ef7 → 0.0.1-dev.85b1c63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +5 -0
- package/attributes.lua +8 -1
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +6 -0
- package/core/types/frame.lua +101 -13
- 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 +18 -1
- package/decl/native.d.ts +844 -788
- package/engine/behavior.d.ts +6 -2
- package/engine/behavior.lua +90 -33
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +39 -11
- package/engine/behaviour/ability/damage.lua +83 -37
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- 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 +37 -0
- package/engine/behaviour/unit.lua +205 -4
- package/engine/buff.d.ts +102 -42
- package/engine/buff.lua +446 -206
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +23 -14
- package/engine/internal/ability.lua +128 -85
- 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 +6 -2
- package/engine/internal/unit/bonus.lua +23 -1
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit+ability.lua +12 -3
- 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+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +33 -7
- package/engine/internal/unit.d.ts +54 -16
- package/engine/internal/unit.lua +379 -152
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/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 +15 -1
- package/engine/object-data/entry/item-type.lua +93 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +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 +28 -5
- package/engine/object-field/ability.lua +59 -5
- 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 +4 -0
- package/engine/unit.lua +4 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +7 -2
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/buff.lua +2 -3
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/utility/arrays.d.ts +9 -1
- package/utility/arrays.lua +37 -3
- package/utility/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 +12 -2
- package/utility/linked-set.lua +8 -2
- package/utility/lua-maps.d.ts +4 -0
- package/utility/lua-maps.lua +20 -0
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +1 -0
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
- 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
|
|
@@ -630,15 +644,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
630
644
|
dummies[player] = dummy
|
|
631
645
|
end
|
|
632
646
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
647
|
+
local counter = (unit[103] or 0) - 1
|
|
634
648
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
649
|
+
unit[103] = counter
|
|
636
650
|
return
|
|
637
651
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
652
|
+
unit[103] = nil
|
|
653
|
+
local healthBonus = unit[104]
|
|
640
654
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
655
|
+
unit[104] = nil
|
|
642
656
|
local handle = unit.handle
|
|
643
657
|
BlzSetUnitMaxHP(
|
|
644
658
|
handle,
|
|
@@ -646,12 +660,27 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
660
|
)
|
|
647
661
|
end
|
|
648
662
|
end
|
|
663
|
+
local nextSyncId = 1
|
|
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
|
|
649
675
|
____exports.Unit = __TS__Class()
|
|
650
676
|
local Unit = ____exports.Unit
|
|
651
677
|
Unit.name = "Unit"
|
|
652
678
|
__TS__ClassExtends(Unit, Handle)
|
|
653
679
|
function Unit.prototype.____constructor(self, handle)
|
|
654
680
|
Handle.prototype.____constructor(self, handle)
|
|
681
|
+
local ____nextSyncId_1 = nextSyncId
|
|
682
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
683
|
+
self.syncId = ____nextSyncId_1
|
|
655
684
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
685
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
657
686
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -664,6 +693,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
664
693
|
fourCC("Amrf")
|
|
665
694
|
))
|
|
666
695
|
end
|
|
696
|
+
unitBySyncId[self.syncId] = self
|
|
667
697
|
local ____ = self.abilities
|
|
668
698
|
end
|
|
669
699
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -682,6 +712,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
682
712
|
end
|
|
683
713
|
function Unit.prototype.onDestroy(self)
|
|
684
714
|
local handle = self.handle
|
|
715
|
+
self[107] = getUnitX(handle)
|
|
716
|
+
self[108] = getUnitY(handle)
|
|
685
717
|
if not self._owner then
|
|
686
718
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
687
719
|
end
|
|
@@ -749,17 +781,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
781
|
end}
|
|
750
782
|
end
|
|
751
783
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
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
|
|
754
786
|
end
|
|
755
787
|
function Unit.prototype.addClassification(self, classification)
|
|
756
|
-
return
|
|
788
|
+
return UnitAddType(self.handle, classification)
|
|
757
789
|
end
|
|
758
790
|
function Unit.prototype.removeClassification(self, classification)
|
|
759
|
-
return
|
|
791
|
+
return UnitRemoveType(self.handle, classification)
|
|
760
792
|
end
|
|
761
793
|
function Unit.prototype.hasClassification(self, classification)
|
|
762
|
-
return
|
|
794
|
+
return IsUnitType(self.handle, classification)
|
|
763
795
|
end
|
|
764
796
|
function Unit.prototype.isVisibleTo(self, player)
|
|
765
797
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -768,13 +800,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
800
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
801
|
end
|
|
770
802
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
803
|
+
local ____temp_3
|
|
772
804
|
if type(x) == "number" then
|
|
773
|
-
|
|
805
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
806
|
else
|
|
775
|
-
|
|
807
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
776
808
|
end
|
|
777
|
-
return
|
|
809
|
+
return ____temp_3
|
|
778
810
|
end
|
|
779
811
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
812
|
return isUnitAlly(
|
|
@@ -792,16 +824,28 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
792
824
|
if type(animation) == "number" then
|
|
793
825
|
setUnitAnimationByIndex(self.handle, animation)
|
|
794
826
|
elseif rarity then
|
|
795
|
-
|
|
827
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
796
828
|
else
|
|
797
829
|
setUnitAnimation(self.handle, animation)
|
|
798
830
|
end
|
|
799
831
|
end
|
|
832
|
+
function Unit.prototype.resetAnimation(self)
|
|
833
|
+
ResetUnitAnimation(self.handle)
|
|
834
|
+
end
|
|
800
835
|
function Unit.prototype.queueAnimation(self, animation)
|
|
801
|
-
|
|
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
|
|
802
846
|
end
|
|
803
847
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
848
|
+
self[103] = (self[103] or 0) + 1
|
|
805
849
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
850
|
end
|
|
807
851
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -811,21 +855,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
811
855
|
return IsUnitSelected(self.handle, player.handle)
|
|
812
856
|
end
|
|
813
857
|
function Unit.prototype.explode(self)
|
|
814
|
-
|
|
858
|
+
SetUnitExploded(self.handle, true)
|
|
815
859
|
killUnit(self.handle)
|
|
816
860
|
end
|
|
817
861
|
function Unit.prototype.kill(self)
|
|
818
862
|
killUnit(self.handle)
|
|
819
863
|
end
|
|
820
864
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
821
|
-
local
|
|
822
|
-
local
|
|
823
|
-
local
|
|
824
|
-
if
|
|
825
|
-
|
|
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
|
|
826
870
|
end
|
|
827
|
-
__TS__SparseArrayPush(
|
|
828
|
-
|
|
871
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
872
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
829
873
|
end
|
|
830
874
|
function Unit.prototype.healTarget(self, target, amount)
|
|
831
875
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -865,20 +909,19 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
865
909
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
866
910
|
end
|
|
867
911
|
function Unit.prototype.itemInSlot(self, slot)
|
|
868
|
-
return Item:of(
|
|
912
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
869
913
|
end
|
|
870
914
|
function Unit.prototype.addAbility(self, abilityId)
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
915
|
+
local ability = UnitAbility:of(
|
|
916
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
917
|
+
abilityId,
|
|
918
|
+
self
|
|
919
|
+
)
|
|
920
|
+
if ability ~= nil then
|
|
877
921
|
local abilities = self.abilities
|
|
878
922
|
abilities[#abilities + 1] = ability
|
|
879
|
-
return ability
|
|
880
923
|
end
|
|
881
|
-
return
|
|
924
|
+
return ability
|
|
882
925
|
end
|
|
883
926
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
884
927
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -893,28 +936,17 @@ function Unit.prototype.hasAbility(self, abilityId)
|
|
|
893
936
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
894
937
|
end
|
|
895
938
|
function Unit.prototype.getAbilityById(self, abilityId)
|
|
896
|
-
local
|
|
897
|
-
|
|
898
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
899
|
-
return nil
|
|
900
|
-
end
|
|
901
|
-
return UnitAbility:of(
|
|
902
|
-
getUnitAbility(self.handle, abilityId),
|
|
903
|
-
abilityId,
|
|
904
|
-
self
|
|
905
|
-
)
|
|
939
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
940
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
906
941
|
end
|
|
907
942
|
function Unit.prototype.removeAbility(self, abilityId)
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
return true
|
|
915
|
-
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
|
|
916
949
|
end
|
|
917
|
-
return true
|
|
918
950
|
end
|
|
919
951
|
return false
|
|
920
952
|
end
|
|
@@ -930,12 +962,34 @@ end
|
|
|
930
962
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
931
963
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
932
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
|
|
933
980
|
function Unit.prototype.interruptAttack(self)
|
|
934
981
|
unitInterruptAttack(self.handle)
|
|
935
982
|
end
|
|
936
983
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
937
|
-
|
|
938
|
-
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
|
+
)
|
|
939
993
|
end
|
|
940
994
|
function Unit.prototype.getDistanceTo(self, target)
|
|
941
995
|
local handle = self.handle
|
|
@@ -995,18 +1049,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
995
1049
|
self:decrementStunCounter()
|
|
996
1050
|
end
|
|
997
1051
|
function Unit.prototype.incrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
1052
|
+
local stunCounter = self[102] or 0
|
|
1053
|
+
if not self[101] or stunCounter >= 0 then
|
|
1000
1054
|
BlzPauseUnitEx(self.handle, true)
|
|
1001
1055
|
end
|
|
1002
|
-
self[
|
|
1056
|
+
self[102] = stunCounter + 1
|
|
1003
1057
|
end
|
|
1004
1058
|
function Unit.prototype.decrementStunCounter(self)
|
|
1005
|
-
local stunCounter = self[
|
|
1006
|
-
if not self[
|
|
1059
|
+
local stunCounter = self[102] or 0
|
|
1060
|
+
if not self[101] or stunCounter >= 1 then
|
|
1007
1061
|
BlzPauseUnitEx(self.handle, false)
|
|
1008
1062
|
end
|
|
1009
|
-
self[
|
|
1063
|
+
self[102] = stunCounter - 1
|
|
1010
1064
|
end
|
|
1011
1065
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1012
1066
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1108,8 +1162,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1108
1162
|
)
|
|
1109
1163
|
return targetCollection
|
|
1110
1164
|
end
|
|
1111
|
-
function Unit.getSelectionOf(self, player)
|
|
1112
|
-
|
|
1165
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1166
|
+
if target == nil then
|
|
1167
|
+
target = {}
|
|
1168
|
+
end
|
|
1169
|
+
targetCollection = target
|
|
1113
1170
|
targetCollectionNextIndex = 1
|
|
1114
1171
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1115
1172
|
return targetCollection
|
|
@@ -1131,6 +1188,9 @@ end
|
|
|
1131
1188
|
function Unit.prototype.__tostring(self)
|
|
1132
1189
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1133
1190
|
end
|
|
1191
|
+
function Unit.getBySyncId(self, syncId)
|
|
1192
|
+
return unitBySyncId[syncId]
|
|
1193
|
+
end
|
|
1134
1194
|
__TS__SetDescriptor(
|
|
1135
1195
|
Unit.prototype,
|
|
1136
1196
|
"_deltas",
|
|
@@ -1190,7 +1250,15 @@ __TS__SetDescriptor(
|
|
|
1190
1250
|
Unit.prototype,
|
|
1191
1251
|
"isIllusion",
|
|
1192
1252
|
{get = function(self)
|
|
1193
|
-
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")
|
|
1194
1262
|
end},
|
|
1195
1263
|
true
|
|
1196
1264
|
)
|
|
@@ -1267,6 +1335,19 @@ __TS__SetDescriptor(
|
|
|
1267
1335
|
},
|
|
1268
1336
|
true
|
|
1269
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
|
+
)
|
|
1270
1351
|
__TS__SetDescriptor(
|
|
1271
1352
|
Unit.prototype,
|
|
1272
1353
|
"strengthBase",
|
|
@@ -1388,17 +1469,17 @@ __TS__SetDescriptor(
|
|
|
1388
1469
|
"isTeamGlowVisible",
|
|
1389
1470
|
{
|
|
1390
1471
|
get = function(self)
|
|
1391
|
-
return not self[
|
|
1472
|
+
return not self[106]
|
|
1392
1473
|
end,
|
|
1393
1474
|
set = function(self, isTeamGlowVisible)
|
|
1394
|
-
|
|
1395
|
-
local
|
|
1475
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1476
|
+
local ____temp_7
|
|
1396
1477
|
if not isTeamGlowVisible then
|
|
1397
|
-
|
|
1478
|
+
____temp_7 = true
|
|
1398
1479
|
else
|
|
1399
|
-
|
|
1480
|
+
____temp_7 = nil
|
|
1400
1481
|
end
|
|
1401
|
-
self[
|
|
1482
|
+
self[106] = ____temp_7
|
|
1402
1483
|
end
|
|
1403
1484
|
},
|
|
1404
1485
|
true
|
|
@@ -1407,9 +1488,9 @@ __TS__SetDescriptor(
|
|
|
1407
1488
|
Unit.prototype,
|
|
1408
1489
|
"color",
|
|
1409
1490
|
{set = function(self, color)
|
|
1410
|
-
|
|
1411
|
-
if self[
|
|
1412
|
-
|
|
1491
|
+
SetUnitColor(self.handle, color.handle)
|
|
1492
|
+
if self[106] then
|
|
1493
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1413
1494
|
end
|
|
1414
1495
|
end},
|
|
1415
1496
|
true
|
|
@@ -1432,14 +1513,14 @@ __TS__SetDescriptor(
|
|
|
1432
1513
|
"maxHealth",
|
|
1433
1514
|
{
|
|
1434
1515
|
get = function(self)
|
|
1435
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1516
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1436
1517
|
end,
|
|
1437
1518
|
set = function(self, maxHealth)
|
|
1438
|
-
if maxHealth < 1 and self[
|
|
1439
|
-
self[
|
|
1519
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1520
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1440
1521
|
maxHealth = 1
|
|
1441
1522
|
end
|
|
1442
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1523
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1443
1524
|
end
|
|
1444
1525
|
},
|
|
1445
1526
|
true
|
|
@@ -1481,10 +1562,10 @@ __TS__SetDescriptor(
|
|
|
1481
1562
|
"health",
|
|
1482
1563
|
{
|
|
1483
1564
|
get = function(self)
|
|
1484
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1565
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1485
1566
|
end,
|
|
1486
1567
|
set = function(self, health)
|
|
1487
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1568
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1488
1569
|
end
|
|
1489
1570
|
},
|
|
1490
1571
|
true
|
|
@@ -1578,7 +1659,7 @@ __TS__SetDescriptor(
|
|
|
1578
1659
|
"x",
|
|
1579
1660
|
{
|
|
1580
1661
|
get = function(self)
|
|
1581
|
-
return getUnitX(self.handle)
|
|
1662
|
+
return self[107] or getUnitX(self.handle)
|
|
1582
1663
|
end,
|
|
1583
1664
|
set = function(self, v)
|
|
1584
1665
|
SetUnitX(self.handle, v)
|
|
@@ -1591,7 +1672,7 @@ __TS__SetDescriptor(
|
|
|
1591
1672
|
"y",
|
|
1592
1673
|
{
|
|
1593
1674
|
get = function(self)
|
|
1594
|
-
return getUnitY(self.handle)
|
|
1675
|
+
return self[108] or getUnitY(self.handle)
|
|
1595
1676
|
end,
|
|
1596
1677
|
set = function(self, v)
|
|
1597
1678
|
SetUnitY(self.handle, v)
|
|
@@ -1677,10 +1758,10 @@ __TS__SetDescriptor(
|
|
|
1677
1758
|
"gold",
|
|
1678
1759
|
{
|
|
1679
1760
|
get = function(self)
|
|
1680
|
-
return
|
|
1761
|
+
return GetResourceAmount(self.handle)
|
|
1681
1762
|
end,
|
|
1682
1763
|
set = function(self, gold)
|
|
1683
|
-
|
|
1764
|
+
SetResourceAmount(self.handle, gold)
|
|
1684
1765
|
end
|
|
1685
1766
|
},
|
|
1686
1767
|
true
|
|
@@ -1695,17 +1776,17 @@ __TS__SetDescriptor(
|
|
|
1695
1776
|
set = function(self, isPaused)
|
|
1696
1777
|
local handle = self.handle
|
|
1697
1778
|
if isPaused and not IsUnitPaused(handle) then
|
|
1698
|
-
self[
|
|
1699
|
-
for _ = self[
|
|
1779
|
+
self[101] = true
|
|
1780
|
+
for _ = self[102] or 0, -1 do
|
|
1700
1781
|
BlzPauseUnitEx(handle, true)
|
|
1701
1782
|
end
|
|
1702
1783
|
PauseUnit(handle, true)
|
|
1703
1784
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1704
1785
|
PauseUnit(handle, false)
|
|
1705
|
-
for _ = self[
|
|
1786
|
+
for _ = self[102] or 0, -1 do
|
|
1706
1787
|
BlzPauseUnitEx(handle, false)
|
|
1707
1788
|
end
|
|
1708
|
-
self[
|
|
1789
|
+
self[101] = nil
|
|
1709
1790
|
end
|
|
1710
1791
|
end
|
|
1711
1792
|
},
|
|
@@ -1808,6 +1889,19 @@ __TS__SetDescriptor(
|
|
|
1808
1889
|
end},
|
|
1809
1890
|
true
|
|
1810
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
|
+
)
|
|
1811
1905
|
__TS__SetDescriptor(
|
|
1812
1906
|
Unit.prototype,
|
|
1813
1907
|
"pathing",
|
|
@@ -1989,6 +2083,14 @@ __TS__SetDescriptor(
|
|
|
1989
2083
|
end},
|
|
1990
2084
|
true
|
|
1991
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
|
+
)
|
|
1992
2094
|
__TS__SetDescriptor(
|
|
1993
2095
|
Unit.prototype,
|
|
1994
2096
|
"onSelect",
|
|
@@ -2124,25 +2226,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2124
2226
|
InitializingEvent,
|
|
2125
2227
|
function(event)
|
|
2126
2228
|
local function listener(unit, id)
|
|
2127
|
-
local
|
|
2229
|
+
local ____GetSpellTargetUnit_result_10
|
|
2128
2230
|
if GetSpellTargetUnit() then
|
|
2129
|
-
|
|
2231
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2130
2232
|
else
|
|
2131
|
-
local
|
|
2233
|
+
local ____GetSpellTargetItem_result_9
|
|
2132
2234
|
if GetSpellTargetItem() then
|
|
2133
|
-
|
|
2235
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2134
2236
|
else
|
|
2135
|
-
local
|
|
2237
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2136
2238
|
if GetSpellTargetDestructable() then
|
|
2137
|
-
|
|
2239
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2138
2240
|
else
|
|
2139
|
-
|
|
2241
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2140
2242
|
end
|
|
2141
|
-
|
|
2243
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2142
2244
|
end
|
|
2143
|
-
|
|
2245
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2144
2246
|
end
|
|
2145
|
-
local target =
|
|
2247
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2146
2248
|
if target then
|
|
2147
2249
|
invoke(event, unit, id, target)
|
|
2148
2250
|
end
|
|
@@ -2314,10 +2416,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2314
2416
|
____exports.UnitTriggerEvent,
|
|
2315
2417
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2316
2418
|
function()
|
|
2317
|
-
local
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
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
|
|
2321
2425
|
end
|
|
2322
2426
|
return IgnoreEvent
|
|
2323
2427
|
end
|
|
@@ -2348,13 +2452,19 @@ Unit.onDamaging = (function()
|
|
|
2348
2452
|
if source and source.typeId == dummyUnitId then
|
|
2349
2453
|
source = nil
|
|
2350
2454
|
end
|
|
2351
|
-
local target = BlzGetEventDamageTarget()
|
|
2455
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2456
|
+
local metadata = damageMetadataByTarget[target]
|
|
2457
|
+
damageMetadataByTarget[target] = nil
|
|
2352
2458
|
local data = {
|
|
2353
2459
|
amount = GetEventDamage(),
|
|
2354
|
-
attackType = BlzGetEventAttackType(),
|
|
2460
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2355
2461
|
damageType = BlzGetEventDamageType(),
|
|
2356
2462
|
weaponType = BlzGetEventWeaponType(),
|
|
2357
|
-
|
|
2463
|
+
metadata = metadata,
|
|
2464
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2465
|
+
originalAmount = GetEventDamage(),
|
|
2466
|
+
originalMetadata = metadata,
|
|
2467
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2358
2468
|
}
|
|
2359
2469
|
if data.isAttack and source then
|
|
2360
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
|
|
@@ -2368,18 +2478,36 @@ Unit.onDamaging = (function()
|
|
|
2368
2478
|
invoke(
|
|
2369
2479
|
event,
|
|
2370
2480
|
source,
|
|
2371
|
-
|
|
2481
|
+
target,
|
|
2372
2482
|
setmetatable(
|
|
2373
2483
|
{},
|
|
2374
2484
|
{
|
|
2375
2485
|
__index = data,
|
|
2376
2486
|
__newindex = function(self, key, value)
|
|
2377
|
-
damageSetters[key]
|
|
2487
|
+
local damageSetter = damageSetters[key]
|
|
2488
|
+
if damageSetter ~= nil then
|
|
2489
|
+
damageSetter(value)
|
|
2490
|
+
end
|
|
2378
2491
|
data[key] = value
|
|
2379
2492
|
end
|
|
2380
2493
|
}
|
|
2381
2494
|
)
|
|
2382
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
|
|
2383
2511
|
return
|
|
2384
2512
|
end
|
|
2385
2513
|
BlzSetEventDamage(0)
|
|
@@ -2387,7 +2515,7 @@ Unit.onDamaging = (function()
|
|
|
2387
2515
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2388
2516
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2389
2517
|
local sourceOwner = source.owner.handle
|
|
2390
|
-
local targetOwner =
|
|
2518
|
+
local targetOwner = target.owner.handle
|
|
2391
2519
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2392
2520
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2393
2521
|
Timer:run(function()
|
|
@@ -2403,23 +2531,19 @@ Unit.onDamaging = (function()
|
|
|
2403
2531
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2404
2532
|
local condition = ____value[1]
|
|
2405
2533
|
local action = ____value[2]
|
|
2406
|
-
if condition(
|
|
2407
|
-
source,
|
|
2408
|
-
____exports.Unit:of(target),
|
|
2409
|
-
data
|
|
2410
|
-
) then
|
|
2534
|
+
if condition(source, target, data) then
|
|
2411
2535
|
action(
|
|
2412
2536
|
source,
|
|
2413
|
-
|
|
2537
|
+
target,
|
|
2414
2538
|
setmetatable(
|
|
2415
2539
|
{fire = function()
|
|
2416
2540
|
UnitDamageTarget(
|
|
2417
2541
|
source.handle,
|
|
2418
|
-
target,
|
|
2542
|
+
target.handle,
|
|
2419
2543
|
data.amount,
|
|
2420
2544
|
true,
|
|
2421
2545
|
true,
|
|
2422
|
-
data.attackType,
|
|
2546
|
+
attackTypeToNative(data.attackType),
|
|
2423
2547
|
data.damageType,
|
|
2424
2548
|
data.weaponType
|
|
2425
2549
|
)
|
|
@@ -2446,29 +2570,54 @@ Unit.onDamage = __TS__New(
|
|
|
2446
2570
|
if source and source.typeId == dummyUnitId then
|
|
2447
2571
|
source = nil
|
|
2448
2572
|
end
|
|
2573
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2574
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2575
|
+
damagingEventByTarget[target] = nil
|
|
2449
2576
|
local data = {
|
|
2450
2577
|
amount = GetEventDamage(),
|
|
2451
|
-
attackType = BlzGetEventAttackType(),
|
|
2578
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2452
2579
|
damageType = BlzGetEventDamageType(),
|
|
2453
2580
|
weaponType = BlzGetEventWeaponType(),
|
|
2581
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2454
2582
|
isAttack = BlzGetEventIsAttack(),
|
|
2583
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2584
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2455
2585
|
preventDeath = damageEventPreventDeath
|
|
2456
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
|
|
2457
2604
|
local evData = setmetatable(
|
|
2458
2605
|
{},
|
|
2459
2606
|
{
|
|
2460
2607
|
__index = data,
|
|
2461
2608
|
__newindex = function(self, key, value)
|
|
2462
|
-
damageSetters[key]
|
|
2609
|
+
local damageSetter = damageSetters[key]
|
|
2610
|
+
if damageSetter ~= nil then
|
|
2611
|
+
damageSetter(value)
|
|
2612
|
+
end
|
|
2463
2613
|
data[key] = value
|
|
2464
2614
|
end
|
|
2465
2615
|
}
|
|
2466
2616
|
)
|
|
2467
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2468
2617
|
invoke(event, source, target, evData)
|
|
2469
2618
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2470
2619
|
local bonusHealth = math.ceil(evData.amount)
|
|
2471
|
-
target[
|
|
2620
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2472
2621
|
BlzSetUnitMaxHP(
|
|
2473
2622
|
target.handle,
|
|
2474
2623
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2482,7 +2631,7 @@ Unit.onDamage = __TS__New(
|
|
|
2482
2631
|
evData[0],
|
|
2483
2632
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2484
2633
|
)
|
|
2485
|
-
target[
|
|
2634
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2486
2635
|
SetWidgetLife(
|
|
2487
2636
|
target.handle,
|
|
2488
2637
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2502,32 +2651,110 @@ Unit.onDamage = __TS__New(
|
|
|
2502
2651
|
DestroyTrigger(trigger)
|
|
2503
2652
|
end
|
|
2504
2653
|
)
|
|
2505
|
-
Unit.
|
|
2654
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2506
2655
|
____exports.UnitTriggerEvent,
|
|
2507
2656
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2508
2657
|
function()
|
|
2509
2658
|
local unit = getTriggerUnit()
|
|
2510
|
-
|
|
2511
|
-
|
|
2659
|
+
local item = getManipulatedItem()
|
|
2660
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2661
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2512
2662
|
end
|
|
2513
2663
|
return IgnoreEvent
|
|
2514
2664
|
end
|
|
2515
2665
|
)
|
|
2516
|
-
Unit.
|
|
2666
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2517
2667
|
____exports.UnitTriggerEvent,
|
|
2518
2668
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2519
2669
|
function()
|
|
2520
|
-
local
|
|
2521
|
-
|
|
2522
|
-
|
|
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
|
|
2523
2678
|
end
|
|
2524
2679
|
return IgnoreEvent
|
|
2525
2680
|
end
|
|
2526
2681
|
)
|
|
2527
|
-
Unit.
|
|
2682
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2528
2683
|
____exports.UnitTriggerEvent,
|
|
2529
2684
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2530
|
-
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
|
|
2693
|
+
)
|
|
2694
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2695
|
+
____exports.UnitTriggerEvent,
|
|
2696
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2697
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2698
|
+
)
|
|
2699
|
+
__TS__ObjectDefineProperty(
|
|
2700
|
+
Unit,
|
|
2701
|
+
"itemChargesChangedEvent",
|
|
2702
|
+
{get = function(self)
|
|
2703
|
+
local event = __TS__New(Event)
|
|
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
|
|
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)
|
|
2754
|
+
end
|
|
2755
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2756
|
+
return event
|
|
2757
|
+
end}
|
|
2531
2758
|
)
|
|
2532
2759
|
__TS__ObjectDefineProperty(
|
|
2533
2760
|
Unit,
|