warscript 0.0.1-dev.d63794c → 0.0.1-dev.d6e2c10
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 +1 -3
- package/core/types/effect.lua +26 -29
- 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 +99 -24
- 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.lua +6 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +12 -1
- package/engine/behavior.lua +172 -70
- 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 +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +22 -8
- package/engine/behaviour/ability/on-command-impact.lua +7 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -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 +14 -4
- package/engine/behaviour/ability.lua +76 -25
- package/engine/behaviour/unit/stun-immunity.d.ts +11 -5
- package/engine/behaviour/unit/stun-immunity.lua +53 -28
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +259 -6
- package/engine/buff.d.ts +67 -44
- package/engine/buff.lua +347 -232
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +66 -33
- package/engine/internal/item/ability.lua +136 -10
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +20 -19
- package/engine/internal/item.lua +191 -74
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +17 -0
- package/engine/internal/unit/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/item.lua +3 -4
- 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/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+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 +45 -14
- package/engine/internal/unit.d.ts +43 -17
- package/engine/internal/unit.lua +368 -173
- 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/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/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -17
- package/engine/object-data/entry/ability-type.lua +93 -36
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +18 -2
- package/engine/object-data/entry/destructible-type.lua +90 -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 +8 -5
- package/engine/object-field/ability.lua +8 -4
- package/engine/object-field/unit.d.ts +69 -3
- package/engine/object-field/unit.lua +264 -7
- package/engine/object-field.d.ts +23 -6
- package/engine/object-field.lua +311 -124
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/unit.d.ts +6 -0
- package/engine/standard/fields/unit.lua +11 -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 +4 -0
- package/engine/unit.lua +4 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +2 -3
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +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/linked-set.d.ts +2 -0
- package/utility/linked-set.lua +22 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/buff.lua
CHANGED
|
@@ -16,6 +16,7 @@ local internalApplyBuff = ____applicable.internalApplyBuff
|
|
|
16
16
|
local removeBuff = ____applicable.removeBuff
|
|
17
17
|
local ____ability = require("engine.internal.ability")
|
|
18
18
|
local Ability = ____ability.Ability
|
|
19
|
+
local UnitAbility = ____ability.UnitAbility
|
|
19
20
|
local ____ability = require("engine.object-field.ability")
|
|
20
21
|
local AbilityBooleanField = ____ability.AbilityBooleanField
|
|
21
22
|
local AbilityNumberField = ____ability.AbilityNumberField
|
|
@@ -28,13 +29,11 @@ local ____math = require("math")
|
|
|
28
29
|
local max = ____math.max
|
|
29
30
|
local min = ____math.min
|
|
30
31
|
local ____bonus = require("engine.internal.unit.bonus")
|
|
31
|
-
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
32
|
-
local getUnitBonus = ____bonus.getUnitBonus
|
|
33
|
-
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
34
32
|
local UnitBonusType = ____bonus.UnitBonusType
|
|
35
33
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
34
|
local damageArea = ____area_2Ddamage.damageArea
|
|
37
35
|
local ____preconditions = require("utility.preconditions")
|
|
36
|
+
local check = ____preconditions.check
|
|
38
37
|
local checkNotNull = ____preconditions.checkNotNull
|
|
39
38
|
local ____effect = require("core.types.effect")
|
|
40
39
|
local Effect = ____effect.Effect
|
|
@@ -44,12 +43,18 @@ local ____unit = require("engine.behaviour.unit")
|
|
|
44
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
45
44
|
local ____arrays = require("utility.arrays")
|
|
46
45
|
local forEach = ____arrays.forEach
|
|
46
|
+
local ____event = require("event")
|
|
47
|
+
local Event = ____event.Event
|
|
47
48
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
49
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
49
50
|
local ____item = require("engine.internal.item")
|
|
50
51
|
local Item = ____item.Item
|
|
51
52
|
local ____destructable = require("core.types.destructable")
|
|
52
53
|
local Destructable = ____destructable.Destructable
|
|
54
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
55
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
56
|
+
local ____ability = require("engine.behaviour.ability")
|
|
57
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
53
58
|
local getUnitAbility = BlzGetUnitAbility
|
|
54
59
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
55
60
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -98,12 +103,15 @@ local buffParametersKeys = {
|
|
|
98
103
|
armorIncreaseFactor = true,
|
|
99
104
|
attackSpeedIncreaseFactor = true,
|
|
100
105
|
movementSpeedIncreaseFactor = true,
|
|
106
|
+
evasionProbability = true,
|
|
107
|
+
missProbability = true,
|
|
101
108
|
damageFactor = true,
|
|
102
109
|
receivedDamageFactor = true,
|
|
103
110
|
receivedMagicDamageFactor = true,
|
|
104
111
|
durationIncreaseOnAutoAttack = true,
|
|
105
112
|
maximumDuration = true,
|
|
106
113
|
maximumRemainingDuration = true,
|
|
114
|
+
turnsIntoGhost = true,
|
|
107
115
|
stuns = true,
|
|
108
116
|
ignoresStunImmunity = true,
|
|
109
117
|
providesStunImmunity = true,
|
|
@@ -118,7 +126,8 @@ local buffParametersKeys = {
|
|
|
118
126
|
damageOnExpiration = true,
|
|
119
127
|
healingOnExpiration = true,
|
|
120
128
|
killsOnExpiration = true,
|
|
121
|
-
explodesOnExpiration = true
|
|
129
|
+
explodesOnExpiration = true,
|
|
130
|
+
abilityCooldownFactor = true
|
|
122
131
|
}
|
|
123
132
|
local function resolveEnumValue(ability, level, value)
|
|
124
133
|
if value == nil or type(value) == "number" then
|
|
@@ -169,6 +178,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
169
178
|
end
|
|
170
179
|
end
|
|
171
180
|
local buffBooleanParameters = {
|
|
181
|
+
"turnsIntoGhost",
|
|
172
182
|
"stuns",
|
|
173
183
|
"ignoresStunImmunity",
|
|
174
184
|
"disablesAutoAttack",
|
|
@@ -180,6 +190,7 @@ local buffNumberParameters = {
|
|
|
180
190
|
"durationIncreaseOnAutoAttack",
|
|
181
191
|
"attackSpeedIncreaseFactor",
|
|
182
192
|
"movementSpeedIncreaseFactor",
|
|
193
|
+
"evasionProbability",
|
|
183
194
|
"armorIncrease",
|
|
184
195
|
"damageFactor",
|
|
185
196
|
"receivedDamageFactor",
|
|
@@ -193,7 +204,8 @@ local buffNumberParameters = {
|
|
|
193
204
|
"healingPerInterval",
|
|
194
205
|
"healingOverDuration",
|
|
195
206
|
"damageOnExpiration",
|
|
196
|
-
"healingOnExpiration"
|
|
207
|
+
"healingOnExpiration",
|
|
208
|
+
"abilityCooldownFactor"
|
|
197
209
|
}
|
|
198
210
|
local unsuccessfulApplicationMarker = {}
|
|
199
211
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -220,7 +232,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
220
232
|
return checkNotNull(firstNativeBuffTypeId)
|
|
221
233
|
end
|
|
222
234
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
223
|
-
if buff[
|
|
235
|
+
if buff[104] == uniqueGroup then
|
|
224
236
|
buff:destroy()
|
|
225
237
|
end
|
|
226
238
|
end
|
|
@@ -228,17 +240,17 @@ local function destroyBuff(buff)
|
|
|
228
240
|
buff:destroy()
|
|
229
241
|
end
|
|
230
242
|
local function expireBuff(buff)
|
|
231
|
-
local remainingDamageOverDuration = buff[
|
|
232
|
-
local remainingHealingOverDuration = buff[
|
|
243
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
244
|
+
local remainingHealingOverDuration = buff[113] or 0
|
|
233
245
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
234
246
|
buff:flashSpecialEffect()
|
|
235
247
|
if remainingDamageOverDuration ~= 0 then
|
|
236
|
-
(buff[
|
|
237
|
-
buff[
|
|
248
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
249
|
+
buff[113] = nil
|
|
238
250
|
end
|
|
239
251
|
if remainingHealingOverDuration ~= 0 then
|
|
240
|
-
(buff[
|
|
241
|
-
buff[
|
|
252
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
253
|
+
buff[118] = nil
|
|
242
254
|
end
|
|
243
255
|
end
|
|
244
256
|
Timer:run(destroyBuff, buff)
|
|
@@ -246,56 +258,58 @@ local function expireBuff(buff)
|
|
|
246
258
|
end
|
|
247
259
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
248
260
|
buffDamageIntervalTimerCallback(buff)
|
|
249
|
-
local timer = buff[
|
|
250
|
-
local damageInterval = buff[
|
|
261
|
+
local timer = buff[114]
|
|
262
|
+
local damageInterval = buff[112]
|
|
251
263
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
252
264
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
253
265
|
end
|
|
254
266
|
end
|
|
255
267
|
buffDamageIntervalTimerCallback = function(buff)
|
|
256
268
|
buff:flashSpecialEffect()
|
|
257
|
-
local source = buff[
|
|
258
|
-
local remainingDamageOverDuration = buff[
|
|
269
|
+
local source = buff[102] or buff[101]
|
|
270
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
259
271
|
if remainingDamageOverDuration ~= 0 then
|
|
260
|
-
local damageInterval = buff[
|
|
272
|
+
local damageInterval = buff[112] or 0
|
|
261
273
|
if damageInterval ~= 0 then
|
|
262
274
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
263
|
-
source:damageTarget(buff[
|
|
264
|
-
buff[
|
|
275
|
+
source:damageTarget(buff[101], damage)
|
|
276
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
265
277
|
end
|
|
266
278
|
end
|
|
267
|
-
local damagePerInterval = buff[
|
|
279
|
+
local damagePerInterval = buff[111] or 0
|
|
268
280
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
269
|
-
source:damageTarget(buff[
|
|
281
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
270
282
|
end
|
|
271
283
|
end
|
|
272
284
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
273
285
|
buffHealingIntervalTimerCallback(buff)
|
|
274
|
-
local timer = buff[
|
|
275
|
-
local healingInterval = buff[
|
|
286
|
+
local timer = buff[119]
|
|
287
|
+
local healingInterval = buff[117]
|
|
276
288
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
277
289
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
278
290
|
end
|
|
279
291
|
end
|
|
280
292
|
buffHealingIntervalTimerCallback = function(buff)
|
|
281
|
-
if buff[
|
|
293
|
+
if buff[117] ~= buff[112] then
|
|
282
294
|
buff:flashSpecialEffect()
|
|
283
295
|
end
|
|
284
|
-
local source = buff[
|
|
285
|
-
local remainingHealingOverDuration = buff[
|
|
296
|
+
local source = buff[102] or buff[101]
|
|
297
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
286
298
|
if remainingHealingOverDuration ~= 0 then
|
|
287
|
-
local healingInterval = buff[
|
|
299
|
+
local healingInterval = buff[117] or 0
|
|
288
300
|
if healingInterval ~= 0 then
|
|
289
301
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
290
|
-
source:healTarget(buff[
|
|
291
|
-
buff[
|
|
302
|
+
source:healTarget(buff[101], healing)
|
|
303
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
292
304
|
end
|
|
293
305
|
end
|
|
294
|
-
local healingPerInterval = buff[
|
|
306
|
+
local healingPerInterval = buff[116] or 0
|
|
295
307
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
296
|
-
source:healTarget(buff[
|
|
308
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
297
309
|
end
|
|
298
310
|
end
|
|
311
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
312
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
299
313
|
____exports.Buff = __TS__Class()
|
|
300
314
|
local Buff = ____exports.Buff
|
|
301
315
|
Buff.name = "Buff"
|
|
@@ -304,38 +318,44 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
304
318
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
305
319
|
self._unit = _unit
|
|
306
320
|
self.parameters = nil
|
|
307
|
-
self[100] =
|
|
321
|
+
self[100] = 0
|
|
322
|
+
self[101] = _unit
|
|
308
323
|
local typeId
|
|
309
324
|
local polarity
|
|
310
325
|
local resistanceType
|
|
311
326
|
local ability
|
|
327
|
+
local abilityBehavior
|
|
312
328
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
313
329
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
314
330
|
polarity = resistanceTypeOrPolarity
|
|
315
331
|
resistanceType = abilityOrParametersOrResistanceType
|
|
316
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
332
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
333
|
+
abilityBehavior = parametersOrAbility
|
|
334
|
+
ability = abilityBehavior.ability
|
|
335
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
317
336
|
ability = parametersOrAbility
|
|
318
|
-
|
|
319
|
-
ability = nil
|
|
337
|
+
elseif parametersOrAbility ~= nil then
|
|
320
338
|
parameters = parametersOrAbility
|
|
321
339
|
end
|
|
322
340
|
else
|
|
323
341
|
typeId = typeIdOrTypeIds
|
|
324
342
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
325
343
|
resistanceType = resistanceTypeOrPolarity
|
|
326
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
344
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
345
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
346
|
+
ability = abilityBehavior.ability
|
|
347
|
+
parameters = parametersOrAbility
|
|
348
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
327
349
|
ability = abilityOrParametersOrResistanceType
|
|
328
350
|
parameters = parametersOrAbility
|
|
329
|
-
|
|
330
|
-
ability = nil
|
|
351
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
331
352
|
parameters = abilityOrParametersOrResistanceType
|
|
353
|
+
else
|
|
354
|
+
parameters = parametersOrAbility
|
|
332
355
|
end
|
|
333
356
|
end
|
|
357
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
334
358
|
self.typeId = typeId
|
|
335
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
336
|
-
parameters = ability
|
|
337
|
-
ability = nil
|
|
338
|
-
end
|
|
339
359
|
local defaultParameters = self.constructor.defaultParameters
|
|
340
360
|
local level = parameters and parameters.level or defaultParameters.level
|
|
341
361
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -360,14 +380,19 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
360
380
|
end
|
|
361
381
|
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
362
382
|
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
383
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
384
|
+
if missProbability ~= nil then
|
|
385
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
386
|
+
self[142] = missProbability
|
|
387
|
+
end
|
|
363
388
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
364
389
|
if buffByTypeId == nil then
|
|
365
390
|
buffByTypeId = {}
|
|
366
391
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
367
392
|
end
|
|
368
|
-
local
|
|
369
|
-
if
|
|
370
|
-
|
|
393
|
+
local ____opt_15 = buffByTypeId[typeId]
|
|
394
|
+
if ____opt_15 ~= nil then
|
|
395
|
+
____opt_15:destroy()
|
|
371
396
|
end
|
|
372
397
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
373
398
|
if uniqueGroup ~= nil then
|
|
@@ -381,13 +406,16 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
381
406
|
level,
|
|
382
407
|
duration,
|
|
383
408
|
spellStealPriority,
|
|
384
|
-
learnLevelMinimum
|
|
409
|
+
learnLevelMinimum,
|
|
410
|
+
missProbability
|
|
385
411
|
) then
|
|
412
|
+
self[100] = 1
|
|
386
413
|
UnitBehavior.prototype.destroy(self)
|
|
387
414
|
error(unsuccessfulApplicationMarker, 0)
|
|
388
415
|
end
|
|
389
416
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
390
417
|
if handle == nil then
|
|
418
|
+
self[100] = 1
|
|
391
419
|
UnitBehavior.prototype.destroy(self)
|
|
392
420
|
error(unsuccessfulApplicationMarker, 0)
|
|
393
421
|
end
|
|
@@ -396,20 +424,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
396
424
|
self._level = level
|
|
397
425
|
self._spellStealPriority = spellStealPriority
|
|
398
426
|
self._learnLevelMinimum = learnLevelMinimum
|
|
399
|
-
self[
|
|
400
|
-
self[
|
|
401
|
-
self[
|
|
402
|
-
self[
|
|
403
|
-
self[
|
|
427
|
+
self[102] = source
|
|
428
|
+
self[103] = duration or 0
|
|
429
|
+
self[104] = uniqueGroup
|
|
430
|
+
self[105] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
431
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
404
432
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
405
433
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
406
|
-
local
|
|
407
|
-
local
|
|
408
|
-
local
|
|
409
|
-
if
|
|
410
|
-
|
|
434
|
+
local ____ability_24 = ability
|
|
435
|
+
local ____level_25 = level
|
|
436
|
+
local ____temp_23 = parameters and parameters[buffBooleanParameter]
|
|
437
|
+
if ____temp_23 == nil then
|
|
438
|
+
____temp_23 = defaultParameters[buffBooleanParameter]
|
|
411
439
|
end
|
|
412
|
-
if resolveBooleanValue(
|
|
440
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
413
441
|
self[buffBooleanParameter] = true
|
|
414
442
|
end
|
|
415
443
|
end
|
|
@@ -425,11 +453,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
425
453
|
end
|
|
426
454
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
427
455
|
if maximumDuration ~= nil then
|
|
428
|
-
self[
|
|
456
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
429
457
|
end
|
|
430
458
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
431
459
|
if maximumRemainingDuration ~= nil then
|
|
432
|
-
self[
|
|
460
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
433
461
|
end
|
|
434
462
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
435
463
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -487,29 +515,34 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
487
515
|
self._timer = timer
|
|
488
516
|
end
|
|
489
517
|
self:onCreate()
|
|
518
|
+
self[100] = 1
|
|
519
|
+
Event.invoke(buffCreatedEvent, self)
|
|
490
520
|
end
|
|
491
|
-
function Buff.prototype.
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
521
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
522
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
523
|
+
local abilityCooldownModifier = self[144]
|
|
524
|
+
if abilityCooldownModifier then
|
|
525
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
526
|
+
end
|
|
527
|
+
end
|
|
495
528
|
end
|
|
496
|
-
function Buff.prototype.
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
529
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
530
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
531
|
+
local abilityCooldownModifier = self[144]
|
|
532
|
+
if abilityCooldownModifier then
|
|
533
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
534
|
+
end
|
|
501
535
|
end
|
|
502
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
503
536
|
end
|
|
504
537
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
505
538
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
506
|
-
Effect:flash(self[
|
|
539
|
+
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
507
540
|
else
|
|
508
541
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
509
542
|
local ____Effect_40 = Effect
|
|
510
543
|
local ____Effect_flash_41 = Effect.flash
|
|
511
544
|
local ____array_39 = __TS__SparseArrayNew(
|
|
512
|
-
self[
|
|
545
|
+
self[105],
|
|
513
546
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
514
547
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
515
548
|
)
|
|
@@ -531,7 +564,7 @@ function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
|
531
564
|
local ____Effect_44 = Effect
|
|
532
565
|
local ____Effect_flash_45 = Effect.flash
|
|
533
566
|
local ____array_43 = __TS__SparseArrayNew(
|
|
534
|
-
self[
|
|
567
|
+
self[106],
|
|
535
568
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
536
569
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
537
570
|
)
|
|
@@ -550,20 +583,22 @@ end
|
|
|
550
583
|
function Buff.prototype.onCreate(self)
|
|
551
584
|
end
|
|
552
585
|
function Buff.prototype.onDestroy(self)
|
|
586
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
587
|
+
self[100] = 2
|
|
553
588
|
local unit = self._unit
|
|
554
589
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
555
590
|
removeBuff(unit.handle, self.typeId)
|
|
556
591
|
end
|
|
557
592
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
558
|
-
local healingIntervalTimer = self[
|
|
593
|
+
local healingIntervalTimer = self[119]
|
|
559
594
|
if healingIntervalTimer ~= nil then
|
|
560
595
|
healingIntervalTimer:destroy()
|
|
561
|
-
self[
|
|
596
|
+
self[119] = nil
|
|
562
597
|
end
|
|
563
|
-
local damageIntervalTimer = self[
|
|
598
|
+
local damageIntervalTimer = self[114]
|
|
564
599
|
if damageIntervalTimer ~= nil then
|
|
565
600
|
damageIntervalTimer:destroy()
|
|
566
|
-
self[
|
|
601
|
+
self[114] = nil
|
|
567
602
|
end
|
|
568
603
|
if self._timer ~= nil then
|
|
569
604
|
self._timer:destroy()
|
|
@@ -573,25 +608,34 @@ function Buff.prototype.onDestroy(self)
|
|
|
573
608
|
behavior:destroy()
|
|
574
609
|
end
|
|
575
610
|
end
|
|
576
|
-
|
|
611
|
+
local previousAbilityCooldownModifier = self[144]
|
|
612
|
+
if previousAbilityCooldownModifier then
|
|
613
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
614
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
615
|
+
end
|
|
616
|
+
end
|
|
617
|
+
if self[139] then
|
|
618
|
+
unit:decrementInvulnerabilityCounter()
|
|
619
|
+
end
|
|
620
|
+
if self[138] then
|
|
577
621
|
unit:decrementDisableAutoAttackCounter()
|
|
578
622
|
end
|
|
579
|
-
if self[
|
|
580
|
-
if self[
|
|
581
|
-
unit:
|
|
623
|
+
if self[136] then
|
|
624
|
+
if self[137] then
|
|
625
|
+
unit:decrementForceStunCounter()
|
|
582
626
|
end
|
|
583
627
|
unit:decrementStunCounter()
|
|
584
628
|
end
|
|
629
|
+
if self[135] then
|
|
630
|
+
unit:decrementGhostCounter()
|
|
631
|
+
end
|
|
585
632
|
if self._abilityTypeIds ~= nil then
|
|
586
633
|
for abilityTypeId in pairs(self._abilityTypeIds) do
|
|
587
634
|
unit:removeAbility(abilityTypeId)
|
|
588
635
|
end
|
|
589
636
|
end
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
593
|
-
end
|
|
594
|
-
end
|
|
637
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
638
|
+
self[100] = 3
|
|
595
639
|
return UnitBehavior.prototype.onDestroy(self)
|
|
596
640
|
end
|
|
597
641
|
function Buff.apply(self, ...)
|
|
@@ -628,72 +672,72 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
628
672
|
end
|
|
629
673
|
function Buff.prototype.onExpiration(self)
|
|
630
674
|
local unit = self.unit
|
|
631
|
-
if self[119] ~= nil then
|
|
632
|
-
(self[101] or unit):damageTarget(unit, self[119] or 0)
|
|
633
|
-
end
|
|
634
675
|
if self[120] ~= nil then
|
|
635
|
-
(self[
|
|
676
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
636
677
|
end
|
|
637
|
-
if self[
|
|
678
|
+
if self[121] ~= nil then
|
|
679
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
680
|
+
end
|
|
681
|
+
if self[141] then
|
|
638
682
|
unit:explode()
|
|
639
|
-
elseif self[
|
|
683
|
+
elseif self[140] then
|
|
640
684
|
unit:kill()
|
|
641
685
|
end
|
|
642
686
|
end
|
|
643
687
|
function Buff.prototype.onDeath(self, source)
|
|
644
688
|
local unit = self.unit
|
|
645
|
-
if self[
|
|
689
|
+
if self[122] ~= nil then
|
|
646
690
|
damageArea(
|
|
647
|
-
self[
|
|
648
|
-
self[
|
|
691
|
+
self[102] or unit,
|
|
692
|
+
self[122],
|
|
649
693
|
unit.x,
|
|
650
694
|
unit.y,
|
|
695
|
+
self[124] or 0,
|
|
651
696
|
self[123] or 0,
|
|
652
|
-
self[
|
|
697
|
+
self[126] or 0,
|
|
653
698
|
self[125] or 0,
|
|
654
|
-
self[
|
|
655
|
-
self[127] or 0
|
|
656
|
-
self[126] or 0
|
|
699
|
+
self[128] or 0,
|
|
700
|
+
self[127] or 0
|
|
657
701
|
)
|
|
658
702
|
end
|
|
659
703
|
end
|
|
660
704
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
661
705
|
if event.isAttack then
|
|
662
|
-
if self[
|
|
663
|
-
local durationIncrease = self[
|
|
664
|
-
local maximumDuration = self[
|
|
706
|
+
if self[107] ~= nil then
|
|
707
|
+
local durationIncrease = self[107]
|
|
708
|
+
local maximumDuration = self[108] or 0
|
|
665
709
|
if maximumDuration > 0 then
|
|
666
710
|
durationIncrease = min(
|
|
667
711
|
durationIncrease,
|
|
668
|
-
max(0, maximumDuration - self[
|
|
712
|
+
max(0, maximumDuration - self[103])
|
|
669
713
|
)
|
|
670
714
|
end
|
|
671
715
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
672
|
-
local maximumRemainingDuration = self[
|
|
716
|
+
local maximumRemainingDuration = self[109] or 0
|
|
673
717
|
if maximumRemainingDuration > 0 then
|
|
674
718
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
675
719
|
end
|
|
676
720
|
self.remainingDuration = remainingDuration
|
|
677
721
|
end
|
|
678
|
-
local autoAttackCount = (self[
|
|
679
|
-
self[
|
|
680
|
-
if autoAttackCount == self[
|
|
722
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
723
|
+
self[129] = autoAttackCount
|
|
724
|
+
if autoAttackCount == self[130] then
|
|
681
725
|
self:destroy()
|
|
682
726
|
end
|
|
683
727
|
end
|
|
684
728
|
if event.originalAmount ~= 0 then
|
|
685
|
-
local damageDealtEventCount = (self[
|
|
686
|
-
self[
|
|
687
|
-
if damageDealtEventCount == self[
|
|
729
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
730
|
+
self[131] = damageDealtEventCount
|
|
731
|
+
if damageDealtEventCount == self[132] then
|
|
688
732
|
self:destroy()
|
|
689
733
|
end
|
|
690
734
|
end
|
|
691
735
|
end
|
|
692
736
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
693
737
|
if event.originalAmount ~= 0 then
|
|
694
|
-
local damageReceivedEventCount = (self[
|
|
695
|
-
self[
|
|
696
|
-
if damageReceivedEventCount == self[
|
|
738
|
+
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
739
|
+
self[133] = damageReceivedEventCount
|
|
740
|
+
if damageReceivedEventCount == self[134] then
|
|
697
741
|
self:destroy()
|
|
698
742
|
end
|
|
699
743
|
end
|
|
@@ -703,7 +747,7 @@ __TS__SetDescriptor(
|
|
|
703
747
|
Buff.prototype,
|
|
704
748
|
"source",
|
|
705
749
|
{get = function(self)
|
|
706
|
-
return self[
|
|
750
|
+
return self[102] or self._unit
|
|
707
751
|
end},
|
|
708
752
|
true
|
|
709
753
|
)
|
|
@@ -720,13 +764,13 @@ __TS__SetDescriptor(
|
|
|
720
764
|
"remainingDamageOverDuration",
|
|
721
765
|
{
|
|
722
766
|
get = function(self)
|
|
723
|
-
return self[
|
|
767
|
+
return self[113] or 0
|
|
724
768
|
end,
|
|
725
769
|
set = function(self, remainingDamageOverDuration)
|
|
726
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
727
|
-
self[
|
|
728
|
-
local damageOverDuration = (self[
|
|
729
|
-
self[
|
|
770
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[113] or 0)
|
|
771
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
772
|
+
local damageOverDuration = (self[110] or 0) + remainingDamageOverDurationDelta
|
|
773
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
730
774
|
end
|
|
731
775
|
},
|
|
732
776
|
true
|
|
@@ -736,13 +780,13 @@ __TS__SetDescriptor(
|
|
|
736
780
|
"damageOverDuration",
|
|
737
781
|
{
|
|
738
782
|
get = function(self)
|
|
739
|
-
return self[
|
|
783
|
+
return self[110] or 0
|
|
740
784
|
end,
|
|
741
785
|
set = function(self, damageOverDuration)
|
|
742
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
743
|
-
self[
|
|
744
|
-
local remainingDamageOverDuration = (self[
|
|
745
|
-
self[
|
|
786
|
+
local damageOverDurationDelta = damageOverDuration - (self[110] or 0)
|
|
787
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
788
|
+
local remainingDamageOverDuration = (self[113] or 0) + damageOverDurationDelta
|
|
789
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
746
790
|
end
|
|
747
791
|
},
|
|
748
792
|
true
|
|
@@ -752,10 +796,10 @@ __TS__SetDescriptor(
|
|
|
752
796
|
"damagePerInterval",
|
|
753
797
|
{
|
|
754
798
|
get = function(self)
|
|
755
|
-
return self[
|
|
799
|
+
return self[111] or 0
|
|
756
800
|
end,
|
|
757
801
|
set = function(self, damagePerInterval)
|
|
758
|
-
self[
|
|
802
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
759
803
|
end
|
|
760
804
|
},
|
|
761
805
|
true
|
|
@@ -765,25 +809,25 @@ __TS__SetDescriptor(
|
|
|
765
809
|
"damageInterval",
|
|
766
810
|
{
|
|
767
811
|
get = function(self)
|
|
768
|
-
return self[
|
|
812
|
+
return self[112] or 0
|
|
769
813
|
end,
|
|
770
814
|
set = function(self, damageInterval)
|
|
771
815
|
if damageInterval <= 0 then
|
|
772
|
-
self[
|
|
773
|
-
local timer = self[
|
|
816
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
817
|
+
local timer = self[114]
|
|
774
818
|
if timer ~= nil then
|
|
775
819
|
timer:destroy()
|
|
776
|
-
self[
|
|
820
|
+
self[114] = nil
|
|
777
821
|
end
|
|
778
822
|
return
|
|
779
823
|
end
|
|
780
|
-
self[
|
|
824
|
+
self[112] = damageInterval
|
|
781
825
|
local ____opt_48 = self._timer
|
|
782
826
|
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
783
|
-
local timer = self[
|
|
827
|
+
local timer = self[114]
|
|
784
828
|
if timer == nil then
|
|
785
829
|
timer = Timer:create()
|
|
786
|
-
self[
|
|
830
|
+
self[114] = timer
|
|
787
831
|
end
|
|
788
832
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
789
833
|
if initialDelay == damageInterval then
|
|
@@ -800,13 +844,13 @@ __TS__SetDescriptor(
|
|
|
800
844
|
"remainingHealingOverDuration",
|
|
801
845
|
{
|
|
802
846
|
get = function(self)
|
|
803
|
-
return self[
|
|
847
|
+
return self[118] or 0
|
|
804
848
|
end,
|
|
805
849
|
set = function(self, remainingHealingOverDuration)
|
|
806
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
807
|
-
self[
|
|
808
|
-
local healingOverDuration = (self[
|
|
809
|
-
self[
|
|
850
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[118] or 0)
|
|
851
|
+
self[113] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
852
|
+
local healingOverDuration = (self[115] or 0) + remainingHealingOverDurationDelta
|
|
853
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
810
854
|
end
|
|
811
855
|
},
|
|
812
856
|
true
|
|
@@ -816,13 +860,13 @@ __TS__SetDescriptor(
|
|
|
816
860
|
"healingOverDuration",
|
|
817
861
|
{
|
|
818
862
|
get = function(self)
|
|
819
|
-
return self[
|
|
863
|
+
return self[115] or 0
|
|
820
864
|
end,
|
|
821
865
|
set = function(self, healingOverDuration)
|
|
822
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
823
|
-
self[
|
|
824
|
-
local remainingHealingOverDuration = (self[
|
|
825
|
-
self[
|
|
866
|
+
local healingOverDurationDelta = healingOverDuration - (self[115] or 0)
|
|
867
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
868
|
+
local remainingHealingOverDuration = (self[118] or 0) + healingOverDurationDelta
|
|
869
|
+
self[118] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
826
870
|
end
|
|
827
871
|
},
|
|
828
872
|
true
|
|
@@ -832,10 +876,10 @@ __TS__SetDescriptor(
|
|
|
832
876
|
"healingPerInterval",
|
|
833
877
|
{
|
|
834
878
|
get = function(self)
|
|
835
|
-
return self[
|
|
879
|
+
return self[116] or 0
|
|
836
880
|
end,
|
|
837
881
|
set = function(self, healingPerInterval)
|
|
838
|
-
self[
|
|
882
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
839
883
|
end
|
|
840
884
|
},
|
|
841
885
|
true
|
|
@@ -845,25 +889,25 @@ __TS__SetDescriptor(
|
|
|
845
889
|
"healingInterval",
|
|
846
890
|
{
|
|
847
891
|
get = function(self)
|
|
848
|
-
return self[
|
|
892
|
+
return self[117] or 0
|
|
849
893
|
end,
|
|
850
894
|
set = function(self, healingInterval)
|
|
851
895
|
if healingInterval <= 0 then
|
|
852
|
-
self[
|
|
853
|
-
local timer = self[
|
|
896
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
897
|
+
local timer = self[119]
|
|
854
898
|
if timer ~= nil then
|
|
855
899
|
timer:destroy()
|
|
856
|
-
self[
|
|
900
|
+
self[119] = nil
|
|
857
901
|
end
|
|
858
902
|
return
|
|
859
903
|
end
|
|
860
|
-
self[
|
|
904
|
+
self[117] = healingInterval
|
|
861
905
|
local ____opt_50 = self._timer
|
|
862
906
|
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
863
|
-
local timer = self[
|
|
907
|
+
local timer = self[119]
|
|
864
908
|
if timer == nil then
|
|
865
909
|
timer = Timer:create()
|
|
866
|
-
self[
|
|
910
|
+
self[119] = timer
|
|
867
911
|
end
|
|
868
912
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
869
913
|
if initialDelay == healingInterval then
|
|
@@ -880,10 +924,10 @@ __TS__SetDescriptor(
|
|
|
880
924
|
"damageOnExpiration",
|
|
881
925
|
{
|
|
882
926
|
get = function(self)
|
|
883
|
-
return self[
|
|
927
|
+
return self[120] or 0
|
|
884
928
|
end,
|
|
885
929
|
set = function(self, damageOnExpiration)
|
|
886
|
-
self[
|
|
930
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
887
931
|
end
|
|
888
932
|
},
|
|
889
933
|
true
|
|
@@ -893,10 +937,10 @@ __TS__SetDescriptor(
|
|
|
893
937
|
"healingOnExpiration",
|
|
894
938
|
{
|
|
895
939
|
get = function(self)
|
|
896
|
-
return self[
|
|
940
|
+
return self[121] or 0
|
|
897
941
|
end,
|
|
898
942
|
set = function(self, healingOnExpiration)
|
|
899
|
-
self[
|
|
943
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
900
944
|
end
|
|
901
945
|
},
|
|
902
946
|
true
|
|
@@ -940,30 +984,53 @@ __TS__SetDescriptor(
|
|
|
940
984
|
},
|
|
941
985
|
true
|
|
942
986
|
)
|
|
987
|
+
__TS__SetDescriptor(
|
|
988
|
+
Buff.prototype,
|
|
989
|
+
"turnsIntoGhost",
|
|
990
|
+
{
|
|
991
|
+
get = function(self)
|
|
992
|
+
local ____self__135_52 = self[135]
|
|
993
|
+
if ____self__135_52 == nil then
|
|
994
|
+
____self__135_52 = false
|
|
995
|
+
end
|
|
996
|
+
return ____self__135_52
|
|
997
|
+
end,
|
|
998
|
+
set = function(self, turnsIntoGhost)
|
|
999
|
+
if not turnsIntoGhost and self[135] then
|
|
1000
|
+
self.object:decrementGhostCounter()
|
|
1001
|
+
self[135] = nil
|
|
1002
|
+
elseif turnsIntoGhost and not self[135] then
|
|
1003
|
+
self.object:incrementGhostCounter()
|
|
1004
|
+
self[135] = true
|
|
1005
|
+
end
|
|
1006
|
+
end
|
|
1007
|
+
},
|
|
1008
|
+
true
|
|
1009
|
+
)
|
|
943
1010
|
__TS__SetDescriptor(
|
|
944
1011
|
Buff.prototype,
|
|
945
1012
|
"stuns",
|
|
946
1013
|
{
|
|
947
1014
|
get = function(self)
|
|
948
|
-
local
|
|
949
|
-
if
|
|
950
|
-
|
|
1015
|
+
local ____self__136_53 = self[136]
|
|
1016
|
+
if ____self__136_53 == nil then
|
|
1017
|
+
____self__136_53 = false
|
|
951
1018
|
end
|
|
952
|
-
return
|
|
1019
|
+
return ____self__136_53
|
|
953
1020
|
end,
|
|
954
1021
|
set = function(self, stuns)
|
|
955
|
-
if not stuns and self[
|
|
956
|
-
if self[
|
|
957
|
-
self.object:
|
|
1022
|
+
if not stuns and self[136] then
|
|
1023
|
+
if self[137] then
|
|
1024
|
+
self.object:decrementForceStunCounter()
|
|
958
1025
|
end
|
|
959
1026
|
self.object:decrementStunCounter()
|
|
960
|
-
self[
|
|
961
|
-
elseif stuns and not self[
|
|
962
|
-
if self[
|
|
963
|
-
self.object:
|
|
1027
|
+
self[136] = nil
|
|
1028
|
+
elseif stuns and not self[136] then
|
|
1029
|
+
if self[137] then
|
|
1030
|
+
self.object:incrementForceStunCounter()
|
|
964
1031
|
end
|
|
965
1032
|
self.object:incrementStunCounter()
|
|
966
|
-
self[
|
|
1033
|
+
self[136] = true
|
|
967
1034
|
end
|
|
968
1035
|
end
|
|
969
1036
|
},
|
|
@@ -974,23 +1041,23 @@ __TS__SetDescriptor(
|
|
|
974
1041
|
"ignoresStunImmunity",
|
|
975
1042
|
{
|
|
976
1043
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
1044
|
+
local ____self__137_54 = self[137]
|
|
1045
|
+
if ____self__137_54 == nil then
|
|
1046
|
+
____self__137_54 = false
|
|
980
1047
|
end
|
|
981
|
-
return
|
|
1048
|
+
return ____self__137_54
|
|
982
1049
|
end,
|
|
983
1050
|
set = function(self, ignoresStunImmunity)
|
|
984
|
-
if not ignoresStunImmunity and self[
|
|
985
|
-
if self[
|
|
986
|
-
self.object:
|
|
1051
|
+
if not ignoresStunImmunity and self[137] then
|
|
1052
|
+
if self[136] then
|
|
1053
|
+
self.object:decrementForceStunCounter()
|
|
987
1054
|
end
|
|
988
|
-
self[
|
|
989
|
-
elseif ignoresStunImmunity and not self[
|
|
990
|
-
if self[
|
|
991
|
-
self.object:
|
|
1055
|
+
self[137] = nil
|
|
1056
|
+
elseif ignoresStunImmunity and not self[137] then
|
|
1057
|
+
if self[136] then
|
|
1058
|
+
self.object:incrementForceStunCounter()
|
|
992
1059
|
end
|
|
993
|
-
self[
|
|
1060
|
+
self[137] = true
|
|
994
1061
|
end
|
|
995
1062
|
end
|
|
996
1063
|
},
|
|
@@ -1001,19 +1068,19 @@ __TS__SetDescriptor(
|
|
|
1001
1068
|
"disablesAutoAttack",
|
|
1002
1069
|
{
|
|
1003
1070
|
get = function(self)
|
|
1004
|
-
local
|
|
1005
|
-
if
|
|
1006
|
-
|
|
1071
|
+
local ____self__138_55 = self[138]
|
|
1072
|
+
if ____self__138_55 == nil then
|
|
1073
|
+
____self__138_55 = false
|
|
1007
1074
|
end
|
|
1008
|
-
return
|
|
1075
|
+
return ____self__138_55
|
|
1009
1076
|
end,
|
|
1010
1077
|
set = function(self, disablesAutoAttack)
|
|
1011
|
-
if not disablesAutoAttack and self[
|
|
1078
|
+
if not disablesAutoAttack and self[138] then
|
|
1012
1079
|
self.object:decrementDisableAutoAttackCounter()
|
|
1013
|
-
self[
|
|
1014
|
-
elseif disablesAutoAttack and not self[
|
|
1080
|
+
self[138] = nil
|
|
1081
|
+
elseif disablesAutoAttack and not self[138] then
|
|
1015
1082
|
self.object:incrementDisableAutoAttackCounter()
|
|
1016
|
-
self[
|
|
1083
|
+
self[138] = true
|
|
1017
1084
|
end
|
|
1018
1085
|
end
|
|
1019
1086
|
},
|
|
@@ -1024,19 +1091,19 @@ __TS__SetDescriptor(
|
|
|
1024
1091
|
"providesInvulnerability",
|
|
1025
1092
|
{
|
|
1026
1093
|
get = function(self)
|
|
1027
|
-
local
|
|
1028
|
-
if
|
|
1029
|
-
|
|
1094
|
+
local ____self__139_56 = self[139]
|
|
1095
|
+
if ____self__139_56 == nil then
|
|
1096
|
+
____self__139_56 = false
|
|
1030
1097
|
end
|
|
1031
|
-
return
|
|
1098
|
+
return ____self__139_56
|
|
1032
1099
|
end,
|
|
1033
1100
|
set = function(self, providesInvulnerability)
|
|
1034
|
-
if not providesInvulnerability and self[
|
|
1101
|
+
if not providesInvulnerability and self[139] then
|
|
1035
1102
|
self.object:decrementInvulnerabilityCounter()
|
|
1036
|
-
self[
|
|
1037
|
-
elseif providesInvulnerability and not self[
|
|
1103
|
+
self[139] = nil
|
|
1104
|
+
elseif providesInvulnerability and not self[139] then
|
|
1038
1105
|
self.object:incrementInvulnerabilityCounter()
|
|
1039
|
-
self[
|
|
1106
|
+
self[139] = true
|
|
1040
1107
|
end
|
|
1041
1108
|
end
|
|
1042
1109
|
},
|
|
@@ -1047,17 +1114,17 @@ __TS__SetDescriptor(
|
|
|
1047
1114
|
"killsOnExpiration",
|
|
1048
1115
|
{
|
|
1049
1116
|
get = function(self)
|
|
1050
|
-
local
|
|
1051
|
-
if
|
|
1052
|
-
|
|
1117
|
+
local ____self__140_57 = self[140]
|
|
1118
|
+
if ____self__140_57 == nil then
|
|
1119
|
+
____self__140_57 = false
|
|
1053
1120
|
end
|
|
1054
|
-
return
|
|
1121
|
+
return ____self__140_57
|
|
1055
1122
|
end,
|
|
1056
1123
|
set = function(self, killsOnExpiration)
|
|
1057
|
-
if not killsOnExpiration and self[
|
|
1058
|
-
self[
|
|
1059
|
-
elseif killsOnExpiration and not self[
|
|
1060
|
-
self[
|
|
1124
|
+
if not killsOnExpiration and self[140] then
|
|
1125
|
+
self[140] = nil
|
|
1126
|
+
elseif killsOnExpiration and not self[140] then
|
|
1127
|
+
self[140] = true
|
|
1061
1128
|
end
|
|
1062
1129
|
end
|
|
1063
1130
|
},
|
|
@@ -1068,17 +1135,17 @@ __TS__SetDescriptor(
|
|
|
1068
1135
|
"explodesOnExpiration",
|
|
1069
1136
|
{
|
|
1070
1137
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1138
|
+
local ____self__141_58 = self[141]
|
|
1139
|
+
if ____self__141_58 == nil then
|
|
1140
|
+
____self__141_58 = false
|
|
1074
1141
|
end
|
|
1075
|
-
return
|
|
1142
|
+
return ____self__141_58
|
|
1076
1143
|
end,
|
|
1077
1144
|
set = function(self, killsOnExpiration)
|
|
1078
|
-
if not killsOnExpiration and self[
|
|
1079
|
-
self[
|
|
1080
|
-
elseif killsOnExpiration and not self[
|
|
1081
|
-
self[
|
|
1145
|
+
if not killsOnExpiration and self[141] then
|
|
1146
|
+
self[141] = nil
|
|
1147
|
+
elseif killsOnExpiration and not self[141] then
|
|
1148
|
+
self[141] = true
|
|
1082
1149
|
end
|
|
1083
1150
|
end
|
|
1084
1151
|
},
|
|
@@ -1089,13 +1156,13 @@ __TS__SetDescriptor(
|
|
|
1089
1156
|
"maximumDamageDealtEventCount",
|
|
1090
1157
|
{
|
|
1091
1158
|
get = function(self)
|
|
1092
|
-
return self[
|
|
1159
|
+
return self[132] or 0
|
|
1093
1160
|
end,
|
|
1094
1161
|
set = function(self, maximumDamageDealtEventCount)
|
|
1095
1162
|
if maximumDamageDealtEventCount == 0 then
|
|
1096
|
-
self[
|
|
1163
|
+
self[132] = nil
|
|
1097
1164
|
else
|
|
1098
|
-
self[
|
|
1165
|
+
self[132] = maximumDamageDealtEventCount
|
|
1099
1166
|
end
|
|
1100
1167
|
end
|
|
1101
1168
|
},
|
|
@@ -1106,13 +1173,13 @@ __TS__SetDescriptor(
|
|
|
1106
1173
|
"maximumDamageReceivedEventCount",
|
|
1107
1174
|
{
|
|
1108
1175
|
get = function(self)
|
|
1109
|
-
return self[
|
|
1176
|
+
return self[134] or 0
|
|
1110
1177
|
end,
|
|
1111
1178
|
set = function(self, maximumDamageReceivedEventCount)
|
|
1112
1179
|
if maximumDamageReceivedEventCount == 0 then
|
|
1113
|
-
self[
|
|
1180
|
+
self[134] = nil
|
|
1114
1181
|
else
|
|
1115
|
-
self[
|
|
1182
|
+
self[134] = maximumDamageReceivedEventCount
|
|
1116
1183
|
end
|
|
1117
1184
|
end
|
|
1118
1185
|
},
|
|
@@ -1123,13 +1190,13 @@ __TS__SetDescriptor(
|
|
|
1123
1190
|
"maximumAutoAttackCount",
|
|
1124
1191
|
{
|
|
1125
1192
|
get = function(self)
|
|
1126
|
-
return self[
|
|
1193
|
+
return self[130] or 0
|
|
1127
1194
|
end,
|
|
1128
1195
|
set = function(self, maximumAutoAttackCount)
|
|
1129
1196
|
if maximumAutoAttackCount == 0 then
|
|
1130
|
-
self[
|
|
1197
|
+
self[130] = nil
|
|
1131
1198
|
else
|
|
1132
|
-
self[
|
|
1199
|
+
self[130] = maximumAutoAttackCount
|
|
1133
1200
|
end
|
|
1134
1201
|
end
|
|
1135
1202
|
},
|
|
@@ -1140,10 +1207,10 @@ __TS__SetDescriptor(
|
|
|
1140
1207
|
"durationIncreaseOnAutoAttack",
|
|
1141
1208
|
{
|
|
1142
1209
|
get = function(self)
|
|
1143
|
-
return self[
|
|
1210
|
+
return self[107] or 0
|
|
1144
1211
|
end,
|
|
1145
1212
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1146
|
-
self[
|
|
1213
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
1147
1214
|
end
|
|
1148
1215
|
},
|
|
1149
1216
|
true
|
|
@@ -1174,11 +1241,24 @@ __TS__SetDescriptor(
|
|
|
1174
1241
|
},
|
|
1175
1242
|
true
|
|
1176
1243
|
)
|
|
1244
|
+
__TS__SetDescriptor(
|
|
1245
|
+
Buff.prototype,
|
|
1246
|
+
"evasionProbability",
|
|
1247
|
+
{
|
|
1248
|
+
get = function(self)
|
|
1249
|
+
return self:getUnitBonus(UnitBonusType.EVASION_PROBABILITY)
|
|
1250
|
+
end,
|
|
1251
|
+
set = function(self, evasionProbability)
|
|
1252
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.EVASION_PROBABILITY, evasionProbability)
|
|
1253
|
+
end
|
|
1254
|
+
},
|
|
1255
|
+
true
|
|
1256
|
+
)
|
|
1177
1257
|
__TS__SetDescriptor(
|
|
1178
1258
|
Buff.prototype,
|
|
1179
1259
|
"duration",
|
|
1180
1260
|
{get = function(self)
|
|
1181
|
-
return self[
|
|
1261
|
+
return self[103]
|
|
1182
1262
|
end},
|
|
1183
1263
|
true
|
|
1184
1264
|
)
|
|
@@ -1187,15 +1267,15 @@ __TS__SetDescriptor(
|
|
|
1187
1267
|
"remainingDuration",
|
|
1188
1268
|
{
|
|
1189
1269
|
get = function(self)
|
|
1190
|
-
local
|
|
1191
|
-
return
|
|
1270
|
+
local ____opt_59 = self._timer
|
|
1271
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1192
1272
|
end,
|
|
1193
1273
|
set = function(self, remainingDuration)
|
|
1194
|
-
local
|
|
1195
|
-
local
|
|
1196
|
-
local remainingDurationDelta =
|
|
1274
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1275
|
+
local ____opt_61 = self._timer
|
|
1276
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1197
1277
|
if remainingDurationDelta ~= 0 then
|
|
1198
|
-
self[
|
|
1278
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1199
1279
|
if remainingDuration <= 0 then
|
|
1200
1280
|
Timer:run(destroyBuff, self)
|
|
1201
1281
|
else
|
|
@@ -1207,7 +1287,8 @@ __TS__SetDescriptor(
|
|
|
1207
1287
|
self._level,
|
|
1208
1288
|
remainingDuration,
|
|
1209
1289
|
self._spellStealPriority,
|
|
1210
|
-
self._learnLevelMinimum
|
|
1290
|
+
self._learnLevelMinimum,
|
|
1291
|
+
self[142]
|
|
1211
1292
|
) then
|
|
1212
1293
|
local timer = self._timer
|
|
1213
1294
|
if timer == nil then
|
|
@@ -1221,10 +1302,38 @@ __TS__SetDescriptor(
|
|
|
1221
1302
|
end
|
|
1222
1303
|
},
|
|
1223
1304
|
true
|
|
1224
|
-
)
|
|
1305
|
+
)
|
|
1306
|
+
__TS__SetDescriptor(
|
|
1307
|
+
Buff.prototype,
|
|
1308
|
+
"abilityCooldownFactor",
|
|
1309
|
+
{
|
|
1310
|
+
get = function(self)
|
|
1311
|
+
return self[143] or 1
|
|
1312
|
+
end,
|
|
1313
|
+
set = function(self, abilityCooldownFactor)
|
|
1314
|
+
local previousAbilityCooldownModifier = self[144]
|
|
1315
|
+
if previousAbilityCooldownModifier then
|
|
1316
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1317
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1318
|
+
end
|
|
1319
|
+
end
|
|
1320
|
+
local function modifier(ability, level, cooldown)
|
|
1321
|
+
return cooldown * abilityCooldownFactor
|
|
1322
|
+
end
|
|
1323
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1324
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1325
|
+
end
|
|
1326
|
+
self[144] = modifier
|
|
1327
|
+
self[143] = abilityCooldownFactor
|
|
1328
|
+
end
|
|
1329
|
+
},
|
|
1330
|
+
true
|
|
1331
|
+
)
|
|
1332
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1333
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1225
1334
|
(function(self)
|
|
1226
1335
|
local function destroyBuffIfNeeded(buff)
|
|
1227
|
-
if getUnitAbility(buff[
|
|
1336
|
+
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
1228
1337
|
buff:destroy()
|
|
1229
1338
|
end
|
|
1230
1339
|
end
|
|
@@ -1275,5 +1384,11 @@ __TS__SetDescriptor(
|
|
|
1275
1384
|
____exports.checkBuffs(target)
|
|
1276
1385
|
end
|
|
1277
1386
|
)
|
|
1387
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1388
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1389
|
+
end)
|
|
1390
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1391
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1392
|
+
end)
|
|
1278
1393
|
end)(Buff)
|
|
1279
1394
|
return ____exports
|