warscript 0.0.1-dev.dbb3984 → 0.0.1-dev.dc37dce
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +2 -3
- package/core/types/effect.lua +97 -50
- package/core/types/frame.lua +24 -21
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +100 -25
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
- package/engine/behaviour/ability/remove-buffs.lua +49 -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 +28 -7
- package/engine/behaviour/ability.lua +137 -43
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +112 -53
- package/engine/buff.lua +544 -289
- package/engine/internal/ability.d.ts +20 -3
- package/engine/internal/ability.lua +126 -13
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +20 -19
- package/engine/internal/item.lua +191 -74
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- 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/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +128 -3
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +8 -0
- package/engine/internal/unit/bonus.lua +50 -3
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/item.lua +7 -13
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+bonus.lua +3 -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-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +46 -26
- package/engine/internal/unit.lua +444 -270
- 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 +2 -0
- package/engine/local-client.lua +30 -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/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -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/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- 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/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- 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/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -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 +21 -17
- package/engine/object-data/entry/ability-type.lua +177 -40
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- 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 +28 -2
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/item-type.d.ts +3 -1
- package/engine/object-data/entry/item-type.lua +15 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +25 -5
- package/engine/object-data/entry/unit-type.lua +258 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +12 -6
- package/engine/object-field/ability.lua +8 -4
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +25 -6
- package/engine/object-field.lua +359 -116
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +4 -2
- package/engine/standard/fields/ability.lua +4 -2
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +7 -0
- package/engine/unit.lua +7 -0
- package/lualib_bundle.lua +118 -47
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/objutil/object.lua +1 -1
- package/objutil/unit.lua +8 -0
- package/operation.lua +23 -17
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-map.d.ts +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +43 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/records.lua +20 -1
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/internal/unit.lua
CHANGED
|
@@ -51,33 +51,42 @@ 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
|
|
65
|
+
local ____synchronization = require("engine.synchronization")
|
|
66
|
+
local synchronizer = ____synchronization.synchronizer
|
|
67
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
68
|
+
local LinkedMap = ____linked_2Dmap.LinkedMap
|
|
54
69
|
local match = string.match
|
|
55
70
|
local ____tostring = _G.tostring
|
|
56
71
|
local setUnitAnimation = SetUnitAnimation
|
|
57
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
58
72
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
59
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
60
73
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
61
74
|
local getUnitRealField = BlzGetUnitRealField
|
|
62
75
|
local getHeroStr = GetHeroStr
|
|
63
76
|
local getHeroAgi = GetHeroAgi
|
|
64
77
|
local getHeroInt = GetHeroInt
|
|
65
|
-
local setHeroStr = SetHeroStr
|
|
66
|
-
local setHeroAgi = SetHeroAgi
|
|
67
|
-
local setHeroInt = SetHeroInt
|
|
68
78
|
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
69
79
|
local getUnitStringField = BlzGetUnitStringField
|
|
70
80
|
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
71
81
|
local setUnitRealField = BlzSetUnitRealField
|
|
72
82
|
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
73
83
|
local setUnitStringField = BlzSetUnitStringField
|
|
74
|
-
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,15 +102,12 @@ 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
|
|
101
108
|
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
102
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
103
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
104
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
105
111
|
local isUnitInvisible = IsUnitInvisible
|
|
106
112
|
local isUnitVisible = IsUnitVisible
|
|
107
113
|
local getUnitX = GetUnitX
|
|
@@ -118,15 +124,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
118
124
|
local getIssuedOrderId = GetIssuedOrderId
|
|
119
125
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
120
126
|
local unitAlive = UnitAlive
|
|
121
|
-
local unitAddType = UnitAddType
|
|
122
|
-
local unitRemoveType = UnitRemoveType
|
|
123
|
-
local isUnitIllusion = IsUnitIllusion
|
|
124
|
-
local isUnitType = IsUnitType
|
|
125
127
|
local isUnitAlly = IsUnitAlly
|
|
126
128
|
local isUnitEnemy = IsUnitEnemy
|
|
127
129
|
local getOwningPlayer = GetOwningPlayer
|
|
128
|
-
local setUnitColor = SetUnitColor
|
|
129
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
130
130
|
____exports.UnitClassification = {}
|
|
131
131
|
local UnitClassification = ____exports.UnitClassification
|
|
132
132
|
do
|
|
@@ -136,6 +136,7 @@ do
|
|
|
136
136
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
137
137
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
138
138
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
139
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
139
140
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
140
141
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
141
142
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -343,6 +344,9 @@ local function dispatchAbility(event)
|
|
|
343
344
|
}
|
|
344
345
|
)
|
|
345
346
|
end
|
|
347
|
+
local function damagingEventPreventRetaliation(self)
|
|
348
|
+
self[0] = true
|
|
349
|
+
end
|
|
346
350
|
local function damageEventPreventDeath(self, callback, ...)
|
|
347
351
|
if self[0] ~= nil then
|
|
348
352
|
return
|
|
@@ -354,7 +358,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
354
358
|
rawset(self, 1 + i, (select(i, ...)))
|
|
355
359
|
end
|
|
356
360
|
end
|
|
357
|
-
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
|
+
}
|
|
358
369
|
local jlimitopByOperator = {
|
|
359
370
|
[0] = LESS_THAN_OR_EQUAL,
|
|
360
371
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -372,15 +383,27 @@ local modifiers = {
|
|
|
372
383
|
end,
|
|
373
384
|
armor = function(unit, value)
|
|
374
385
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
375
|
-
assert(
|
|
386
|
+
assert(
|
|
387
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
388
|
+
"armor bonus ability must be made permanent",
|
|
389
|
+
unit
|
|
390
|
+
)
|
|
376
391
|
end
|
|
377
|
-
local ability = assert(
|
|
378
|
-
|
|
379
|
-
ability,
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
392
|
+
local ability = assert(
|
|
393
|
+
BlzGetUnitAbility(unit, armorBonusAbilityId),
|
|
394
|
+
"armor bonus ability must be existing",
|
|
395
|
+
unit
|
|
396
|
+
)
|
|
397
|
+
assert(
|
|
398
|
+
BlzSetAbilityRealLevelField(
|
|
399
|
+
ability,
|
|
400
|
+
armorBonusField,
|
|
401
|
+
0,
|
|
402
|
+
BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
|
|
403
|
+
),
|
|
404
|
+
"armor bonus ability field must be set",
|
|
405
|
+
unit
|
|
406
|
+
)
|
|
384
407
|
end
|
|
385
408
|
}
|
|
386
409
|
local getters = {
|
|
@@ -398,6 +421,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
398
421
|
self.unit = unit
|
|
399
422
|
self.index = index
|
|
400
423
|
end
|
|
424
|
+
__TS__SetDescriptor(
|
|
425
|
+
UnitWeapon.prototype,
|
|
426
|
+
"isEnabled",
|
|
427
|
+
{
|
|
428
|
+
get = function(self)
|
|
429
|
+
return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
|
|
430
|
+
end,
|
|
431
|
+
set = function(self, isEnabled)
|
|
432
|
+
BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
|
|
433
|
+
end
|
|
434
|
+
},
|
|
435
|
+
true
|
|
436
|
+
)
|
|
401
437
|
__TS__SetDescriptor(
|
|
402
438
|
UnitWeapon.prototype,
|
|
403
439
|
"cooldown",
|
|
@@ -432,6 +468,19 @@ __TS__SetDescriptor(
|
|
|
432
468
|
},
|
|
433
469
|
true
|
|
434
470
|
)
|
|
471
|
+
__TS__SetDescriptor(
|
|
472
|
+
UnitWeapon.prototype,
|
|
473
|
+
"allowedTargetCombatClassifications",
|
|
474
|
+
{
|
|
475
|
+
get = function(self)
|
|
476
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
477
|
+
end,
|
|
478
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
479
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
480
|
+
end
|
|
481
|
+
},
|
|
482
|
+
true
|
|
483
|
+
)
|
|
435
484
|
__TS__SetDescriptor(
|
|
436
485
|
UnitWeapon.prototype,
|
|
437
486
|
"damageBase",
|
|
@@ -608,26 +657,30 @@ local fieldSetters = {
|
|
|
608
657
|
}
|
|
609
658
|
local dummies = {}
|
|
610
659
|
for ____, player in ipairs(Player.all) do
|
|
611
|
-
local dummy = assert(
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
660
|
+
local dummy = assert(
|
|
661
|
+
createUnit(
|
|
662
|
+
player.handle,
|
|
663
|
+
dummyUnitId,
|
|
664
|
+
0,
|
|
665
|
+
0,
|
|
666
|
+
270
|
|
667
|
+
),
|
|
668
|
+
"dummy must be created",
|
|
669
|
+
player
|
|
670
|
+
)
|
|
618
671
|
ShowUnit(dummy, false)
|
|
619
672
|
dummies[player] = dummy
|
|
620
673
|
end
|
|
621
674
|
local function delayHealthChecksCallback(unit)
|
|
622
|
-
local counter = (unit[
|
|
675
|
+
local counter = (unit[104] or 0) - 1
|
|
623
676
|
if counter ~= 0 then
|
|
624
|
-
unit[
|
|
677
|
+
unit[104] = counter
|
|
625
678
|
return
|
|
626
679
|
end
|
|
627
|
-
unit[
|
|
628
|
-
local healthBonus = unit[
|
|
680
|
+
unit[104] = nil
|
|
681
|
+
local healthBonus = unit[105]
|
|
629
682
|
if healthBonus ~= nil then
|
|
630
|
-
unit[
|
|
683
|
+
unit[105] = nil
|
|
631
684
|
local handle = unit.handle
|
|
632
685
|
BlzSetUnitMaxHP(
|
|
633
686
|
handle,
|
|
@@ -636,50 +689,78 @@ local function delayHealthChecksCallback(unit)
|
|
|
636
689
|
end
|
|
637
690
|
end
|
|
638
691
|
local nextSyncId = 1
|
|
639
|
-
local unitBySyncId = setmetatable({}, {__mode = "
|
|
692
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
693
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
694
|
+
local function addAbility(unit, abilityTypeId)
|
|
695
|
+
local ____unitAddAbility_result_0
|
|
696
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
697
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
698
|
+
else
|
|
699
|
+
____unitAddAbility_result_0 = nil
|
|
700
|
+
end
|
|
701
|
+
return ____unitAddAbility_result_0
|
|
702
|
+
end
|
|
640
703
|
____exports.Unit = __TS__Class()
|
|
641
704
|
local Unit = ____exports.Unit
|
|
642
705
|
Unit.name = "Unit"
|
|
643
706
|
__TS__ClassExtends(Unit, Handle)
|
|
644
707
|
function Unit.prototype.____constructor(self, handle)
|
|
645
708
|
Handle.prototype.____constructor(self, handle)
|
|
646
|
-
local
|
|
647
|
-
nextSyncId =
|
|
648
|
-
self.syncId =
|
|
709
|
+
local ____nextSyncId_1 = nextSyncId
|
|
710
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
711
|
+
self.syncId = ____nextSyncId_1
|
|
649
712
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
650
|
-
assert(
|
|
651
|
-
|
|
713
|
+
assert(
|
|
714
|
+
unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId),
|
|
715
|
+
"leave detection ability must be added",
|
|
716
|
+
self
|
|
717
|
+
)
|
|
718
|
+
assert(
|
|
719
|
+
unitAddAbility(handle, morphDetectAbilityId),
|
|
720
|
+
"morph detection ability must be added",
|
|
721
|
+
self
|
|
722
|
+
)
|
|
652
723
|
if unitAddAbility(
|
|
653
724
|
handle,
|
|
654
725
|
fourCC("Amrf")
|
|
655
726
|
) then
|
|
656
|
-
assert(
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
727
|
+
assert(
|
|
728
|
+
unitRemoveAbility(
|
|
729
|
+
handle,
|
|
730
|
+
fourCC("Amrf")
|
|
731
|
+
),
|
|
732
|
+
"fly ability must be removed after addition",
|
|
733
|
+
self
|
|
734
|
+
)
|
|
660
735
|
end
|
|
661
736
|
unitBySyncId[self.syncId] = self
|
|
662
737
|
local ____ = self.abilities
|
|
663
738
|
end
|
|
664
|
-
function Unit.prototype.getEvent(self,
|
|
665
|
-
self.events = self.events or (
|
|
666
|
-
local eventId = GetHandleId(
|
|
667
|
-
|
|
668
|
-
|
|
739
|
+
function Unit.prototype.getEvent(self, jevent, collector)
|
|
740
|
+
self.events = self.events or __TS__New(LinkedMap)
|
|
741
|
+
local eventId = GetHandleId(jevent)
|
|
742
|
+
local event = self.events:get(eventId)
|
|
743
|
+
if event == nil then
|
|
744
|
+
event = __TS__New(
|
|
669
745
|
TriggerEvent,
|
|
670
746
|
function(trigger)
|
|
671
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
747
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
672
748
|
end,
|
|
673
749
|
collector or (function() return {} end)
|
|
674
750
|
)
|
|
751
|
+
self.events:put(eventId, event)
|
|
675
752
|
end
|
|
676
|
-
return
|
|
753
|
+
return event
|
|
754
|
+
end
|
|
755
|
+
function Unit.prototype.saveData(self)
|
|
756
|
+
local handle = self.handle
|
|
757
|
+
self[108] = self[108] or getUnitX(handle)
|
|
758
|
+
self[109] = self[109] or getUnitY(handle)
|
|
759
|
+
self._owner = self._owner or Player:of(getOwningPlayer(handle))
|
|
677
760
|
end
|
|
678
761
|
function Unit.prototype.onDestroy(self)
|
|
679
762
|
local handle = self.handle
|
|
680
|
-
|
|
681
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
682
|
-
end
|
|
763
|
+
self:saveData()
|
|
683
764
|
local abilities = self.abilities
|
|
684
765
|
for ____, ability in ipairs(abilities) do
|
|
685
766
|
ability:destroy()
|
|
@@ -715,7 +796,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
715
796
|
self._attackHandlers = handlers
|
|
716
797
|
if #handlers == 1 then
|
|
717
798
|
local handle = self.handle
|
|
718
|
-
assert(
|
|
799
|
+
assert(
|
|
800
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
801
|
+
"attack handler ability must be added",
|
|
802
|
+
self
|
|
803
|
+
)
|
|
719
804
|
end
|
|
720
805
|
return handler
|
|
721
806
|
end
|
|
@@ -744,17 +829,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
744
829
|
end}
|
|
745
830
|
end
|
|
746
831
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
747
|
-
local
|
|
748
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
832
|
+
local ____combatClassification_2 = combatClassification
|
|
833
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
749
834
|
end
|
|
750
835
|
function Unit.prototype.addClassification(self, classification)
|
|
751
|
-
return
|
|
836
|
+
return UnitAddType(self.handle, classification)
|
|
752
837
|
end
|
|
753
838
|
function Unit.prototype.removeClassification(self, classification)
|
|
754
|
-
return
|
|
839
|
+
return UnitRemoveType(self.handle, classification)
|
|
755
840
|
end
|
|
756
841
|
function Unit.prototype.hasClassification(self, classification)
|
|
757
|
-
return
|
|
842
|
+
return IsUnitType(self.handle, classification)
|
|
758
843
|
end
|
|
759
844
|
function Unit.prototype.isVisibleTo(self, player)
|
|
760
845
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -763,13 +848,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
763
848
|
return isUnitInvisible(self.handle, player.handle)
|
|
764
849
|
end
|
|
765
850
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
766
|
-
local
|
|
851
|
+
local ____temp_3
|
|
767
852
|
if type(x) == "number" then
|
|
768
|
-
|
|
853
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
769
854
|
else
|
|
770
|
-
|
|
855
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
771
856
|
end
|
|
772
|
-
return
|
|
857
|
+
return ____temp_3
|
|
773
858
|
end
|
|
774
859
|
function Unit.prototype.isAllyOf(self, unit)
|
|
775
860
|
return isUnitAlly(
|
|
@@ -787,16 +872,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
787
872
|
if type(animation) == "number" then
|
|
788
873
|
setUnitAnimationByIndex(self.handle, animation)
|
|
789
874
|
elseif rarity then
|
|
790
|
-
|
|
875
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
791
876
|
else
|
|
792
877
|
setUnitAnimation(self.handle, animation)
|
|
793
878
|
end
|
|
794
879
|
end
|
|
880
|
+
function Unit.prototype.resetAnimation(self)
|
|
881
|
+
ResetUnitAnimation(self.handle)
|
|
882
|
+
end
|
|
795
883
|
function Unit.prototype.queueAnimation(self, animation)
|
|
796
|
-
|
|
884
|
+
QueueUnitAnimation(self.handle, animation)
|
|
885
|
+
end
|
|
886
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
887
|
+
local firstWeapon = self.firstWeapon
|
|
888
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
889
|
+
return firstWeapon
|
|
890
|
+
end
|
|
891
|
+
local secondWeapon = self.secondWeapon
|
|
892
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
893
|
+
return secondWeapon
|
|
894
|
+
end
|
|
895
|
+
return nil
|
|
797
896
|
end
|
|
798
897
|
function Unit.prototype.delayHealthChecks(self)
|
|
799
|
-
self[
|
|
898
|
+
self[104] = (self[104] or 0) + 1
|
|
800
899
|
Timer:run(delayHealthChecksCallback, self)
|
|
801
900
|
end
|
|
802
901
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -806,21 +905,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
806
905
|
return IsUnitSelected(self.handle, player.handle)
|
|
807
906
|
end
|
|
808
907
|
function Unit.prototype.explode(self)
|
|
809
|
-
|
|
908
|
+
SetUnitExploded(self.handle, true)
|
|
810
909
|
killUnit(self.handle)
|
|
811
910
|
end
|
|
812
911
|
function Unit.prototype.kill(self)
|
|
813
912
|
killUnit(self.handle)
|
|
814
913
|
end
|
|
815
914
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
816
|
-
local
|
|
817
|
-
local
|
|
818
|
-
local
|
|
819
|
-
if
|
|
820
|
-
|
|
915
|
+
local ____ReviveHero_6 = ReviveHero
|
|
916
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
917
|
+
local ____doEffect_4 = doEffect
|
|
918
|
+
if ____doEffect_4 == nil then
|
|
919
|
+
____doEffect_4 = false
|
|
821
920
|
end
|
|
822
|
-
__TS__SparseArrayPush(
|
|
823
|
-
|
|
921
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
922
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
824
923
|
end
|
|
825
924
|
function Unit.prototype.healTarget(self, target, amount)
|
|
826
925
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -863,17 +962,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
863
962
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
864
963
|
end
|
|
865
964
|
function Unit.prototype.addAbility(self, abilityId)
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
965
|
+
local ability = UnitAbility:of(
|
|
966
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
967
|
+
abilityId,
|
|
968
|
+
self
|
|
969
|
+
)
|
|
970
|
+
if ability ~= nil then
|
|
872
971
|
local abilities = self.abilities
|
|
873
972
|
abilities[#abilities + 1] = ability
|
|
874
|
-
return ability
|
|
875
973
|
end
|
|
876
|
-
return
|
|
974
|
+
return ability
|
|
877
975
|
end
|
|
878
976
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
879
977
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -887,31 +985,21 @@ end
|
|
|
887
985
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
888
986
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
889
987
|
end
|
|
890
|
-
function Unit.prototype.
|
|
891
|
-
local
|
|
892
|
-
|
|
893
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
894
|
-
return nil
|
|
895
|
-
end
|
|
896
|
-
return UnitAbility:of(
|
|
897
|
-
getUnitAbility(self.handle, abilityId),
|
|
898
|
-
abilityId,
|
|
899
|
-
self
|
|
900
|
-
)
|
|
988
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
989
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
990
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
901
991
|
end
|
|
902
|
-
function Unit.prototype.removeAbility(self,
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
end
|
|
992
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
993
|
+
local abilities = self.abilities
|
|
994
|
+
for i = 1, #abilities do
|
|
995
|
+
if abilities[i].typeId == abilityTypeId then
|
|
996
|
+
local ability = abilities[i]
|
|
997
|
+
tremove(abilities, i)
|
|
998
|
+
ability:destroy()
|
|
999
|
+
return true
|
|
911
1000
|
end
|
|
912
|
-
return true
|
|
913
1001
|
end
|
|
914
|
-
return
|
|
1002
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
915
1003
|
end
|
|
916
1004
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
917
1005
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -925,12 +1013,16 @@ end
|
|
|
925
1013
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
926
1014
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
927
1015
|
end
|
|
928
|
-
function Unit.prototype.interruptAttack(self)
|
|
929
|
-
unitInterruptAttack(self.handle)
|
|
930
|
-
end
|
|
931
1016
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
932
|
-
|
|
933
|
-
unitDisableAbility(
|
|
1017
|
+
local handle = self.handle
|
|
1018
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
1019
|
+
Timer:run(
|
|
1020
|
+
unitDisableAbility,
|
|
1021
|
+
handle,
|
|
1022
|
+
abilityId,
|
|
1023
|
+
false,
|
|
1024
|
+
false
|
|
1025
|
+
)
|
|
934
1026
|
end
|
|
935
1027
|
function Unit.prototype.getDistanceTo(self, target)
|
|
936
1028
|
local handle = self.handle
|
|
@@ -991,18 +1083,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
991
1083
|
end
|
|
992
1084
|
function Unit.prototype.incrementStunCounter(self)
|
|
993
1085
|
local stunCounter = self[102] or 0
|
|
994
|
-
if not self[101] or stunCounter >= 0 then
|
|
1086
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
995
1087
|
BlzPauseUnitEx(self.handle, true)
|
|
996
1088
|
end
|
|
997
1089
|
self[102] = stunCounter + 1
|
|
998
1090
|
end
|
|
999
1091
|
function Unit.prototype.decrementStunCounter(self)
|
|
1000
1092
|
local stunCounter = self[102] or 0
|
|
1001
|
-
if not self[101] or stunCounter >= 1 then
|
|
1093
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1002
1094
|
BlzPauseUnitEx(self.handle, false)
|
|
1003
1095
|
end
|
|
1004
1096
|
self[102] = stunCounter - 1
|
|
1005
1097
|
end
|
|
1098
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1099
|
+
local forceStunCounter = self[103] or 0
|
|
1100
|
+
if forceStunCounter == 0 then
|
|
1101
|
+
local handle = self.handle
|
|
1102
|
+
if not self[101] then
|
|
1103
|
+
for _ = self[102] or 0, -1 do
|
|
1104
|
+
BlzPauseUnitEx(handle, true)
|
|
1105
|
+
end
|
|
1106
|
+
end
|
|
1107
|
+
BlzPauseUnitEx(handle, true)
|
|
1108
|
+
end
|
|
1109
|
+
self[103] = forceStunCounter + 1
|
|
1110
|
+
end
|
|
1111
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1112
|
+
local forceStunCounter = self[103] or 0
|
|
1113
|
+
if forceStunCounter == 1 then
|
|
1114
|
+
local handle = self.handle
|
|
1115
|
+
if not self[101] then
|
|
1116
|
+
for _ = self[102] or 0, -1 do
|
|
1117
|
+
BlzPauseUnitEx(handle, false)
|
|
1118
|
+
end
|
|
1119
|
+
end
|
|
1120
|
+
BlzPauseUnitEx(handle, false)
|
|
1121
|
+
end
|
|
1122
|
+
self[103] = forceStunCounter - 1
|
|
1123
|
+
end
|
|
1006
1124
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1007
1125
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
1008
1126
|
owner.handle,
|
|
@@ -1191,7 +1309,15 @@ __TS__SetDescriptor(
|
|
|
1191
1309
|
Unit.prototype,
|
|
1192
1310
|
"isIllusion",
|
|
1193
1311
|
{get = function(self)
|
|
1194
|
-
return
|
|
1312
|
+
return IsUnitIllusion(self.handle)
|
|
1313
|
+
end},
|
|
1314
|
+
true
|
|
1315
|
+
)
|
|
1316
|
+
__TS__SetDescriptor(
|
|
1317
|
+
Unit.prototype,
|
|
1318
|
+
"isStunned",
|
|
1319
|
+
{get = function(self)
|
|
1320
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1195
1321
|
end},
|
|
1196
1322
|
true
|
|
1197
1323
|
)
|
|
@@ -1270,13 +1396,13 @@ __TS__SetDescriptor(
|
|
|
1270
1396
|
)
|
|
1271
1397
|
__TS__SetDescriptor(
|
|
1272
1398
|
Unit.prototype,
|
|
1273
|
-
"
|
|
1399
|
+
"primaryAttribute",
|
|
1274
1400
|
{
|
|
1275
1401
|
get = function(self)
|
|
1276
|
-
return
|
|
1402
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1277
1403
|
end,
|
|
1278
|
-
set = function(self,
|
|
1279
|
-
|
|
1404
|
+
set = function(self, primaryAttribute)
|
|
1405
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1280
1406
|
end
|
|
1281
1407
|
},
|
|
1282
1408
|
true
|
|
@@ -1298,19 +1424,6 @@ __TS__SetDescriptor(
|
|
|
1298
1424
|
end},
|
|
1299
1425
|
true
|
|
1300
1426
|
)
|
|
1301
|
-
__TS__SetDescriptor(
|
|
1302
|
-
Unit.prototype,
|
|
1303
|
-
"agilityBase",
|
|
1304
|
-
{
|
|
1305
|
-
get = function(self)
|
|
1306
|
-
return getHeroAgi(self.handle, false)
|
|
1307
|
-
end,
|
|
1308
|
-
set = function(self, agilityBase)
|
|
1309
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1310
|
-
end
|
|
1311
|
-
},
|
|
1312
|
-
true
|
|
1313
|
-
)
|
|
1314
1427
|
__TS__SetDescriptor(
|
|
1315
1428
|
Unit.prototype,
|
|
1316
1429
|
"agilityBonus",
|
|
@@ -1328,19 +1441,6 @@ __TS__SetDescriptor(
|
|
|
1328
1441
|
end},
|
|
1329
1442
|
true
|
|
1330
1443
|
)
|
|
1331
|
-
__TS__SetDescriptor(
|
|
1332
|
-
Unit.prototype,
|
|
1333
|
-
"intelligenceBase",
|
|
1334
|
-
{
|
|
1335
|
-
get = function(self)
|
|
1336
|
-
return getHeroInt(self.handle, false)
|
|
1337
|
-
end,
|
|
1338
|
-
set = function(self, intelligenceBase)
|
|
1339
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1340
|
-
end
|
|
1341
|
-
},
|
|
1342
|
-
true
|
|
1343
|
-
)
|
|
1344
1444
|
__TS__SetDescriptor(
|
|
1345
1445
|
Unit.prototype,
|
|
1346
1446
|
"intelligenceBonus",
|
|
@@ -1389,17 +1489,17 @@ __TS__SetDescriptor(
|
|
|
1389
1489
|
"isTeamGlowVisible",
|
|
1390
1490
|
{
|
|
1391
1491
|
get = function(self)
|
|
1392
|
-
return not self[
|
|
1492
|
+
return not self[107]
|
|
1393
1493
|
end,
|
|
1394
1494
|
set = function(self, isTeamGlowVisible)
|
|
1395
|
-
|
|
1396
|
-
local
|
|
1495
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1496
|
+
local ____temp_7
|
|
1397
1497
|
if not isTeamGlowVisible then
|
|
1398
|
-
|
|
1498
|
+
____temp_7 = true
|
|
1399
1499
|
else
|
|
1400
|
-
|
|
1500
|
+
____temp_7 = nil
|
|
1401
1501
|
end
|
|
1402
|
-
self[
|
|
1502
|
+
self[107] = ____temp_7
|
|
1403
1503
|
end
|
|
1404
1504
|
},
|
|
1405
1505
|
true
|
|
@@ -1408,9 +1508,9 @@ __TS__SetDescriptor(
|
|
|
1408
1508
|
Unit.prototype,
|
|
1409
1509
|
"color",
|
|
1410
1510
|
{set = function(self, color)
|
|
1411
|
-
|
|
1412
|
-
if self[
|
|
1413
|
-
|
|
1511
|
+
SetUnitColor(self.handle, color.handle)
|
|
1512
|
+
if self[107] then
|
|
1513
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1414
1514
|
end
|
|
1415
1515
|
end},
|
|
1416
1516
|
true
|
|
@@ -1433,14 +1533,14 @@ __TS__SetDescriptor(
|
|
|
1433
1533
|
"maxHealth",
|
|
1434
1534
|
{
|
|
1435
1535
|
get = function(self)
|
|
1436
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1536
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1437
1537
|
end,
|
|
1438
1538
|
set = function(self, maxHealth)
|
|
1439
|
-
if maxHealth < 1 and self[
|
|
1440
|
-
self[
|
|
1539
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1540
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1441
1541
|
maxHealth = 1
|
|
1442
1542
|
end
|
|
1443
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1543
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1444
1544
|
end
|
|
1445
1545
|
},
|
|
1446
1546
|
true
|
|
@@ -1482,10 +1582,10 @@ __TS__SetDescriptor(
|
|
|
1482
1582
|
"health",
|
|
1483
1583
|
{
|
|
1484
1584
|
get = function(self)
|
|
1485
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1585
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1486
1586
|
end,
|
|
1487
1587
|
set = function(self, health)
|
|
1488
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1588
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1489
1589
|
end
|
|
1490
1590
|
},
|
|
1491
1591
|
true
|
|
@@ -1561,25 +1661,12 @@ __TS__SetDescriptor(
|
|
|
1561
1661
|
},
|
|
1562
1662
|
true
|
|
1563
1663
|
)
|
|
1564
|
-
__TS__SetDescriptor(
|
|
1565
|
-
Unit.prototype,
|
|
1566
|
-
"flyHeight",
|
|
1567
|
-
{
|
|
1568
|
-
get = function(self)
|
|
1569
|
-
return getUnitFlyHeight(self.handle)
|
|
1570
|
-
end,
|
|
1571
|
-
set = function(self, v)
|
|
1572
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1573
|
-
end
|
|
1574
|
-
},
|
|
1575
|
-
true
|
|
1576
|
-
)
|
|
1577
1664
|
__TS__SetDescriptor(
|
|
1578
1665
|
Unit.prototype,
|
|
1579
1666
|
"x",
|
|
1580
1667
|
{
|
|
1581
1668
|
get = function(self)
|
|
1582
|
-
return getUnitX(self.handle)
|
|
1669
|
+
return self[108] or getUnitX(self.handle)
|
|
1583
1670
|
end,
|
|
1584
1671
|
set = function(self, v)
|
|
1585
1672
|
SetUnitX(self.handle, v)
|
|
@@ -1592,7 +1679,7 @@ __TS__SetDescriptor(
|
|
|
1592
1679
|
"y",
|
|
1593
1680
|
{
|
|
1594
1681
|
get = function(self)
|
|
1595
|
-
return getUnitY(self.handle)
|
|
1682
|
+
return self[109] or getUnitY(self.handle)
|
|
1596
1683
|
end,
|
|
1597
1684
|
set = function(self, v)
|
|
1598
1685
|
SetUnitY(self.handle, v)
|
|
@@ -1678,10 +1765,10 @@ __TS__SetDescriptor(
|
|
|
1678
1765
|
"gold",
|
|
1679
1766
|
{
|
|
1680
1767
|
get = function(self)
|
|
1681
|
-
return
|
|
1768
|
+
return GetResourceAmount(self.handle)
|
|
1682
1769
|
end,
|
|
1683
1770
|
set = function(self, gold)
|
|
1684
|
-
|
|
1771
|
+
SetResourceAmount(self.handle, gold)
|
|
1685
1772
|
end
|
|
1686
1773
|
},
|
|
1687
1774
|
true
|
|
@@ -1697,14 +1784,18 @@ __TS__SetDescriptor(
|
|
|
1697
1784
|
local handle = self.handle
|
|
1698
1785
|
if isPaused and not IsUnitPaused(handle) then
|
|
1699
1786
|
self[101] = true
|
|
1700
|
-
|
|
1701
|
-
|
|
1787
|
+
if (self[103] or 0) <= 0 then
|
|
1788
|
+
for _ = self[102] or 0, -1 do
|
|
1789
|
+
BlzPauseUnitEx(handle, true)
|
|
1790
|
+
end
|
|
1702
1791
|
end
|
|
1703
1792
|
PauseUnit(handle, true)
|
|
1704
1793
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1705
1794
|
PauseUnit(handle, false)
|
|
1706
|
-
|
|
1707
|
-
|
|
1795
|
+
if (self[103] or 0) <= 0 then
|
|
1796
|
+
for _ = self[102] or 0, -1 do
|
|
1797
|
+
BlzPauseUnitEx(handle, false)
|
|
1798
|
+
end
|
|
1708
1799
|
end
|
|
1709
1800
|
self[101] = nil
|
|
1710
1801
|
end
|
|
@@ -1762,20 +1853,6 @@ __TS__SetDescriptor(
|
|
|
1762
1853
|
},
|
|
1763
1854
|
true
|
|
1764
1855
|
)
|
|
1765
|
-
__TS__SetDescriptor(
|
|
1766
|
-
Unit.prototype,
|
|
1767
|
-
"scale",
|
|
1768
|
-
{
|
|
1769
|
-
get = function(self)
|
|
1770
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1771
|
-
end,
|
|
1772
|
-
set = function(self, v)
|
|
1773
|
-
setUnitScale(self.handle, v, v, v)
|
|
1774
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1775
|
-
end
|
|
1776
|
-
},
|
|
1777
|
-
true
|
|
1778
|
-
)
|
|
1779
1856
|
__TS__SetDescriptor(
|
|
1780
1857
|
Unit.prototype,
|
|
1781
1858
|
"timeScale",
|
|
@@ -1809,6 +1886,19 @@ __TS__SetDescriptor(
|
|
|
1809
1886
|
end},
|
|
1810
1887
|
true
|
|
1811
1888
|
)
|
|
1889
|
+
__TS__SetDescriptor(
|
|
1890
|
+
Unit.prototype,
|
|
1891
|
+
"movementType",
|
|
1892
|
+
{
|
|
1893
|
+
get = function(self)
|
|
1894
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1895
|
+
end,
|
|
1896
|
+
set = function(self, movementType)
|
|
1897
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1898
|
+
end
|
|
1899
|
+
},
|
|
1900
|
+
true
|
|
1901
|
+
)
|
|
1812
1902
|
__TS__SetDescriptor(
|
|
1813
1903
|
Unit.prototype,
|
|
1814
1904
|
"pathing",
|
|
@@ -1899,30 +1989,6 @@ __TS__SetDescriptor(
|
|
|
1899
1989
|
end},
|
|
1900
1990
|
true
|
|
1901
1991
|
)
|
|
1902
|
-
__TS__SetDescriptor(
|
|
1903
|
-
Unit.prototype,
|
|
1904
|
-
"onUnitInRange",
|
|
1905
|
-
{get = function(self)
|
|
1906
|
-
local handle = self.handle
|
|
1907
|
-
local onUnitInRange = setmetatable(
|
|
1908
|
-
{},
|
|
1909
|
-
{__index = function(self, value)
|
|
1910
|
-
local event = __TS__New(
|
|
1911
|
-
TriggerEvent,
|
|
1912
|
-
function(trigger)
|
|
1913
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
1914
|
-
end,
|
|
1915
|
-
function() return ____exports.Unit:of(handle) end
|
|
1916
|
-
)
|
|
1917
|
-
rawset(self, value, event)
|
|
1918
|
-
return event
|
|
1919
|
-
end}
|
|
1920
|
-
)
|
|
1921
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
1922
|
-
return onUnitInRange
|
|
1923
|
-
end},
|
|
1924
|
-
true
|
|
1925
|
-
)
|
|
1926
1992
|
__TS__SetDescriptor(
|
|
1927
1993
|
Unit.prototype,
|
|
1928
1994
|
"onManaEqual",
|
|
@@ -1990,6 +2056,14 @@ __TS__SetDescriptor(
|
|
|
1990
2056
|
end},
|
|
1991
2057
|
true
|
|
1992
2058
|
)
|
|
2059
|
+
__TS__SetDescriptor(
|
|
2060
|
+
Unit.prototype,
|
|
2061
|
+
"targetAcquiredEvent",
|
|
2062
|
+
{get = function(self)
|
|
2063
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2064
|
+
end},
|
|
2065
|
+
true
|
|
2066
|
+
)
|
|
1993
2067
|
__TS__SetDescriptor(
|
|
1994
2068
|
Unit.prototype,
|
|
1995
2069
|
"onSelect",
|
|
@@ -2050,6 +2124,11 @@ __TS__SetDescriptor(
|
|
|
2050
2124
|
end},
|
|
2051
2125
|
true
|
|
2052
2126
|
)
|
|
2127
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2128
|
+
____exports.UnitTriggerEvent,
|
|
2129
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2130
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2131
|
+
)
|
|
2053
2132
|
Unit.deathEvent = __TS__New(
|
|
2054
2133
|
____exports.UnitTriggerEvent,
|
|
2055
2134
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2125,25 +2204,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2125
2204
|
InitializingEvent,
|
|
2126
2205
|
function(event)
|
|
2127
2206
|
local function listener(unit, id)
|
|
2128
|
-
local
|
|
2207
|
+
local ____GetSpellTargetUnit_result_10
|
|
2129
2208
|
if GetSpellTargetUnit() then
|
|
2130
|
-
|
|
2209
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2131
2210
|
else
|
|
2132
|
-
local
|
|
2211
|
+
local ____GetSpellTargetItem_result_9
|
|
2133
2212
|
if GetSpellTargetItem() then
|
|
2134
|
-
|
|
2213
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2135
2214
|
else
|
|
2136
|
-
local
|
|
2215
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2137
2216
|
if GetSpellTargetDestructable() then
|
|
2138
|
-
|
|
2217
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2139
2218
|
else
|
|
2140
|
-
|
|
2219
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2141
2220
|
end
|
|
2142
|
-
|
|
2221
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2143
2222
|
end
|
|
2144
|
-
|
|
2223
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2145
2224
|
end
|
|
2146
|
-
local target =
|
|
2225
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2147
2226
|
if target then
|
|
2148
2227
|
invoke(event, unit, id, target)
|
|
2149
2228
|
end
|
|
@@ -2315,10 +2394,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2315
2394
|
____exports.UnitTriggerEvent,
|
|
2316
2395
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2317
2396
|
function()
|
|
2318
|
-
local
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2397
|
+
local handle = getOrderedUnit()
|
|
2398
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2399
|
+
local unit = ____exports.Unit:of(handle)
|
|
2400
|
+
if unit.state == 1 then
|
|
2401
|
+
return unit, getIssuedOrderId()
|
|
2402
|
+
end
|
|
2322
2403
|
end
|
|
2323
2404
|
return IgnoreEvent
|
|
2324
2405
|
end
|
|
@@ -2349,38 +2430,57 @@ Unit.onDamaging = (function()
|
|
|
2349
2430
|
if source and source.typeId == dummyUnitId then
|
|
2350
2431
|
source = nil
|
|
2351
2432
|
end
|
|
2352
|
-
local target = BlzGetEventDamageTarget()
|
|
2433
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2434
|
+
local metadata = damageMetadataByTarget[target]
|
|
2435
|
+
damageMetadataByTarget[target] = nil
|
|
2353
2436
|
local data = {
|
|
2354
2437
|
amount = GetEventDamage(),
|
|
2355
|
-
attackType = BlzGetEventAttackType(),
|
|
2438
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2356
2439
|
damageType = BlzGetEventDamageType(),
|
|
2357
2440
|
weaponType = BlzGetEventWeaponType(),
|
|
2358
|
-
|
|
2441
|
+
metadata = metadata,
|
|
2442
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2443
|
+
originalAmount = GetEventDamage(),
|
|
2444
|
+
originalMetadata = metadata,
|
|
2445
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2359
2446
|
}
|
|
2360
2447
|
if data.isAttack and source then
|
|
2361
|
-
|
|
2362
|
-
if weapon == -1 then
|
|
2363
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2364
|
-
weapon = 0
|
|
2365
|
-
end
|
|
2366
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2448
|
+
data.weapon = source:chooseWeapon(target)
|
|
2367
2449
|
end
|
|
2368
2450
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2369
2451
|
invoke(
|
|
2370
2452
|
event,
|
|
2371
2453
|
source,
|
|
2372
|
-
|
|
2454
|
+
target,
|
|
2373
2455
|
setmetatable(
|
|
2374
2456
|
{},
|
|
2375
2457
|
{
|
|
2376
2458
|
__index = data,
|
|
2377
2459
|
__newindex = function(self, key, value)
|
|
2378
|
-
damageSetters[key]
|
|
2460
|
+
local damageSetter = damageSetters[key]
|
|
2461
|
+
if damageSetter ~= nil then
|
|
2462
|
+
damageSetter(value)
|
|
2463
|
+
end
|
|
2379
2464
|
data[key] = value
|
|
2380
2465
|
end
|
|
2381
2466
|
}
|
|
2382
2467
|
)
|
|
2383
2468
|
)
|
|
2469
|
+
if data[0] and source then
|
|
2470
|
+
local sourceOwner = source.owner.handle
|
|
2471
|
+
data[1] = sourceOwner
|
|
2472
|
+
local targetOwner = target.owner.handle
|
|
2473
|
+
data[2] = targetOwner
|
|
2474
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2475
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2476
|
+
data[3] = true
|
|
2477
|
+
end
|
|
2478
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2479
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2480
|
+
data[4] = true
|
|
2481
|
+
end
|
|
2482
|
+
end
|
|
2483
|
+
damagingEventByTarget[target] = data
|
|
2384
2484
|
return
|
|
2385
2485
|
end
|
|
2386
2486
|
BlzSetEventDamage(0)
|
|
@@ -2388,7 +2488,7 @@ Unit.onDamaging = (function()
|
|
|
2388
2488
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2389
2489
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2390
2490
|
local sourceOwner = source.owner.handle
|
|
2391
|
-
local targetOwner =
|
|
2491
|
+
local targetOwner = target.owner.handle
|
|
2392
2492
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2393
2493
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2394
2494
|
Timer:run(function()
|
|
@@ -2404,23 +2504,19 @@ Unit.onDamaging = (function()
|
|
|
2404
2504
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2405
2505
|
local condition = ____value[1]
|
|
2406
2506
|
local action = ____value[2]
|
|
2407
|
-
if condition(
|
|
2408
|
-
source,
|
|
2409
|
-
____exports.Unit:of(target),
|
|
2410
|
-
data
|
|
2411
|
-
) then
|
|
2507
|
+
if condition(source, target, data) then
|
|
2412
2508
|
action(
|
|
2413
2509
|
source,
|
|
2414
|
-
|
|
2510
|
+
target,
|
|
2415
2511
|
setmetatable(
|
|
2416
2512
|
{fire = function()
|
|
2417
2513
|
UnitDamageTarget(
|
|
2418
2514
|
source.handle,
|
|
2419
|
-
target,
|
|
2515
|
+
target.handle,
|
|
2420
2516
|
data.amount,
|
|
2421
2517
|
true,
|
|
2422
2518
|
true,
|
|
2423
|
-
data.attackType,
|
|
2519
|
+
attackTypeToNative(data.attackType),
|
|
2424
2520
|
data.damageType,
|
|
2425
2521
|
data.weaponType
|
|
2426
2522
|
)
|
|
@@ -2447,30 +2543,54 @@ Unit.onDamage = __TS__New(
|
|
|
2447
2543
|
if source and source.typeId == dummyUnitId then
|
|
2448
2544
|
source = nil
|
|
2449
2545
|
end
|
|
2546
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2547
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2548
|
+
damagingEventByTarget[target] = nil
|
|
2450
2549
|
local data = {
|
|
2451
2550
|
amount = GetEventDamage(),
|
|
2452
|
-
attackType = BlzGetEventAttackType(),
|
|
2551
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2453
2552
|
damageType = BlzGetEventDamageType(),
|
|
2454
2553
|
weaponType = BlzGetEventWeaponType(),
|
|
2554
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2455
2555
|
isAttack = BlzGetEventIsAttack(),
|
|
2456
|
-
originalAmount = GetEventDamage(),
|
|
2556
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2557
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2457
2558
|
preventDeath = damageEventPreventDeath
|
|
2458
2559
|
}
|
|
2560
|
+
if damagingEvent then
|
|
2561
|
+
for key, value in pairs(damagingEvent) do
|
|
2562
|
+
if isAttribute(key) then
|
|
2563
|
+
data[key] = value
|
|
2564
|
+
end
|
|
2565
|
+
end
|
|
2566
|
+
local sourceOwner = damagingEvent[1]
|
|
2567
|
+
if sourceOwner then
|
|
2568
|
+
local targetOwner = damagingEvent[2]
|
|
2569
|
+
if damagingEvent[3] then
|
|
2570
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2571
|
+
end
|
|
2572
|
+
if damagingEvent[4] then
|
|
2573
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2574
|
+
end
|
|
2575
|
+
end
|
|
2576
|
+
end
|
|
2459
2577
|
local evData = setmetatable(
|
|
2460
2578
|
{},
|
|
2461
2579
|
{
|
|
2462
2580
|
__index = data,
|
|
2463
2581
|
__newindex = function(self, key, value)
|
|
2464
|
-
damageSetters[key]
|
|
2582
|
+
local damageSetter = damageSetters[key]
|
|
2583
|
+
if damageSetter ~= nil then
|
|
2584
|
+
damageSetter(value)
|
|
2585
|
+
end
|
|
2465
2586
|
data[key] = value
|
|
2466
2587
|
end
|
|
2467
2588
|
}
|
|
2468
2589
|
)
|
|
2469
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2470
2590
|
invoke(event, source, target, evData)
|
|
2471
2591
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2472
2592
|
local bonusHealth = math.ceil(evData.amount)
|
|
2473
|
-
target[
|
|
2593
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2474
2594
|
BlzSetUnitMaxHP(
|
|
2475
2595
|
target.handle,
|
|
2476
2596
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2484,7 +2604,7 @@ Unit.onDamage = __TS__New(
|
|
|
2484
2604
|
evData[0],
|
|
2485
2605
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2486
2606
|
)
|
|
2487
|
-
target[
|
|
2607
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2488
2608
|
SetWidgetLife(
|
|
2489
2609
|
target.handle,
|
|
2490
2610
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2509,8 +2629,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2509
2629
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2510
2630
|
function()
|
|
2511
2631
|
local unit = getTriggerUnit()
|
|
2512
|
-
|
|
2513
|
-
|
|
2632
|
+
local item = getManipulatedItem()
|
|
2633
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2634
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2514
2635
|
end
|
|
2515
2636
|
return IgnoreEvent
|
|
2516
2637
|
end
|
|
@@ -2519,9 +2640,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2519
2640
|
____exports.UnitTriggerEvent,
|
|
2520
2641
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2521
2642
|
function()
|
|
2522
|
-
local
|
|
2523
|
-
|
|
2524
|
-
|
|
2643
|
+
local unitHandle = getTriggerUnit()
|
|
2644
|
+
local itemHandle = getManipulatedItem()
|
|
2645
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2646
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2647
|
+
local item = Item:of(itemHandle)
|
|
2648
|
+
if item.owner ~= unit then
|
|
2649
|
+
return unit, item
|
|
2650
|
+
end
|
|
2525
2651
|
end
|
|
2526
2652
|
return IgnoreEvent
|
|
2527
2653
|
end
|
|
@@ -2529,16 +2655,59 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2529
2655
|
Unit.itemUsedEvent = __TS__New(
|
|
2530
2656
|
____exports.UnitTriggerEvent,
|
|
2531
2657
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2532
|
-
function()
|
|
2658
|
+
function()
|
|
2659
|
+
local unit = getTriggerUnit()
|
|
2660
|
+
local item = getManipulatedItem()
|
|
2661
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2662
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2663
|
+
end
|
|
2664
|
+
return IgnoreEvent
|
|
2665
|
+
end
|
|
2533
2666
|
)
|
|
2534
2667
|
Unit.itemStackedEvent = __TS__New(
|
|
2535
2668
|
____exports.UnitTriggerEvent,
|
|
2536
2669
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2537
|
-
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(
|
|
2670
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2671
|
+
)
|
|
2672
|
+
__TS__ObjectDefineProperty(
|
|
2673
|
+
Unit,
|
|
2674
|
+
"itemChargesChangedEvent",
|
|
2675
|
+
{get = function(self)
|
|
2676
|
+
local event = __TS__New(Event)
|
|
2677
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2678
|
+
local unit = item.owner
|
|
2679
|
+
if unit ~= nil then
|
|
2680
|
+
invoke(event, unit, item)
|
|
2681
|
+
end
|
|
2682
|
+
end)
|
|
2683
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2684
|
+
return event
|
|
2685
|
+
end}
|
|
2538
2686
|
)
|
|
2539
2687
|
__TS__ObjectDefineProperty(
|
|
2540
2688
|
Unit,
|
|
2541
|
-
"
|
|
2689
|
+
"itemUseOrderEvent",
|
|
2690
|
+
{get = function(self)
|
|
2691
|
+
local event = __TS__New(Event)
|
|
2692
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2693
|
+
local slot = order - orderId("useslot0")
|
|
2694
|
+
local function listener(unit)
|
|
2695
|
+
local item = unit.items[slot + 1]
|
|
2696
|
+
if item ~= nil then
|
|
2697
|
+
invoke(event, unit, item)
|
|
2698
|
+
end
|
|
2699
|
+
end
|
|
2700
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2701
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2702
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2703
|
+
end
|
|
2704
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2705
|
+
return event
|
|
2706
|
+
end}
|
|
2707
|
+
)
|
|
2708
|
+
__TS__ObjectDefineProperty(
|
|
2709
|
+
Unit,
|
|
2710
|
+
"itemMoveOrderEvent",
|
|
2542
2711
|
{get = function(self)
|
|
2543
2712
|
local event = __TS__New(Event)
|
|
2544
2713
|
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
@@ -2556,7 +2725,7 @@ __TS__ObjectDefineProperty(
|
|
|
2556
2725
|
end
|
|
2557
2726
|
end)
|
|
2558
2727
|
end
|
|
2559
|
-
rawset(self, "
|
|
2728
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2560
2729
|
return event
|
|
2561
2730
|
end}
|
|
2562
2731
|
)
|
|
@@ -2585,6 +2754,10 @@ __TS__ObjectDefineProperty(
|
|
|
2585
2754
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2586
2755
|
return destroyEvent
|
|
2587
2756
|
end}
|
|
2757
|
+
)
|
|
2758
|
+
Unit.synchronize = synchronizer(
|
|
2759
|
+
function(unit) return unit.syncId end,
|
|
2760
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2588
2761
|
);
|
|
2589
2762
|
(function(self)
|
|
2590
2763
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2614,7 +2787,8 @@ __TS__ObjectDefineProperty(
|
|
|
2614
2787
|
return
|
|
2615
2788
|
end
|
|
2616
2789
|
end
|
|
2617
|
-
unit:
|
|
2790
|
+
unit:saveData()
|
|
2791
|
+
Timer:run(unit, "destroy")
|
|
2618
2792
|
end)
|
|
2619
2793
|
end
|
|
2620
2794
|
end)(Unit)
|