warscript 0.0.1-dev.987b772 → 0.0.1-dev.9979c8f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +3 -0
- package/core/types/frame.lua +130 -22
- 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 +12 -3
- package/engine/behaviour/ability/damage.lua +33 -39
- 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 +119 -54
- package/engine/buff.lua +565 -298
- package/engine/internal/ability.d.ts +22 -3
- package/engine/internal/ability.lua +133 -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 -17
- 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.d.ts +1 -0
- package/engine/internal/unit/item.lua +8 -4
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +36 -0
- 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 +59 -27
- package/engine/internal/unit.lua +477 -281
- 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 +39 -8
- 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 +10 -6
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +362 -117
- 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 +8 -0
- package/engine/unit.lua +8 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- 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 +1 -4
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +10 -1
- package/utility/arrays.lua +45 -3
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-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",
|
|
@@ -562,17 +611,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
611
|
____exports.Unit:of(unit)
|
|
563
612
|
)
|
|
564
613
|
end
|
|
565
|
-
if not unitAddAbility(unit, abilityId) then
|
|
566
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
567
|
-
return UnitAbility:of(
|
|
568
|
-
ability,
|
|
569
|
-
abilityId,
|
|
570
|
-
____exports.Unit:of(unit)
|
|
571
|
-
)
|
|
572
|
-
end
|
|
573
|
-
else
|
|
574
|
-
unitRemoveAbility(unit, abilityId)
|
|
575
|
-
end
|
|
576
614
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
615
|
local item = unitItemInSlot(unit, i)
|
|
578
616
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -619,26 +657,30 @@ local fieldSetters = {
|
|
|
619
657
|
}
|
|
620
658
|
local dummies = {}
|
|
621
659
|
for ____, player in ipairs(Player.all) do
|
|
622
|
-
local dummy = assert(
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
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
|
+
)
|
|
629
671
|
ShowUnit(dummy, false)
|
|
630
672
|
dummies[player] = dummy
|
|
631
673
|
end
|
|
632
674
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
675
|
+
local counter = (unit[104] or 0) - 1
|
|
634
676
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
677
|
+
unit[104] = counter
|
|
636
678
|
return
|
|
637
679
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
680
|
+
unit[104] = nil
|
|
681
|
+
local healthBonus = unit[105]
|
|
640
682
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
683
|
+
unit[105] = nil
|
|
642
684
|
local handle = unit.handle
|
|
643
685
|
BlzSetUnitMaxHP(
|
|
644
686
|
handle,
|
|
@@ -646,45 +688,79 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
688
|
)
|
|
647
689
|
end
|
|
648
690
|
end
|
|
691
|
+
local nextSyncId = 1
|
|
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
|
|
649
703
|
____exports.Unit = __TS__Class()
|
|
650
704
|
local Unit = ____exports.Unit
|
|
651
705
|
Unit.name = "Unit"
|
|
652
706
|
__TS__ClassExtends(Unit, Handle)
|
|
653
707
|
function Unit.prototype.____constructor(self, handle)
|
|
654
708
|
Handle.prototype.____constructor(self, handle)
|
|
709
|
+
local ____nextSyncId_1 = nextSyncId
|
|
710
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
711
|
+
self.syncId = ____nextSyncId_1
|
|
655
712
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
|
-
assert(
|
|
657
|
-
|
|
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
|
+
)
|
|
658
723
|
if unitAddAbility(
|
|
659
724
|
handle,
|
|
660
725
|
fourCC("Amrf")
|
|
661
726
|
) then
|
|
662
|
-
assert(
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
727
|
+
assert(
|
|
728
|
+
unitRemoveAbility(
|
|
729
|
+
handle,
|
|
730
|
+
fourCC("Amrf")
|
|
731
|
+
),
|
|
732
|
+
"fly ability must be removed after addition",
|
|
733
|
+
self
|
|
734
|
+
)
|
|
666
735
|
end
|
|
736
|
+
unitBySyncId[self.syncId] = self
|
|
667
737
|
local ____ = self.abilities
|
|
668
738
|
end
|
|
669
|
-
function Unit.prototype.getEvent(self,
|
|
670
|
-
self.events = self.events or (
|
|
671
|
-
local eventId = GetHandleId(
|
|
672
|
-
|
|
673
|
-
|
|
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(
|
|
674
745
|
TriggerEvent,
|
|
675
746
|
function(trigger)
|
|
676
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
747
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
677
748
|
end,
|
|
678
749
|
collector or (function() return {} end)
|
|
679
750
|
)
|
|
751
|
+
self.events:put(eventId, event)
|
|
680
752
|
end
|
|
681
|
-
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))
|
|
682
760
|
end
|
|
683
761
|
function Unit.prototype.onDestroy(self)
|
|
684
762
|
local handle = self.handle
|
|
685
|
-
|
|
686
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
687
|
-
end
|
|
763
|
+
self:saveData()
|
|
688
764
|
local abilities = self.abilities
|
|
689
765
|
for ____, ability in ipairs(abilities) do
|
|
690
766
|
ability:destroy()
|
|
@@ -720,7 +796,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
720
796
|
self._attackHandlers = handlers
|
|
721
797
|
if #handlers == 1 then
|
|
722
798
|
local handle = self.handle
|
|
723
|
-
assert(
|
|
799
|
+
assert(
|
|
800
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
801
|
+
"attack handler ability must be added",
|
|
802
|
+
self
|
|
803
|
+
)
|
|
724
804
|
end
|
|
725
805
|
return handler
|
|
726
806
|
end
|
|
@@ -749,17 +829,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
829
|
end}
|
|
750
830
|
end
|
|
751
831
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
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
|
|
754
834
|
end
|
|
755
835
|
function Unit.prototype.addClassification(self, classification)
|
|
756
|
-
return
|
|
836
|
+
return UnitAddType(self.handle, classification)
|
|
757
837
|
end
|
|
758
838
|
function Unit.prototype.removeClassification(self, classification)
|
|
759
|
-
return
|
|
839
|
+
return UnitRemoveType(self.handle, classification)
|
|
760
840
|
end
|
|
761
841
|
function Unit.prototype.hasClassification(self, classification)
|
|
762
|
-
return
|
|
842
|
+
return IsUnitType(self.handle, classification)
|
|
763
843
|
end
|
|
764
844
|
function Unit.prototype.isVisibleTo(self, player)
|
|
765
845
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -768,13 +848,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
848
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
849
|
end
|
|
770
850
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
851
|
+
local ____temp_3
|
|
772
852
|
if type(x) == "number" then
|
|
773
|
-
|
|
853
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
854
|
else
|
|
775
|
-
|
|
855
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
776
856
|
end
|
|
777
|
-
return
|
|
857
|
+
return ____temp_3
|
|
778
858
|
end
|
|
779
859
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
860
|
return isUnitAlly(
|
|
@@ -792,16 +872,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
792
872
|
if type(animation) == "number" then
|
|
793
873
|
setUnitAnimationByIndex(self.handle, animation)
|
|
794
874
|
elseif rarity then
|
|
795
|
-
|
|
875
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
796
876
|
else
|
|
797
877
|
setUnitAnimation(self.handle, animation)
|
|
798
878
|
end
|
|
799
879
|
end
|
|
880
|
+
function Unit.prototype.resetAnimation(self)
|
|
881
|
+
ResetUnitAnimation(self.handle)
|
|
882
|
+
end
|
|
800
883
|
function Unit.prototype.queueAnimation(self, animation)
|
|
801
|
-
|
|
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
|
|
802
896
|
end
|
|
803
897
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
898
|
+
self[104] = (self[104] or 0) + 1
|
|
805
899
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
900
|
end
|
|
807
901
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -811,21 +905,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
811
905
|
return IsUnitSelected(self.handle, player.handle)
|
|
812
906
|
end
|
|
813
907
|
function Unit.prototype.explode(self)
|
|
814
|
-
|
|
908
|
+
SetUnitExploded(self.handle, true)
|
|
815
909
|
killUnit(self.handle)
|
|
816
910
|
end
|
|
817
911
|
function Unit.prototype.kill(self)
|
|
818
912
|
killUnit(self.handle)
|
|
819
913
|
end
|
|
820
914
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
821
|
-
local
|
|
822
|
-
local
|
|
823
|
-
local
|
|
824
|
-
if
|
|
825
|
-
|
|
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
|
|
826
920
|
end
|
|
827
|
-
__TS__SparseArrayPush(
|
|
828
|
-
|
|
921
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
922
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
829
923
|
end
|
|
830
924
|
function Unit.prototype.healTarget(self, target, amount)
|
|
831
925
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -868,17 +962,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
868
962
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
869
963
|
end
|
|
870
964
|
function Unit.prototype.addAbility(self, abilityId)
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
965
|
+
local ability = UnitAbility:of(
|
|
966
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
967
|
+
abilityId,
|
|
968
|
+
self
|
|
969
|
+
)
|
|
970
|
+
if ability ~= nil then
|
|
877
971
|
local abilities = self.abilities
|
|
878
972
|
abilities[#abilities + 1] = ability
|
|
879
|
-
return ability
|
|
880
973
|
end
|
|
881
|
-
return
|
|
974
|
+
return ability
|
|
882
975
|
end
|
|
883
976
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
884
977
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -892,31 +985,21 @@ end
|
|
|
892
985
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
893
986
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
894
987
|
end
|
|
895
|
-
function Unit.prototype.
|
|
896
|
-
local
|
|
897
|
-
|
|
898
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
899
|
-
return nil
|
|
900
|
-
end
|
|
901
|
-
return UnitAbility:of(
|
|
902
|
-
getUnitAbility(self.handle, abilityId),
|
|
903
|
-
abilityId,
|
|
904
|
-
self
|
|
905
|
-
)
|
|
988
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
989
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
990
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
906
991
|
end
|
|
907
|
-
function Unit.prototype.removeAbility(self,
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
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
|
|
916
1000
|
end
|
|
917
|
-
return true
|
|
918
1001
|
end
|
|
919
|
-
return
|
|
1002
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
920
1003
|
end
|
|
921
1004
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
922
1005
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -930,12 +1013,16 @@ end
|
|
|
930
1013
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
931
1014
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
932
1015
|
end
|
|
933
|
-
function Unit.prototype.interruptAttack(self)
|
|
934
|
-
unitInterruptAttack(self.handle)
|
|
935
|
-
end
|
|
936
1016
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
937
|
-
|
|
938
|
-
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
|
+
)
|
|
939
1026
|
end
|
|
940
1027
|
function Unit.prototype.getDistanceTo(self, target)
|
|
941
1028
|
local handle = self.handle
|
|
@@ -995,18 +1082,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
995
1082
|
self:decrementStunCounter()
|
|
996
1083
|
end
|
|
997
1084
|
function Unit.prototype.incrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
1085
|
+
local stunCounter = self[102] or 0
|
|
1086
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
1000
1087
|
BlzPauseUnitEx(self.handle, true)
|
|
1001
1088
|
end
|
|
1002
|
-
self[
|
|
1089
|
+
self[102] = stunCounter + 1
|
|
1003
1090
|
end
|
|
1004
1091
|
function Unit.prototype.decrementStunCounter(self)
|
|
1005
|
-
local stunCounter = self[
|
|
1006
|
-
if not self[
|
|
1092
|
+
local stunCounter = self[102] or 0
|
|
1093
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1007
1094
|
BlzPauseUnitEx(self.handle, false)
|
|
1008
1095
|
end
|
|
1009
|
-
self[
|
|
1096
|
+
self[102] = stunCounter - 1
|
|
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
|
|
1010
1123
|
end
|
|
1011
1124
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1012
1125
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1134,6 +1247,9 @@ end
|
|
|
1134
1247
|
function Unit.prototype.__tostring(self)
|
|
1135
1248
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1136
1249
|
end
|
|
1250
|
+
function Unit.getBySyncId(self, syncId)
|
|
1251
|
+
return unitBySyncId[syncId]
|
|
1252
|
+
end
|
|
1137
1253
|
__TS__SetDescriptor(
|
|
1138
1254
|
Unit.prototype,
|
|
1139
1255
|
"_deltas",
|
|
@@ -1193,7 +1309,15 @@ __TS__SetDescriptor(
|
|
|
1193
1309
|
Unit.prototype,
|
|
1194
1310
|
"isIllusion",
|
|
1195
1311
|
{get = function(self)
|
|
1196
|
-
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")
|
|
1197
1321
|
end},
|
|
1198
1322
|
true
|
|
1199
1323
|
)
|
|
@@ -1272,13 +1396,13 @@ __TS__SetDescriptor(
|
|
|
1272
1396
|
)
|
|
1273
1397
|
__TS__SetDescriptor(
|
|
1274
1398
|
Unit.prototype,
|
|
1275
|
-
"
|
|
1399
|
+
"primaryAttribute",
|
|
1276
1400
|
{
|
|
1277
1401
|
get = function(self)
|
|
1278
|
-
return
|
|
1402
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1279
1403
|
end,
|
|
1280
|
-
set = function(self,
|
|
1281
|
-
|
|
1404
|
+
set = function(self, primaryAttribute)
|
|
1405
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1282
1406
|
end
|
|
1283
1407
|
},
|
|
1284
1408
|
true
|
|
@@ -1300,19 +1424,6 @@ __TS__SetDescriptor(
|
|
|
1300
1424
|
end},
|
|
1301
1425
|
true
|
|
1302
1426
|
)
|
|
1303
|
-
__TS__SetDescriptor(
|
|
1304
|
-
Unit.prototype,
|
|
1305
|
-
"agilityBase",
|
|
1306
|
-
{
|
|
1307
|
-
get = function(self)
|
|
1308
|
-
return getHeroAgi(self.handle, false)
|
|
1309
|
-
end,
|
|
1310
|
-
set = function(self, agilityBase)
|
|
1311
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1312
|
-
end
|
|
1313
|
-
},
|
|
1314
|
-
true
|
|
1315
|
-
)
|
|
1316
1427
|
__TS__SetDescriptor(
|
|
1317
1428
|
Unit.prototype,
|
|
1318
1429
|
"agilityBonus",
|
|
@@ -1330,19 +1441,6 @@ __TS__SetDescriptor(
|
|
|
1330
1441
|
end},
|
|
1331
1442
|
true
|
|
1332
1443
|
)
|
|
1333
|
-
__TS__SetDescriptor(
|
|
1334
|
-
Unit.prototype,
|
|
1335
|
-
"intelligenceBase",
|
|
1336
|
-
{
|
|
1337
|
-
get = function(self)
|
|
1338
|
-
return getHeroInt(self.handle, false)
|
|
1339
|
-
end,
|
|
1340
|
-
set = function(self, intelligenceBase)
|
|
1341
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1342
|
-
end
|
|
1343
|
-
},
|
|
1344
|
-
true
|
|
1345
|
-
)
|
|
1346
1444
|
__TS__SetDescriptor(
|
|
1347
1445
|
Unit.prototype,
|
|
1348
1446
|
"intelligenceBonus",
|
|
@@ -1391,17 +1489,17 @@ __TS__SetDescriptor(
|
|
|
1391
1489
|
"isTeamGlowVisible",
|
|
1392
1490
|
{
|
|
1393
1491
|
get = function(self)
|
|
1394
|
-
return not self[
|
|
1492
|
+
return not self[107]
|
|
1395
1493
|
end,
|
|
1396
1494
|
set = function(self, isTeamGlowVisible)
|
|
1397
|
-
|
|
1398
|
-
local
|
|
1495
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1496
|
+
local ____temp_7
|
|
1399
1497
|
if not isTeamGlowVisible then
|
|
1400
|
-
|
|
1498
|
+
____temp_7 = true
|
|
1401
1499
|
else
|
|
1402
|
-
|
|
1500
|
+
____temp_7 = nil
|
|
1403
1501
|
end
|
|
1404
|
-
self[
|
|
1502
|
+
self[107] = ____temp_7
|
|
1405
1503
|
end
|
|
1406
1504
|
},
|
|
1407
1505
|
true
|
|
@@ -1410,9 +1508,9 @@ __TS__SetDescriptor(
|
|
|
1410
1508
|
Unit.prototype,
|
|
1411
1509
|
"color",
|
|
1412
1510
|
{set = function(self, color)
|
|
1413
|
-
|
|
1414
|
-
if self[
|
|
1415
|
-
|
|
1511
|
+
SetUnitColor(self.handle, color.handle)
|
|
1512
|
+
if self[107] then
|
|
1513
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1416
1514
|
end
|
|
1417
1515
|
end},
|
|
1418
1516
|
true
|
|
@@ -1435,14 +1533,14 @@ __TS__SetDescriptor(
|
|
|
1435
1533
|
"maxHealth",
|
|
1436
1534
|
{
|
|
1437
1535
|
get = function(self)
|
|
1438
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1536
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1439
1537
|
end,
|
|
1440
1538
|
set = function(self, maxHealth)
|
|
1441
|
-
if maxHealth < 1 and self[
|
|
1442
|
-
self[
|
|
1539
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1540
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1443
1541
|
maxHealth = 1
|
|
1444
1542
|
end
|
|
1445
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1543
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1446
1544
|
end
|
|
1447
1545
|
},
|
|
1448
1546
|
true
|
|
@@ -1484,10 +1582,10 @@ __TS__SetDescriptor(
|
|
|
1484
1582
|
"health",
|
|
1485
1583
|
{
|
|
1486
1584
|
get = function(self)
|
|
1487
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1585
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1488
1586
|
end,
|
|
1489
1587
|
set = function(self, health)
|
|
1490
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1588
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1491
1589
|
end
|
|
1492
1590
|
},
|
|
1493
1591
|
true
|
|
@@ -1563,25 +1661,12 @@ __TS__SetDescriptor(
|
|
|
1563
1661
|
},
|
|
1564
1662
|
true
|
|
1565
1663
|
)
|
|
1566
|
-
__TS__SetDescriptor(
|
|
1567
|
-
Unit.prototype,
|
|
1568
|
-
"flyHeight",
|
|
1569
|
-
{
|
|
1570
|
-
get = function(self)
|
|
1571
|
-
return getUnitFlyHeight(self.handle)
|
|
1572
|
-
end,
|
|
1573
|
-
set = function(self, v)
|
|
1574
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1575
|
-
end
|
|
1576
|
-
},
|
|
1577
|
-
true
|
|
1578
|
-
)
|
|
1579
1664
|
__TS__SetDescriptor(
|
|
1580
1665
|
Unit.prototype,
|
|
1581
1666
|
"x",
|
|
1582
1667
|
{
|
|
1583
1668
|
get = function(self)
|
|
1584
|
-
return getUnitX(self.handle)
|
|
1669
|
+
return self[108] or getUnitX(self.handle)
|
|
1585
1670
|
end,
|
|
1586
1671
|
set = function(self, v)
|
|
1587
1672
|
SetUnitX(self.handle, v)
|
|
@@ -1594,7 +1679,7 @@ __TS__SetDescriptor(
|
|
|
1594
1679
|
"y",
|
|
1595
1680
|
{
|
|
1596
1681
|
get = function(self)
|
|
1597
|
-
return getUnitY(self.handle)
|
|
1682
|
+
return self[109] or getUnitY(self.handle)
|
|
1598
1683
|
end,
|
|
1599
1684
|
set = function(self, v)
|
|
1600
1685
|
SetUnitY(self.handle, v)
|
|
@@ -1680,10 +1765,10 @@ __TS__SetDescriptor(
|
|
|
1680
1765
|
"gold",
|
|
1681
1766
|
{
|
|
1682
1767
|
get = function(self)
|
|
1683
|
-
return
|
|
1768
|
+
return GetResourceAmount(self.handle)
|
|
1684
1769
|
end,
|
|
1685
1770
|
set = function(self, gold)
|
|
1686
|
-
|
|
1771
|
+
SetResourceAmount(self.handle, gold)
|
|
1687
1772
|
end
|
|
1688
1773
|
},
|
|
1689
1774
|
true
|
|
@@ -1698,17 +1783,21 @@ __TS__SetDescriptor(
|
|
|
1698
1783
|
set = function(self, isPaused)
|
|
1699
1784
|
local handle = self.handle
|
|
1700
1785
|
if isPaused and not IsUnitPaused(handle) then
|
|
1701
|
-
self[
|
|
1702
|
-
|
|
1703
|
-
|
|
1786
|
+
self[101] = true
|
|
1787
|
+
if (self[103] or 0) <= 0 then
|
|
1788
|
+
for _ = self[102] or 0, -1 do
|
|
1789
|
+
BlzPauseUnitEx(handle, true)
|
|
1790
|
+
end
|
|
1704
1791
|
end
|
|
1705
1792
|
PauseUnit(handle, true)
|
|
1706
1793
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1707
1794
|
PauseUnit(handle, false)
|
|
1708
|
-
|
|
1709
|
-
|
|
1795
|
+
if (self[103] or 0) <= 0 then
|
|
1796
|
+
for _ = self[102] or 0, -1 do
|
|
1797
|
+
BlzPauseUnitEx(handle, false)
|
|
1798
|
+
end
|
|
1710
1799
|
end
|
|
1711
|
-
self[
|
|
1800
|
+
self[101] = nil
|
|
1712
1801
|
end
|
|
1713
1802
|
end
|
|
1714
1803
|
},
|
|
@@ -1764,20 +1853,6 @@ __TS__SetDescriptor(
|
|
|
1764
1853
|
},
|
|
1765
1854
|
true
|
|
1766
1855
|
)
|
|
1767
|
-
__TS__SetDescriptor(
|
|
1768
|
-
Unit.prototype,
|
|
1769
|
-
"scale",
|
|
1770
|
-
{
|
|
1771
|
-
get = function(self)
|
|
1772
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1773
|
-
end,
|
|
1774
|
-
set = function(self, v)
|
|
1775
|
-
setUnitScale(self.handle, v, v, v)
|
|
1776
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1777
|
-
end
|
|
1778
|
-
},
|
|
1779
|
-
true
|
|
1780
|
-
)
|
|
1781
1856
|
__TS__SetDescriptor(
|
|
1782
1857
|
Unit.prototype,
|
|
1783
1858
|
"timeScale",
|
|
@@ -1811,6 +1886,19 @@ __TS__SetDescriptor(
|
|
|
1811
1886
|
end},
|
|
1812
1887
|
true
|
|
1813
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
|
+
)
|
|
1814
1902
|
__TS__SetDescriptor(
|
|
1815
1903
|
Unit.prototype,
|
|
1816
1904
|
"pathing",
|
|
@@ -1901,30 +1989,6 @@ __TS__SetDescriptor(
|
|
|
1901
1989
|
end},
|
|
1902
1990
|
true
|
|
1903
1991
|
)
|
|
1904
|
-
__TS__SetDescriptor(
|
|
1905
|
-
Unit.prototype,
|
|
1906
|
-
"onUnitInRange",
|
|
1907
|
-
{get = function(self)
|
|
1908
|
-
local handle = self.handle
|
|
1909
|
-
local onUnitInRange = setmetatable(
|
|
1910
|
-
{},
|
|
1911
|
-
{__index = function(self, value)
|
|
1912
|
-
local event = __TS__New(
|
|
1913
|
-
TriggerEvent,
|
|
1914
|
-
function(trigger)
|
|
1915
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
1916
|
-
end,
|
|
1917
|
-
function() return ____exports.Unit:of(handle) end
|
|
1918
|
-
)
|
|
1919
|
-
rawset(self, value, event)
|
|
1920
|
-
return event
|
|
1921
|
-
end}
|
|
1922
|
-
)
|
|
1923
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
1924
|
-
return onUnitInRange
|
|
1925
|
-
end},
|
|
1926
|
-
true
|
|
1927
|
-
)
|
|
1928
1992
|
__TS__SetDescriptor(
|
|
1929
1993
|
Unit.prototype,
|
|
1930
1994
|
"onManaEqual",
|
|
@@ -1992,6 +2056,14 @@ __TS__SetDescriptor(
|
|
|
1992
2056
|
end},
|
|
1993
2057
|
true
|
|
1994
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
|
+
)
|
|
1995
2067
|
__TS__SetDescriptor(
|
|
1996
2068
|
Unit.prototype,
|
|
1997
2069
|
"onSelect",
|
|
@@ -2052,6 +2124,11 @@ __TS__SetDescriptor(
|
|
|
2052
2124
|
end},
|
|
2053
2125
|
true
|
|
2054
2126
|
)
|
|
2127
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2128
|
+
____exports.UnitTriggerEvent,
|
|
2129
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2130
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2131
|
+
)
|
|
2055
2132
|
Unit.deathEvent = __TS__New(
|
|
2056
2133
|
____exports.UnitTriggerEvent,
|
|
2057
2134
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2127,25 +2204,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2127
2204
|
InitializingEvent,
|
|
2128
2205
|
function(event)
|
|
2129
2206
|
local function listener(unit, id)
|
|
2130
|
-
local
|
|
2207
|
+
local ____GetSpellTargetUnit_result_10
|
|
2131
2208
|
if GetSpellTargetUnit() then
|
|
2132
|
-
|
|
2209
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2133
2210
|
else
|
|
2134
|
-
local
|
|
2211
|
+
local ____GetSpellTargetItem_result_9
|
|
2135
2212
|
if GetSpellTargetItem() then
|
|
2136
|
-
|
|
2213
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2137
2214
|
else
|
|
2138
|
-
local
|
|
2215
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2139
2216
|
if GetSpellTargetDestructable() then
|
|
2140
|
-
|
|
2217
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2141
2218
|
else
|
|
2142
|
-
|
|
2219
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2143
2220
|
end
|
|
2144
|
-
|
|
2221
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2145
2222
|
end
|
|
2146
|
-
|
|
2223
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2147
2224
|
end
|
|
2148
|
-
local target =
|
|
2225
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2149
2226
|
if target then
|
|
2150
2227
|
invoke(event, unit, id, target)
|
|
2151
2228
|
end
|
|
@@ -2317,10 +2394,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2317
2394
|
____exports.UnitTriggerEvent,
|
|
2318
2395
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2319
2396
|
function()
|
|
2320
|
-
local
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
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
|
|
2324
2403
|
end
|
|
2325
2404
|
return IgnoreEvent
|
|
2326
2405
|
end
|
|
@@ -2351,38 +2430,57 @@ Unit.onDamaging = (function()
|
|
|
2351
2430
|
if source and source.typeId == dummyUnitId then
|
|
2352
2431
|
source = nil
|
|
2353
2432
|
end
|
|
2354
|
-
local target = BlzGetEventDamageTarget()
|
|
2433
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2434
|
+
local metadata = damageMetadataByTarget[target]
|
|
2435
|
+
damageMetadataByTarget[target] = nil
|
|
2355
2436
|
local data = {
|
|
2356
2437
|
amount = GetEventDamage(),
|
|
2357
|
-
attackType = BlzGetEventAttackType(),
|
|
2438
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2358
2439
|
damageType = BlzGetEventDamageType(),
|
|
2359
2440
|
weaponType = BlzGetEventWeaponType(),
|
|
2360
|
-
|
|
2441
|
+
metadata = metadata,
|
|
2442
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2443
|
+
originalAmount = GetEventDamage(),
|
|
2444
|
+
originalMetadata = metadata,
|
|
2445
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2361
2446
|
}
|
|
2362
2447
|
if data.isAttack and source then
|
|
2363
|
-
|
|
2364
|
-
if weapon == -1 then
|
|
2365
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2366
|
-
weapon = 0
|
|
2367
|
-
end
|
|
2368
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2448
|
+
data.weapon = source:chooseWeapon(target)
|
|
2369
2449
|
end
|
|
2370
2450
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2371
2451
|
invoke(
|
|
2372
2452
|
event,
|
|
2373
2453
|
source,
|
|
2374
|
-
|
|
2454
|
+
target,
|
|
2375
2455
|
setmetatable(
|
|
2376
2456
|
{},
|
|
2377
2457
|
{
|
|
2378
2458
|
__index = data,
|
|
2379
2459
|
__newindex = function(self, key, value)
|
|
2380
|
-
damageSetters[key]
|
|
2460
|
+
local damageSetter = damageSetters[key]
|
|
2461
|
+
if damageSetter ~= nil then
|
|
2462
|
+
damageSetter(value)
|
|
2463
|
+
end
|
|
2381
2464
|
data[key] = value
|
|
2382
2465
|
end
|
|
2383
2466
|
}
|
|
2384
2467
|
)
|
|
2385
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
|
|
2386
2484
|
return
|
|
2387
2485
|
end
|
|
2388
2486
|
BlzSetEventDamage(0)
|
|
@@ -2390,7 +2488,7 @@ Unit.onDamaging = (function()
|
|
|
2390
2488
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2391
2489
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2392
2490
|
local sourceOwner = source.owner.handle
|
|
2393
|
-
local targetOwner =
|
|
2491
|
+
local targetOwner = target.owner.handle
|
|
2394
2492
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2395
2493
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2396
2494
|
Timer:run(function()
|
|
@@ -2406,23 +2504,19 @@ Unit.onDamaging = (function()
|
|
|
2406
2504
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2407
2505
|
local condition = ____value[1]
|
|
2408
2506
|
local action = ____value[2]
|
|
2409
|
-
if condition(
|
|
2410
|
-
source,
|
|
2411
|
-
____exports.Unit:of(target),
|
|
2412
|
-
data
|
|
2413
|
-
) then
|
|
2507
|
+
if condition(source, target, data) then
|
|
2414
2508
|
action(
|
|
2415
2509
|
source,
|
|
2416
|
-
|
|
2510
|
+
target,
|
|
2417
2511
|
setmetatable(
|
|
2418
2512
|
{fire = function()
|
|
2419
2513
|
UnitDamageTarget(
|
|
2420
2514
|
source.handle,
|
|
2421
|
-
target,
|
|
2515
|
+
target.handle,
|
|
2422
2516
|
data.amount,
|
|
2423
2517
|
true,
|
|
2424
2518
|
true,
|
|
2425
|
-
data.attackType,
|
|
2519
|
+
attackTypeToNative(data.attackType),
|
|
2426
2520
|
data.damageType,
|
|
2427
2521
|
data.weaponType
|
|
2428
2522
|
)
|
|
@@ -2449,30 +2543,54 @@ Unit.onDamage = __TS__New(
|
|
|
2449
2543
|
if source and source.typeId == dummyUnitId then
|
|
2450
2544
|
source = nil
|
|
2451
2545
|
end
|
|
2546
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2547
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2548
|
+
damagingEventByTarget[target] = nil
|
|
2452
2549
|
local data = {
|
|
2453
2550
|
amount = GetEventDamage(),
|
|
2454
|
-
attackType = BlzGetEventAttackType(),
|
|
2551
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2455
2552
|
damageType = BlzGetEventDamageType(),
|
|
2456
2553
|
weaponType = BlzGetEventWeaponType(),
|
|
2554
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2457
2555
|
isAttack = BlzGetEventIsAttack(),
|
|
2458
|
-
originalAmount = GetEventDamage(),
|
|
2556
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2557
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2459
2558
|
preventDeath = damageEventPreventDeath
|
|
2460
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
|
|
2461
2577
|
local evData = setmetatable(
|
|
2462
2578
|
{},
|
|
2463
2579
|
{
|
|
2464
2580
|
__index = data,
|
|
2465
2581
|
__newindex = function(self, key, value)
|
|
2466
|
-
damageSetters[key]
|
|
2582
|
+
local damageSetter = damageSetters[key]
|
|
2583
|
+
if damageSetter ~= nil then
|
|
2584
|
+
damageSetter(value)
|
|
2585
|
+
end
|
|
2467
2586
|
data[key] = value
|
|
2468
2587
|
end
|
|
2469
2588
|
}
|
|
2470
2589
|
)
|
|
2471
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2472
2590
|
invoke(event, source, target, evData)
|
|
2473
2591
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2474
2592
|
local bonusHealth = math.ceil(evData.amount)
|
|
2475
|
-
target[
|
|
2593
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2476
2594
|
BlzSetUnitMaxHP(
|
|
2477
2595
|
target.handle,
|
|
2478
2596
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2486,7 +2604,7 @@ Unit.onDamage = __TS__New(
|
|
|
2486
2604
|
evData[0],
|
|
2487
2605
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2488
2606
|
)
|
|
2489
|
-
target[
|
|
2607
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2490
2608
|
SetWidgetLife(
|
|
2491
2609
|
target.handle,
|
|
2492
2610
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2511,8 +2629,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2511
2629
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2512
2630
|
function()
|
|
2513
2631
|
local unit = getTriggerUnit()
|
|
2514
|
-
|
|
2515
|
-
|
|
2632
|
+
local item = getManipulatedItem()
|
|
2633
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2634
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2516
2635
|
end
|
|
2517
2636
|
return IgnoreEvent
|
|
2518
2637
|
end
|
|
@@ -2521,9 +2640,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2521
2640
|
____exports.UnitTriggerEvent,
|
|
2522
2641
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2523
2642
|
function()
|
|
2524
|
-
local
|
|
2525
|
-
|
|
2526
|
-
|
|
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
|
|
2527
2651
|
end
|
|
2528
2652
|
return IgnoreEvent
|
|
2529
2653
|
end
|
|
@@ -2531,12 +2655,79 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2531
2655
|
Unit.itemUsedEvent = __TS__New(
|
|
2532
2656
|
____exports.UnitTriggerEvent,
|
|
2533
2657
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2534
|
-
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
|
|
2535
2666
|
)
|
|
2536
2667
|
Unit.itemStackedEvent = __TS__New(
|
|
2537
2668
|
____exports.UnitTriggerEvent,
|
|
2538
2669
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2539
|
-
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}
|
|
2686
|
+
)
|
|
2687
|
+
__TS__ObjectDefineProperty(
|
|
2688
|
+
Unit,
|
|
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",
|
|
2711
|
+
{get = function(self)
|
|
2712
|
+
local event = __TS__New(Event)
|
|
2713
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2714
|
+
local slotTo = order - orderId("moveslot0")
|
|
2715
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2716
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2717
|
+
if slotFrom ~= nil then
|
|
2718
|
+
invoke(
|
|
2719
|
+
event,
|
|
2720
|
+
unit,
|
|
2721
|
+
item,
|
|
2722
|
+
slotFrom,
|
|
2723
|
+
slotTo
|
|
2724
|
+
)
|
|
2725
|
+
end
|
|
2726
|
+
end)
|
|
2727
|
+
end
|
|
2728
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2729
|
+
return event
|
|
2730
|
+
end}
|
|
2540
2731
|
)
|
|
2541
2732
|
__TS__ObjectDefineProperty(
|
|
2542
2733
|
Unit,
|
|
@@ -2563,6 +2754,10 @@ __TS__ObjectDefineProperty(
|
|
|
2563
2754
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2564
2755
|
return destroyEvent
|
|
2565
2756
|
end}
|
|
2757
|
+
)
|
|
2758
|
+
Unit.synchronize = synchronizer(
|
|
2759
|
+
function(unit) return unit.syncId end,
|
|
2760
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2566
2761
|
);
|
|
2567
2762
|
(function(self)
|
|
2568
2763
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2592,7 +2787,8 @@ __TS__ObjectDefineProperty(
|
|
|
2592
2787
|
return
|
|
2593
2788
|
end
|
|
2594
2789
|
end
|
|
2595
|
-
unit:
|
|
2790
|
+
unit:saveData()
|
|
2791
|
+
Timer:run(unit, "destroy")
|
|
2596
2792
|
end)
|
|
2597
2793
|
end
|
|
2598
2794
|
end)(Unit)
|