warscript 0.0.1-dev.c16baee → 0.0.1-dev.c1c578a
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 +8 -0
- package/core/types/frame.lua +93 -1
- package/core/types/handle.lua +2 -0
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +6 -7
- package/core/types/timer.lua +18 -21
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/native.d.ts +840 -786
- package/engine/behavior.d.ts +2 -2
- package/engine/behavior.lua +6 -6
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +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 +35 -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 +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +20 -4
- package/engine/behaviour/ability.lua +111 -38
- package/engine/behaviour/unit.d.ts +7 -0
- package/engine/behaviour/unit.lua +20 -0
- package/engine/buff.d.ts +101 -39
- package/engine/buff.lua +458 -203
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +16 -13
- package/engine/internal/ability.lua +80 -76
- package/engine/internal/item/ability.lua +106 -0
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/item.d.ts +4 -3
- package/engine/internal/item.lua +56 -25
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +10 -1
- package/engine/internal/unit/ability.lua +36 -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/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+ability.lua +2 -2
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +24 -5
- package/engine/internal/unit.d.ts +44 -12
- package/engine/internal/unit.lua +267 -124
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -17
- package/engine/object-data/entry/ability-type.lua +89 -33
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.d.ts +15 -1
- package/engine/object-data/entry/item-type.lua +93 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +10 -3
- package/engine/object-data/entry/unit-type.lua +155 -92
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +26 -3
- package/engine/object-field/ability.lua +54 -1
- package/engine/object-field/unit.d.ts +46 -3
- package/engine/object-field/unit.lua +173 -7
- package/engine/object-field.d.ts +11 -3
- package/engine/object-field.lua +162 -76
- 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/unit.d.ts +3 -0
- package/engine/unit.lua +3 -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/functions.d.ts +1 -0
- package/utility/functions.lua +1 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +12 -2
- package/utility/linked-set.lua +8 -2
- package/utility/lua-maps.d.ts +3 -0
- package/utility/lua-maps.lua +16 -0
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +1 -0
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
package/engine/internal/unit.lua
CHANGED
|
@@ -51,12 +51,19 @@ local ____arrays = require("utility.arrays")
|
|
|
51
51
|
local forEach = ____arrays.forEach
|
|
52
52
|
local ____math = require("math")
|
|
53
53
|
local min = ____math.min
|
|
54
|
+
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
55
|
+
local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
|
|
56
|
+
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
57
|
+
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
58
|
+
local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
|
|
59
|
+
local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
|
|
60
|
+
local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
|
|
61
|
+
local ____attributes = require("attributes")
|
|
62
|
+
local isAttribute = ____attributes.isAttribute
|
|
54
63
|
local match = string.match
|
|
55
64
|
local ____tostring = _G.tostring
|
|
56
65
|
local setUnitAnimation = SetUnitAnimation
|
|
57
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
58
66
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
59
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
60
67
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
61
68
|
local getUnitRealField = BlzGetUnitRealField
|
|
62
69
|
local getHeroStr = GetHeroStr
|
|
@@ -75,9 +82,9 @@ local setUnitScale = SetUnitScale
|
|
|
75
82
|
local setUnitPosition = SetUnitPosition
|
|
76
83
|
local setUnitTimeScale = SetUnitTimeScale
|
|
77
84
|
local getHandleId = GetHandleId
|
|
85
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
78
86
|
local createUnit = CreateUnit
|
|
79
87
|
local killUnit = KillUnit
|
|
80
|
-
local setUnitExploded = SetUnitExploded
|
|
81
88
|
local removeUnit = RemoveUnit
|
|
82
89
|
local getUnitTypeId = GetUnitTypeId
|
|
83
90
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -93,8 +100,6 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
93
100
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
94
101
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
95
102
|
local isUnitInRange = IsUnitInRange
|
|
96
|
-
local setResourceAmount = SetResourceAmount
|
|
97
|
-
local getResourceAmount = GetResourceAmount
|
|
98
103
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
99
104
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
100
105
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
@@ -125,8 +130,6 @@ local isUnitType = IsUnitType
|
|
|
125
130
|
local isUnitAlly = IsUnitAlly
|
|
126
131
|
local isUnitEnemy = IsUnitEnemy
|
|
127
132
|
local getOwningPlayer = GetOwningPlayer
|
|
128
|
-
local setUnitColor = SetUnitColor
|
|
129
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
130
133
|
____exports.UnitClassification = {}
|
|
131
134
|
local UnitClassification = ____exports.UnitClassification
|
|
132
135
|
do
|
|
@@ -136,6 +139,7 @@ do
|
|
|
136
139
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
137
140
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
138
141
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
142
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
139
143
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
140
144
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
141
145
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -290,7 +294,6 @@ local function dispatch(event, idGetter, argsGetter)
|
|
|
290
294
|
return event[id]
|
|
291
295
|
end
|
|
292
296
|
if not initialized then
|
|
293
|
-
local invoke = Event.invoke
|
|
294
297
|
event:addListener(function(...)
|
|
295
298
|
local id = idGetter(...)
|
|
296
299
|
local dispatched = rawget(self, id)
|
|
@@ -328,7 +331,6 @@ local function dispatchAbility(event)
|
|
|
328
331
|
return event[id]
|
|
329
332
|
end
|
|
330
333
|
if not initialized then
|
|
331
|
-
local invoke = Event.invoke
|
|
332
334
|
event:addListener(function(unit, ability, ...)
|
|
333
335
|
local dispatched = rawget(self, ability.typeId)
|
|
334
336
|
if dispatched ~= nil then
|
|
@@ -356,7 +358,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
356
358
|
rawset(self, 1 + i, (select(i, ...)))
|
|
357
359
|
end
|
|
358
360
|
end
|
|
359
|
-
local damageSetters = {
|
|
361
|
+
local damageSetters = {
|
|
362
|
+
amount = BlzSetEventDamage,
|
|
363
|
+
attackType = function(attackType)
|
|
364
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
365
|
+
end,
|
|
366
|
+
damageType = BlzSetEventDamageType,
|
|
367
|
+
weaponType = BlzSetEventWeaponType
|
|
368
|
+
}
|
|
360
369
|
local jlimitopByOperator = {
|
|
361
370
|
[0] = LESS_THAN_OR_EQUAL,
|
|
362
371
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -564,17 +573,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
564
573
|
____exports.Unit:of(unit)
|
|
565
574
|
)
|
|
566
575
|
end
|
|
567
|
-
if not unitAddAbility(unit, abilityId) then
|
|
568
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
569
|
-
return UnitAbility:of(
|
|
570
|
-
ability,
|
|
571
|
-
abilityId,
|
|
572
|
-
____exports.Unit:of(unit)
|
|
573
|
-
)
|
|
574
|
-
end
|
|
575
|
-
else
|
|
576
|
-
unitRemoveAbility(unit, abilityId)
|
|
577
|
-
end
|
|
578
576
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
579
577
|
local item = unitItemInSlot(unit, i)
|
|
580
578
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -632,15 +630,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
632
630
|
dummies[player] = dummy
|
|
633
631
|
end
|
|
634
632
|
local function delayHealthChecksCallback(unit)
|
|
635
|
-
local counter = (unit[
|
|
633
|
+
local counter = (unit[103] or 0) - 1
|
|
636
634
|
if counter ~= 0 then
|
|
637
|
-
unit[
|
|
635
|
+
unit[103] = counter
|
|
638
636
|
return
|
|
639
637
|
end
|
|
640
|
-
unit[
|
|
641
|
-
local healthBonus = unit[
|
|
638
|
+
unit[103] = nil
|
|
639
|
+
local healthBonus = unit[104]
|
|
642
640
|
if healthBonus ~= nil then
|
|
643
|
-
unit[
|
|
641
|
+
unit[104] = nil
|
|
644
642
|
local handle = unit.handle
|
|
645
643
|
BlzSetUnitMaxHP(
|
|
646
644
|
handle,
|
|
@@ -648,12 +646,18 @@ local function delayHealthChecksCallback(unit)
|
|
|
648
646
|
)
|
|
649
647
|
end
|
|
650
648
|
end
|
|
649
|
+
local nextSyncId = 1
|
|
650
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
651
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
651
652
|
____exports.Unit = __TS__Class()
|
|
652
653
|
local Unit = ____exports.Unit
|
|
653
654
|
Unit.name = "Unit"
|
|
654
655
|
__TS__ClassExtends(Unit, Handle)
|
|
655
656
|
function Unit.prototype.____constructor(self, handle)
|
|
656
657
|
Handle.prototype.____constructor(self, handle)
|
|
658
|
+
local ____nextSyncId_0 = nextSyncId
|
|
659
|
+
nextSyncId = ____nextSyncId_0 + 1
|
|
660
|
+
self.syncId = ____nextSyncId_0
|
|
657
661
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
658
662
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
659
663
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -666,6 +670,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
666
670
|
fourCC("Amrf")
|
|
667
671
|
))
|
|
668
672
|
end
|
|
673
|
+
unitBySyncId[self.syncId] = self
|
|
669
674
|
local ____ = self.abilities
|
|
670
675
|
end
|
|
671
676
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -684,6 +689,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
684
689
|
end
|
|
685
690
|
function Unit.prototype.onDestroy(self)
|
|
686
691
|
local handle = self.handle
|
|
692
|
+
self[107] = getUnitX(handle)
|
|
693
|
+
self[108] = getUnitY(handle)
|
|
687
694
|
if not self._owner then
|
|
688
695
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
689
696
|
end
|
|
@@ -706,6 +713,10 @@ function Unit.prototype.onDestroy(self)
|
|
|
706
713
|
if eventsToDestroy ~= nil then
|
|
707
714
|
forEach(eventsToDestroy, "destroy")
|
|
708
715
|
end
|
|
716
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
|
|
717
|
+
unitRemoveAbility(handle, leaveDetectAbilityId)
|
|
718
|
+
removeUnit(handle)
|
|
719
|
+
end
|
|
709
720
|
return Handle.prototype.onDestroy(self)
|
|
710
721
|
end
|
|
711
722
|
function Unit.prototype.addAttackHandler(self, condition, action)
|
|
@@ -747,8 +758,8 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
747
758
|
end}
|
|
748
759
|
end
|
|
749
760
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
750
|
-
local
|
|
751
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
761
|
+
local ____combatClassification_1 = combatClassification
|
|
762
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
|
|
752
763
|
end
|
|
753
764
|
function Unit.prototype.addClassification(self, classification)
|
|
754
765
|
return unitAddType(self.handle, classification)
|
|
@@ -766,13 +777,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
766
777
|
return isUnitInvisible(self.handle, player.handle)
|
|
767
778
|
end
|
|
768
779
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
769
|
-
local
|
|
780
|
+
local ____temp_2
|
|
770
781
|
if type(x) == "number" then
|
|
771
|
-
|
|
782
|
+
____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
|
|
772
783
|
else
|
|
773
|
-
|
|
784
|
+
____temp_2 = isUnitInRange(self.handle, x.handle, y)
|
|
774
785
|
end
|
|
775
|
-
return
|
|
786
|
+
return ____temp_2
|
|
776
787
|
end
|
|
777
788
|
function Unit.prototype.isAllyOf(self, unit)
|
|
778
789
|
return isUnitAlly(
|
|
@@ -790,16 +801,19 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
790
801
|
if type(animation) == "number" then
|
|
791
802
|
setUnitAnimationByIndex(self.handle, animation)
|
|
792
803
|
elseif rarity then
|
|
793
|
-
|
|
804
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
794
805
|
else
|
|
795
806
|
setUnitAnimation(self.handle, animation)
|
|
796
807
|
end
|
|
797
808
|
end
|
|
809
|
+
function Unit.prototype.resetAnimation(self)
|
|
810
|
+
ResetUnitAnimation(self.handle)
|
|
811
|
+
end
|
|
798
812
|
function Unit.prototype.queueAnimation(self, animation)
|
|
799
|
-
|
|
813
|
+
QueueUnitAnimation(self.handle, animation)
|
|
800
814
|
end
|
|
801
815
|
function Unit.prototype.delayHealthChecks(self)
|
|
802
|
-
self[
|
|
816
|
+
self[103] = (self[103] or 0) + 1
|
|
803
817
|
Timer:run(delayHealthChecksCallback, self)
|
|
804
818
|
end
|
|
805
819
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -809,21 +823,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
809
823
|
return IsUnitSelected(self.handle, player.handle)
|
|
810
824
|
end
|
|
811
825
|
function Unit.prototype.explode(self)
|
|
812
|
-
|
|
826
|
+
SetUnitExploded(self.handle, true)
|
|
813
827
|
killUnit(self.handle)
|
|
814
828
|
end
|
|
815
829
|
function Unit.prototype.kill(self)
|
|
816
830
|
killUnit(self.handle)
|
|
817
831
|
end
|
|
818
832
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
819
|
-
local
|
|
820
|
-
local
|
|
821
|
-
local
|
|
822
|
-
if
|
|
823
|
-
|
|
833
|
+
local ____ReviveHero_5 = ReviveHero
|
|
834
|
+
local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
|
|
835
|
+
local ____doEffect_3 = doEffect
|
|
836
|
+
if ____doEffect_3 == nil then
|
|
837
|
+
____doEffect_3 = false
|
|
824
838
|
end
|
|
825
|
-
__TS__SparseArrayPush(
|
|
826
|
-
|
|
839
|
+
__TS__SparseArrayPush(____array_4, ____doEffect_3)
|
|
840
|
+
____ReviveHero_5(__TS__SparseArraySpread(____array_4))
|
|
827
841
|
end
|
|
828
842
|
function Unit.prototype.healTarget(self, target, amount)
|
|
829
843
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -863,7 +877,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
863
877
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
864
878
|
end
|
|
865
879
|
function Unit.prototype.itemInSlot(self, slot)
|
|
866
|
-
return Item:of(
|
|
880
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
867
881
|
end
|
|
868
882
|
function Unit.prototype.addAbility(self, abilityId)
|
|
869
883
|
if unitAddAbility(self.handle, abilityId) then
|
|
@@ -932,8 +946,15 @@ function Unit.prototype.interruptAttack(self)
|
|
|
932
946
|
unitInterruptAttack(self.handle)
|
|
933
947
|
end
|
|
934
948
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
935
|
-
|
|
936
|
-
unitDisableAbility(
|
|
949
|
+
local handle = self.handle
|
|
950
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
951
|
+
Timer:run(
|
|
952
|
+
unitDisableAbility,
|
|
953
|
+
handle,
|
|
954
|
+
abilityId,
|
|
955
|
+
false,
|
|
956
|
+
false
|
|
957
|
+
)
|
|
937
958
|
end
|
|
938
959
|
function Unit.prototype.getDistanceTo(self, target)
|
|
939
960
|
local handle = self.handle
|
|
@@ -993,18 +1014,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
993
1014
|
self:decrementStunCounter()
|
|
994
1015
|
end
|
|
995
1016
|
function Unit.prototype.incrementStunCounter(self)
|
|
996
|
-
local stunCounter = self[
|
|
997
|
-
if not self[
|
|
1017
|
+
local stunCounter = self[102] or 0
|
|
1018
|
+
if not self[101] or stunCounter >= 0 then
|
|
998
1019
|
BlzPauseUnitEx(self.handle, true)
|
|
999
1020
|
end
|
|
1000
|
-
self[
|
|
1021
|
+
self[102] = stunCounter + 1
|
|
1001
1022
|
end
|
|
1002
1023
|
function Unit.prototype.decrementStunCounter(self)
|
|
1003
|
-
local stunCounter = self[
|
|
1004
|
-
if not self[
|
|
1024
|
+
local stunCounter = self[102] or 0
|
|
1025
|
+
if not self[101] or stunCounter >= 1 then
|
|
1005
1026
|
BlzPauseUnitEx(self.handle, false)
|
|
1006
1027
|
end
|
|
1007
|
-
self[
|
|
1028
|
+
self[102] = stunCounter - 1
|
|
1008
1029
|
end
|
|
1009
1030
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1010
1031
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1106,8 +1127,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1106
1127
|
)
|
|
1107
1128
|
return targetCollection
|
|
1108
1129
|
end
|
|
1109
|
-
function Unit.getSelectionOf(self, player)
|
|
1110
|
-
|
|
1130
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1131
|
+
if target == nil then
|
|
1132
|
+
target = {}
|
|
1133
|
+
end
|
|
1134
|
+
targetCollection = target
|
|
1111
1135
|
targetCollectionNextIndex = 1
|
|
1112
1136
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1113
1137
|
return targetCollection
|
|
@@ -1129,6 +1153,9 @@ end
|
|
|
1129
1153
|
function Unit.prototype.__tostring(self)
|
|
1130
1154
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1131
1155
|
end
|
|
1156
|
+
function Unit.getBySyncId(self, syncId)
|
|
1157
|
+
return unitBySyncId[syncId]
|
|
1158
|
+
end
|
|
1132
1159
|
__TS__SetDescriptor(
|
|
1133
1160
|
Unit.prototype,
|
|
1134
1161
|
"_deltas",
|
|
@@ -1192,6 +1219,14 @@ __TS__SetDescriptor(
|
|
|
1192
1219
|
end},
|
|
1193
1220
|
true
|
|
1194
1221
|
)
|
|
1222
|
+
__TS__SetDescriptor(
|
|
1223
|
+
Unit.prototype,
|
|
1224
|
+
"isStunned",
|
|
1225
|
+
{get = function(self)
|
|
1226
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1227
|
+
end},
|
|
1228
|
+
true
|
|
1229
|
+
)
|
|
1195
1230
|
__TS__SetDescriptor(
|
|
1196
1231
|
Unit.prototype,
|
|
1197
1232
|
"combatClassifications",
|
|
@@ -1265,6 +1300,19 @@ __TS__SetDescriptor(
|
|
|
1265
1300
|
},
|
|
1266
1301
|
true
|
|
1267
1302
|
)
|
|
1303
|
+
__TS__SetDescriptor(
|
|
1304
|
+
Unit.prototype,
|
|
1305
|
+
"primaryAttribute",
|
|
1306
|
+
{
|
|
1307
|
+
get = function(self)
|
|
1308
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1309
|
+
end,
|
|
1310
|
+
set = function(self, primaryAttribute)
|
|
1311
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1312
|
+
end
|
|
1313
|
+
},
|
|
1314
|
+
true
|
|
1315
|
+
)
|
|
1268
1316
|
__TS__SetDescriptor(
|
|
1269
1317
|
Unit.prototype,
|
|
1270
1318
|
"strengthBase",
|
|
@@ -1386,17 +1434,17 @@ __TS__SetDescriptor(
|
|
|
1386
1434
|
"isTeamGlowVisible",
|
|
1387
1435
|
{
|
|
1388
1436
|
get = function(self)
|
|
1389
|
-
return not self[
|
|
1437
|
+
return not self[106]
|
|
1390
1438
|
end,
|
|
1391
1439
|
set = function(self, isTeamGlowVisible)
|
|
1392
|
-
|
|
1393
|
-
local
|
|
1440
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1441
|
+
local ____temp_6
|
|
1394
1442
|
if not isTeamGlowVisible then
|
|
1395
|
-
|
|
1443
|
+
____temp_6 = true
|
|
1396
1444
|
else
|
|
1397
|
-
|
|
1445
|
+
____temp_6 = nil
|
|
1398
1446
|
end
|
|
1399
|
-
self[
|
|
1447
|
+
self[106] = ____temp_6
|
|
1400
1448
|
end
|
|
1401
1449
|
},
|
|
1402
1450
|
true
|
|
@@ -1405,9 +1453,9 @@ __TS__SetDescriptor(
|
|
|
1405
1453
|
Unit.prototype,
|
|
1406
1454
|
"color",
|
|
1407
1455
|
{set = function(self, color)
|
|
1408
|
-
|
|
1409
|
-
if self[
|
|
1410
|
-
|
|
1456
|
+
SetUnitColor(self.handle, color.handle)
|
|
1457
|
+
if self[106] then
|
|
1458
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1411
1459
|
end
|
|
1412
1460
|
end},
|
|
1413
1461
|
true
|
|
@@ -1430,14 +1478,14 @@ __TS__SetDescriptor(
|
|
|
1430
1478
|
"maxHealth",
|
|
1431
1479
|
{
|
|
1432
1480
|
get = function(self)
|
|
1433
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1481
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1434
1482
|
end,
|
|
1435
1483
|
set = function(self, maxHealth)
|
|
1436
|
-
if maxHealth < 1 and self[
|
|
1437
|
-
self[
|
|
1484
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1485
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1438
1486
|
maxHealth = 1
|
|
1439
1487
|
end
|
|
1440
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1488
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1441
1489
|
end
|
|
1442
1490
|
},
|
|
1443
1491
|
true
|
|
@@ -1479,10 +1527,10 @@ __TS__SetDescriptor(
|
|
|
1479
1527
|
"health",
|
|
1480
1528
|
{
|
|
1481
1529
|
get = function(self)
|
|
1482
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1530
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1483
1531
|
end,
|
|
1484
1532
|
set = function(self, health)
|
|
1485
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1533
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1486
1534
|
end
|
|
1487
1535
|
},
|
|
1488
1536
|
true
|
|
@@ -1576,7 +1624,7 @@ __TS__SetDescriptor(
|
|
|
1576
1624
|
"x",
|
|
1577
1625
|
{
|
|
1578
1626
|
get = function(self)
|
|
1579
|
-
return getUnitX(self.handle)
|
|
1627
|
+
return self[107] or getUnitX(self.handle)
|
|
1580
1628
|
end,
|
|
1581
1629
|
set = function(self, v)
|
|
1582
1630
|
SetUnitX(self.handle, v)
|
|
@@ -1589,7 +1637,7 @@ __TS__SetDescriptor(
|
|
|
1589
1637
|
"y",
|
|
1590
1638
|
{
|
|
1591
1639
|
get = function(self)
|
|
1592
|
-
return getUnitY(self.handle)
|
|
1640
|
+
return self[108] or getUnitY(self.handle)
|
|
1593
1641
|
end,
|
|
1594
1642
|
set = function(self, v)
|
|
1595
1643
|
SetUnitY(self.handle, v)
|
|
@@ -1675,10 +1723,10 @@ __TS__SetDescriptor(
|
|
|
1675
1723
|
"gold",
|
|
1676
1724
|
{
|
|
1677
1725
|
get = function(self)
|
|
1678
|
-
return
|
|
1726
|
+
return GetResourceAmount(self.handle)
|
|
1679
1727
|
end,
|
|
1680
1728
|
set = function(self, gold)
|
|
1681
|
-
|
|
1729
|
+
SetResourceAmount(self.handle, gold)
|
|
1682
1730
|
end
|
|
1683
1731
|
},
|
|
1684
1732
|
true
|
|
@@ -1693,17 +1741,17 @@ __TS__SetDescriptor(
|
|
|
1693
1741
|
set = function(self, isPaused)
|
|
1694
1742
|
local handle = self.handle
|
|
1695
1743
|
if isPaused and not IsUnitPaused(handle) then
|
|
1696
|
-
self[
|
|
1697
|
-
for _ = self[
|
|
1744
|
+
self[101] = true
|
|
1745
|
+
for _ = self[102] or 0, -1 do
|
|
1698
1746
|
BlzPauseUnitEx(handle, true)
|
|
1699
1747
|
end
|
|
1700
1748
|
PauseUnit(handle, true)
|
|
1701
1749
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1702
1750
|
PauseUnit(handle, false)
|
|
1703
|
-
for _ = self[
|
|
1751
|
+
for _ = self[102] or 0, -1 do
|
|
1704
1752
|
BlzPauseUnitEx(handle, false)
|
|
1705
1753
|
end
|
|
1706
|
-
self[
|
|
1754
|
+
self[101] = nil
|
|
1707
1755
|
end
|
|
1708
1756
|
end
|
|
1709
1757
|
},
|
|
@@ -1806,6 +1854,19 @@ __TS__SetDescriptor(
|
|
|
1806
1854
|
end},
|
|
1807
1855
|
true
|
|
1808
1856
|
)
|
|
1857
|
+
__TS__SetDescriptor(
|
|
1858
|
+
Unit.prototype,
|
|
1859
|
+
"movementType",
|
|
1860
|
+
{
|
|
1861
|
+
get = function(self)
|
|
1862
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1863
|
+
end,
|
|
1864
|
+
set = function(self, movementType)
|
|
1865
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1866
|
+
end
|
|
1867
|
+
},
|
|
1868
|
+
true
|
|
1869
|
+
)
|
|
1809
1870
|
__TS__SetDescriptor(
|
|
1810
1871
|
Unit.prototype,
|
|
1811
1872
|
"pathing",
|
|
@@ -2060,7 +2121,6 @@ Unit.onDecay = __TS__New(
|
|
|
2060
2121
|
Unit.onResurrect = __TS__New(
|
|
2061
2122
|
InitializingEvent,
|
|
2062
2123
|
function(event)
|
|
2063
|
-
local invoke = Event.invoke
|
|
2064
2124
|
local dead = setmetatable({}, {__mode = "k"})
|
|
2065
2125
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
2066
2126
|
dead[unit] = true
|
|
@@ -2076,10 +2136,15 @@ Unit.onResurrect = __TS__New(
|
|
|
2076
2136
|
Unit.morphEvent = __TS__New(
|
|
2077
2137
|
InitializingEvent,
|
|
2078
2138
|
function(event)
|
|
2139
|
+
local function ifNotLeft(unit)
|
|
2140
|
+
local handle = unit.handle
|
|
2141
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2142
|
+
invoke(event, unit)
|
|
2143
|
+
end
|
|
2144
|
+
end
|
|
2079
2145
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
2080
2146
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
2081
|
-
|
|
2082
|
-
Timer:run(Event.invoke, event, unit)
|
|
2147
|
+
Timer:run(ifNotLeft, unit)
|
|
2083
2148
|
end
|
|
2084
2149
|
end)
|
|
2085
2150
|
end
|
|
@@ -2117,27 +2182,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
2117
2182
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
2118
2183
|
InitializingEvent,
|
|
2119
2184
|
function(event)
|
|
2120
|
-
local invoke = Event.invoke
|
|
2121
2185
|
local function listener(unit, id)
|
|
2122
|
-
local
|
|
2186
|
+
local ____GetSpellTargetUnit_result_9
|
|
2123
2187
|
if GetSpellTargetUnit() then
|
|
2124
|
-
|
|
2188
|
+
____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2125
2189
|
else
|
|
2126
|
-
local
|
|
2190
|
+
local ____GetSpellTargetItem_result_8
|
|
2127
2191
|
if GetSpellTargetItem() then
|
|
2128
|
-
|
|
2192
|
+
____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
|
|
2129
2193
|
else
|
|
2130
|
-
local
|
|
2194
|
+
local ____GetSpellTargetDestructable_result_7
|
|
2131
2195
|
if GetSpellTargetDestructable() then
|
|
2132
|
-
|
|
2196
|
+
____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
|
|
2133
2197
|
else
|
|
2134
|
-
|
|
2198
|
+
____GetSpellTargetDestructable_result_7 = nil
|
|
2135
2199
|
end
|
|
2136
|
-
|
|
2200
|
+
____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
|
|
2137
2201
|
end
|
|
2138
|
-
|
|
2202
|
+
____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
|
|
2139
2203
|
end
|
|
2140
|
-
local target =
|
|
2204
|
+
local target = ____GetSpellTargetUnit_result_9
|
|
2141
2205
|
if target then
|
|
2142
2206
|
invoke(event, unit, id, target)
|
|
2143
2207
|
end
|
|
@@ -2309,10 +2373,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2309
2373
|
____exports.UnitTriggerEvent,
|
|
2310
2374
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2311
2375
|
function()
|
|
2312
|
-
local
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2376
|
+
local handle = getOrderedUnit()
|
|
2377
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2378
|
+
local unit = ____exports.Unit:of(handle)
|
|
2379
|
+
if unit.state == 1 then
|
|
2380
|
+
return unit, getIssuedOrderId()
|
|
2381
|
+
end
|
|
2316
2382
|
end
|
|
2317
2383
|
return IgnoreEvent
|
|
2318
2384
|
end
|
|
@@ -2334,7 +2400,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2334
2400
|
)
|
|
2335
2401
|
Unit.onDamaging = (function()
|
|
2336
2402
|
local event = __TS__New(Event)
|
|
2337
|
-
local invoke = Event.invoke
|
|
2338
2403
|
local trigger = CreateTrigger()
|
|
2339
2404
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2340
2405
|
TriggerAddCondition(
|
|
@@ -2344,13 +2409,18 @@ Unit.onDamaging = (function()
|
|
|
2344
2409
|
if source and source.typeId == dummyUnitId then
|
|
2345
2410
|
source = nil
|
|
2346
2411
|
end
|
|
2347
|
-
local target = BlzGetEventDamageTarget()
|
|
2412
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2413
|
+
local metadata = damageMetadataByTarget[target]
|
|
2414
|
+
damageMetadataByTarget[target] = nil
|
|
2348
2415
|
local data = {
|
|
2349
2416
|
amount = GetEventDamage(),
|
|
2350
|
-
attackType = BlzGetEventAttackType(),
|
|
2417
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2351
2418
|
damageType = BlzGetEventDamageType(),
|
|
2352
2419
|
weaponType = BlzGetEventWeaponType(),
|
|
2353
|
-
|
|
2420
|
+
metadata = metadata,
|
|
2421
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2422
|
+
originalAmount = GetEventDamage(),
|
|
2423
|
+
originalMetadata = metadata
|
|
2354
2424
|
}
|
|
2355
2425
|
if data.isAttack and source then
|
|
2356
2426
|
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
|
|
@@ -2364,18 +2434,22 @@ Unit.onDamaging = (function()
|
|
|
2364
2434
|
invoke(
|
|
2365
2435
|
event,
|
|
2366
2436
|
source,
|
|
2367
|
-
|
|
2437
|
+
target,
|
|
2368
2438
|
setmetatable(
|
|
2369
2439
|
{},
|
|
2370
2440
|
{
|
|
2371
2441
|
__index = data,
|
|
2372
2442
|
__newindex = function(self, key, value)
|
|
2373
|
-
damageSetters[key]
|
|
2443
|
+
local damageSetter = damageSetters[key]
|
|
2444
|
+
if damageSetter ~= nil then
|
|
2445
|
+
damageSetter(value)
|
|
2446
|
+
end
|
|
2374
2447
|
data[key] = value
|
|
2375
2448
|
end
|
|
2376
2449
|
}
|
|
2377
2450
|
)
|
|
2378
2451
|
)
|
|
2452
|
+
damagingEventByTarget[target] = data
|
|
2379
2453
|
return
|
|
2380
2454
|
end
|
|
2381
2455
|
BlzSetEventDamage(0)
|
|
@@ -2383,7 +2457,7 @@ Unit.onDamaging = (function()
|
|
|
2383
2457
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2384
2458
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2385
2459
|
local sourceOwner = source.owner.handle
|
|
2386
|
-
local targetOwner =
|
|
2460
|
+
local targetOwner = target.owner.handle
|
|
2387
2461
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2388
2462
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2389
2463
|
Timer:run(function()
|
|
@@ -2399,23 +2473,19 @@ Unit.onDamaging = (function()
|
|
|
2399
2473
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2400
2474
|
local condition = ____value[1]
|
|
2401
2475
|
local action = ____value[2]
|
|
2402
|
-
if condition(
|
|
2403
|
-
source,
|
|
2404
|
-
____exports.Unit:of(target),
|
|
2405
|
-
data
|
|
2406
|
-
) then
|
|
2476
|
+
if condition(source, target, data) then
|
|
2407
2477
|
action(
|
|
2408
2478
|
source,
|
|
2409
|
-
|
|
2479
|
+
target,
|
|
2410
2480
|
setmetatable(
|
|
2411
2481
|
{fire = function()
|
|
2412
2482
|
UnitDamageTarget(
|
|
2413
2483
|
source.handle,
|
|
2414
|
-
target,
|
|
2484
|
+
target.handle,
|
|
2415
2485
|
data.amount,
|
|
2416
2486
|
true,
|
|
2417
2487
|
true,
|
|
2418
|
-
data.attackType,
|
|
2488
|
+
attackTypeToNative(data.attackType),
|
|
2419
2489
|
data.damageType,
|
|
2420
2490
|
data.weaponType
|
|
2421
2491
|
)
|
|
@@ -2433,7 +2503,6 @@ end)()
|
|
|
2433
2503
|
Unit.onDamage = __TS__New(
|
|
2434
2504
|
InitializingEvent,
|
|
2435
2505
|
function(event)
|
|
2436
|
-
local invoke = Event.invoke
|
|
2437
2506
|
local trigger = CreateTrigger()
|
|
2438
2507
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2439
2508
|
TriggerAddCondition(
|
|
@@ -2443,29 +2512,44 @@ Unit.onDamage = __TS__New(
|
|
|
2443
2512
|
if source and source.typeId == dummyUnitId then
|
|
2444
2513
|
source = nil
|
|
2445
2514
|
end
|
|
2515
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2516
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2517
|
+
damagingEventByTarget[target] = nil
|
|
2446
2518
|
local data = {
|
|
2447
2519
|
amount = GetEventDamage(),
|
|
2448
|
-
attackType = BlzGetEventAttackType(),
|
|
2520
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2449
2521
|
damageType = BlzGetEventDamageType(),
|
|
2450
2522
|
weaponType = BlzGetEventWeaponType(),
|
|
2523
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2451
2524
|
isAttack = BlzGetEventIsAttack(),
|
|
2525
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2526
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2452
2527
|
preventDeath = damageEventPreventDeath
|
|
2453
2528
|
}
|
|
2529
|
+
if damagingEvent then
|
|
2530
|
+
for key, value in pairs(damagingEvent) do
|
|
2531
|
+
if isAttribute(key) then
|
|
2532
|
+
data[key] = value
|
|
2533
|
+
end
|
|
2534
|
+
end
|
|
2535
|
+
end
|
|
2454
2536
|
local evData = setmetatable(
|
|
2455
2537
|
{},
|
|
2456
2538
|
{
|
|
2457
2539
|
__index = data,
|
|
2458
2540
|
__newindex = function(self, key, value)
|
|
2459
|
-
damageSetters[key]
|
|
2541
|
+
local damageSetter = damageSetters[key]
|
|
2542
|
+
if damageSetter ~= nil then
|
|
2543
|
+
damageSetter(value)
|
|
2544
|
+
end
|
|
2460
2545
|
data[key] = value
|
|
2461
2546
|
end
|
|
2462
2547
|
}
|
|
2463
2548
|
)
|
|
2464
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2465
2549
|
invoke(event, source, target, evData)
|
|
2466
2550
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2467
2551
|
local bonusHealth = math.ceil(evData.amount)
|
|
2468
|
-
target[
|
|
2552
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2469
2553
|
BlzSetUnitMaxHP(
|
|
2470
2554
|
target.handle,
|
|
2471
2555
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2479,7 +2563,7 @@ Unit.onDamage = __TS__New(
|
|
|
2479
2563
|
evData[0],
|
|
2480
2564
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2481
2565
|
)
|
|
2482
|
-
target[
|
|
2566
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2483
2567
|
SetWidgetLife(
|
|
2484
2568
|
target.handle,
|
|
2485
2569
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2499,32 +2583,91 @@ Unit.onDamage = __TS__New(
|
|
|
2499
2583
|
DestroyTrigger(trigger)
|
|
2500
2584
|
end
|
|
2501
2585
|
)
|
|
2502
|
-
Unit.
|
|
2586
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2503
2587
|
____exports.UnitTriggerEvent,
|
|
2504
2588
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2505
2589
|
function()
|
|
2506
2590
|
local unit = getTriggerUnit()
|
|
2507
|
-
|
|
2508
|
-
|
|
2591
|
+
local item = getManipulatedItem()
|
|
2592
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2593
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2509
2594
|
end
|
|
2510
2595
|
return IgnoreEvent
|
|
2511
2596
|
end
|
|
2512
2597
|
)
|
|
2513
|
-
Unit.
|
|
2598
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2514
2599
|
____exports.UnitTriggerEvent,
|
|
2515
2600
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2516
2601
|
function()
|
|
2517
2602
|
local unit = getTriggerUnit()
|
|
2518
|
-
|
|
2519
|
-
|
|
2603
|
+
local item = getManipulatedItem()
|
|
2604
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2605
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2520
2606
|
end
|
|
2521
2607
|
return IgnoreEvent
|
|
2522
2608
|
end
|
|
2523
2609
|
)
|
|
2524
|
-
Unit.
|
|
2610
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2525
2611
|
____exports.UnitTriggerEvent,
|
|
2526
2612
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2527
|
-
function()
|
|
2613
|
+
function()
|
|
2614
|
+
local unit = getTriggerUnit()
|
|
2615
|
+
local item = getManipulatedItem()
|
|
2616
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2617
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2618
|
+
end
|
|
2619
|
+
return IgnoreEvent
|
|
2620
|
+
end
|
|
2621
|
+
)
|
|
2622
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2623
|
+
____exports.UnitTriggerEvent,
|
|
2624
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2625
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2626
|
+
)
|
|
2627
|
+
__TS__ObjectDefineProperty(
|
|
2628
|
+
Unit,
|
|
2629
|
+
"itemUseOrderEvent",
|
|
2630
|
+
{get = function(self)
|
|
2631
|
+
local event = __TS__New(Event)
|
|
2632
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2633
|
+
local slot = order - orderId("useslot0")
|
|
2634
|
+
local function listener(unit)
|
|
2635
|
+
local item = unit.items[slot + 1]
|
|
2636
|
+
if item ~= nil then
|
|
2637
|
+
invoke(event, unit, item)
|
|
2638
|
+
end
|
|
2639
|
+
end
|
|
2640
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2641
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2642
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2643
|
+
end
|
|
2644
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2645
|
+
return event
|
|
2646
|
+
end}
|
|
2647
|
+
)
|
|
2648
|
+
__TS__ObjectDefineProperty(
|
|
2649
|
+
Unit,
|
|
2650
|
+
"itemMoveOrderEvent",
|
|
2651
|
+
{get = function(self)
|
|
2652
|
+
local event = __TS__New(Event)
|
|
2653
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2654
|
+
local slotTo = order - orderId("moveslot0")
|
|
2655
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2656
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2657
|
+
if slotFrom ~= nil then
|
|
2658
|
+
invoke(
|
|
2659
|
+
event,
|
|
2660
|
+
unit,
|
|
2661
|
+
item,
|
|
2662
|
+
slotFrom,
|
|
2663
|
+
slotTo
|
|
2664
|
+
)
|
|
2665
|
+
end
|
|
2666
|
+
end)
|
|
2667
|
+
end
|
|
2668
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2669
|
+
return event
|
|
2670
|
+
end}
|
|
2528
2671
|
)
|
|
2529
2672
|
__TS__ObjectDefineProperty(
|
|
2530
2673
|
Unit,
|