warscript 0.0.1-dev.8bfb72f → 0.0.1-dev.8dbb0ee
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 +15 -0
- package/core/types/player.lua +56 -14
- 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 +9 -0
- package/core/types/tileCell.lua +92 -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/engine/behavior.d.ts +5 -0
- package/engine/behavior.lua +106 -27
- package/engine/behaviour/ability/apply-buff.lua +1 -1
- 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 +18 -3
- 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 +5 -1
- package/engine/behaviour/ability.lua +26 -21
- package/engine/behaviour/unit/stun-immunity.d.ts +7 -3
- package/engine/behaviour/unit/stun-immunity.lua +52 -27
- package/engine/behaviour/unit.d.ts +34 -0
- package/engine/behaviour/unit.lua +190 -4
- package/engine/buff.d.ts +53 -45
- package/engine/buff.lua +260 -228
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +49 -9
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +18 -17
- package/engine/internal/item.lua +160 -51
- 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/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- 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+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 +42 -14
- package/engine/internal/unit.d.ts +42 -13
- package/engine/internal/unit.lua +331 -138
- package/engine/lightning.d.ts +4 -3
- package/engine/lightning.lua +21 -12
- 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 +85 -24
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.lua +4 -4
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +21 -5
- package/engine/object-data/entry/unit-type.lua +214 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +57 -3
- package/engine/object-field/unit.lua +207 -7
- package/engine/object-field.d.ts +17 -6
- package/engine/object-field.lua +188 -92
- 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/unit.d.ts +4 -0
- package/engine/standard/fields/unit.lua +7 -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 +249 -10
- package/engine/unit.d.ts +1 -0
- package/engine/unit.lua +1 -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
|
@@ -28,13 +28,11 @@ local ____math = require("math")
|
|
|
28
28
|
local max = ____math.max
|
|
29
29
|
local min = ____math.min
|
|
30
30
|
local ____bonus = require("engine.internal.unit.bonus")
|
|
31
|
-
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
32
|
-
local getUnitBonus = ____bonus.getUnitBonus
|
|
33
|
-
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
34
31
|
local UnitBonusType = ____bonus.UnitBonusType
|
|
35
32
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
33
|
local damageArea = ____area_2Ddamage.damageArea
|
|
37
34
|
local ____preconditions = require("utility.preconditions")
|
|
35
|
+
local check = ____preconditions.check
|
|
38
36
|
local checkNotNull = ____preconditions.checkNotNull
|
|
39
37
|
local ____effect = require("core.types.effect")
|
|
40
38
|
local Effect = ____effect.Effect
|
|
@@ -101,12 +99,14 @@ local buffParametersKeys = {
|
|
|
101
99
|
attackSpeedIncreaseFactor = true,
|
|
102
100
|
movementSpeedIncreaseFactor = true,
|
|
103
101
|
evasionProbability = true,
|
|
102
|
+
missProbability = true,
|
|
104
103
|
damageFactor = true,
|
|
105
104
|
receivedDamageFactor = true,
|
|
106
105
|
receivedMagicDamageFactor = true,
|
|
107
106
|
durationIncreaseOnAutoAttack = true,
|
|
108
107
|
maximumDuration = true,
|
|
109
108
|
maximumRemainingDuration = true,
|
|
109
|
+
turnsIntoGhost = true,
|
|
110
110
|
stuns = true,
|
|
111
111
|
ignoresStunImmunity = true,
|
|
112
112
|
providesStunImmunity = true,
|
|
@@ -172,6 +172,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
172
172
|
end
|
|
173
173
|
end
|
|
174
174
|
local buffBooleanParameters = {
|
|
175
|
+
"turnsIntoGhost",
|
|
175
176
|
"stuns",
|
|
176
177
|
"ignoresStunImmunity",
|
|
177
178
|
"disablesAutoAttack",
|
|
@@ -224,7 +225,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
224
225
|
return checkNotNull(firstNativeBuffTypeId)
|
|
225
226
|
end
|
|
226
227
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
227
|
-
if buff[
|
|
228
|
+
if buff[104] == uniqueGroup then
|
|
228
229
|
buff:destroy()
|
|
229
230
|
end
|
|
230
231
|
end
|
|
@@ -232,17 +233,17 @@ local function destroyBuff(buff)
|
|
|
232
233
|
buff:destroy()
|
|
233
234
|
end
|
|
234
235
|
local function expireBuff(buff)
|
|
235
|
-
local remainingDamageOverDuration = buff[
|
|
236
|
-
local remainingHealingOverDuration = buff[
|
|
236
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
237
|
+
local remainingHealingOverDuration = buff[113] or 0
|
|
237
238
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
238
239
|
buff:flashSpecialEffect()
|
|
239
240
|
if remainingDamageOverDuration ~= 0 then
|
|
240
|
-
(buff[
|
|
241
|
-
buff[
|
|
241
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
242
|
+
buff[113] = nil
|
|
242
243
|
end
|
|
243
244
|
if remainingHealingOverDuration ~= 0 then
|
|
244
|
-
(buff[
|
|
245
|
-
buff[
|
|
245
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
246
|
+
buff[118] = nil
|
|
246
247
|
end
|
|
247
248
|
end
|
|
248
249
|
Timer:run(destroyBuff, buff)
|
|
@@ -250,57 +251,58 @@ local function expireBuff(buff)
|
|
|
250
251
|
end
|
|
251
252
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
252
253
|
buffDamageIntervalTimerCallback(buff)
|
|
253
|
-
local timer = buff[
|
|
254
|
-
local damageInterval = buff[
|
|
254
|
+
local timer = buff[114]
|
|
255
|
+
local damageInterval = buff[112]
|
|
255
256
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
256
257
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
257
258
|
end
|
|
258
259
|
end
|
|
259
260
|
buffDamageIntervalTimerCallback = function(buff)
|
|
260
261
|
buff:flashSpecialEffect()
|
|
261
|
-
local source = buff[
|
|
262
|
-
local remainingDamageOverDuration = buff[
|
|
262
|
+
local source = buff[102] or buff[101]
|
|
263
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
263
264
|
if remainingDamageOverDuration ~= 0 then
|
|
264
|
-
local damageInterval = buff[
|
|
265
|
+
local damageInterval = buff[112] or 0
|
|
265
266
|
if damageInterval ~= 0 then
|
|
266
267
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
267
|
-
source:damageTarget(buff[
|
|
268
|
-
buff[
|
|
268
|
+
source:damageTarget(buff[101], damage)
|
|
269
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
269
270
|
end
|
|
270
271
|
end
|
|
271
|
-
local damagePerInterval = buff[
|
|
272
|
+
local damagePerInterval = buff[111] or 0
|
|
272
273
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
273
|
-
source:damageTarget(buff[
|
|
274
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
274
275
|
end
|
|
275
276
|
end
|
|
276
277
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
277
278
|
buffHealingIntervalTimerCallback(buff)
|
|
278
|
-
local timer = buff[
|
|
279
|
-
local healingInterval = buff[
|
|
279
|
+
local timer = buff[119]
|
|
280
|
+
local healingInterval = buff[117]
|
|
280
281
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
281
282
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
282
283
|
end
|
|
283
284
|
end
|
|
284
285
|
buffHealingIntervalTimerCallback = function(buff)
|
|
285
|
-
if buff[
|
|
286
|
+
if buff[117] ~= buff[112] then
|
|
286
287
|
buff:flashSpecialEffect()
|
|
287
288
|
end
|
|
288
|
-
local source = buff[
|
|
289
|
-
local remainingHealingOverDuration = buff[
|
|
289
|
+
local source = buff[102] or buff[101]
|
|
290
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
290
291
|
if remainingHealingOverDuration ~= 0 then
|
|
291
|
-
local healingInterval = buff[
|
|
292
|
+
local healingInterval = buff[117] or 0
|
|
292
293
|
if healingInterval ~= 0 then
|
|
293
294
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
294
|
-
source:healTarget(buff[
|
|
295
|
-
buff[
|
|
295
|
+
source:healTarget(buff[101], healing)
|
|
296
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
296
297
|
end
|
|
297
298
|
end
|
|
298
|
-
local healingPerInterval = buff[
|
|
299
|
+
local healingPerInterval = buff[116] or 0
|
|
299
300
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
300
|
-
source:healTarget(buff[
|
|
301
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
301
302
|
end
|
|
302
303
|
end
|
|
303
|
-
local
|
|
304
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
305
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
304
306
|
____exports.Buff = __TS__Class()
|
|
305
307
|
local Buff = ____exports.Buff
|
|
306
308
|
Buff.name = "Buff"
|
|
@@ -309,7 +311,8 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
309
311
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
310
312
|
self._unit = _unit
|
|
311
313
|
self.parameters = nil
|
|
312
|
-
self[100] =
|
|
314
|
+
self[100] = 0
|
|
315
|
+
self[101] = _unit
|
|
313
316
|
local typeId
|
|
314
317
|
local polarity
|
|
315
318
|
local resistanceType
|
|
@@ -318,7 +321,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
318
321
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
319
322
|
polarity = resistanceTypeOrPolarity
|
|
320
323
|
resistanceType = abilityOrParametersOrResistanceType
|
|
321
|
-
if __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
324
|
+
if __TS__InstanceOf(parametersOrAbility, Ability) or parametersOrAbility == nil then
|
|
322
325
|
ability = parametersOrAbility
|
|
323
326
|
else
|
|
324
327
|
ability = nil
|
|
@@ -328,7 +331,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
328
331
|
typeId = typeIdOrTypeIds
|
|
329
332
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
330
333
|
resistanceType = resistanceTypeOrPolarity
|
|
331
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
334
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) or abilityOrParametersOrResistanceType == nil then
|
|
332
335
|
ability = abilityOrParametersOrResistanceType
|
|
333
336
|
parameters = parametersOrAbility
|
|
334
337
|
else
|
|
@@ -337,7 +340,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
337
340
|
end
|
|
338
341
|
end
|
|
339
342
|
self.typeId = typeId
|
|
340
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
343
|
+
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
341
344
|
parameters = ability
|
|
342
345
|
ability = nil
|
|
343
346
|
end
|
|
@@ -365,14 +368,19 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
365
368
|
end
|
|
366
369
|
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
367
370
|
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
371
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
372
|
+
if missProbability ~= nil then
|
|
373
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
374
|
+
self[142] = missProbability
|
|
375
|
+
end
|
|
368
376
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
369
377
|
if buffByTypeId == nil then
|
|
370
378
|
buffByTypeId = {}
|
|
371
379
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
372
380
|
end
|
|
373
|
-
local
|
|
374
|
-
if
|
|
375
|
-
|
|
381
|
+
local ____opt_15 = buffByTypeId[typeId]
|
|
382
|
+
if ____opt_15 ~= nil then
|
|
383
|
+
____opt_15:destroy()
|
|
376
384
|
end
|
|
377
385
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
378
386
|
if uniqueGroup ~= nil then
|
|
@@ -386,13 +394,16 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
386
394
|
level,
|
|
387
395
|
duration,
|
|
388
396
|
spellStealPriority,
|
|
389
|
-
learnLevelMinimum
|
|
397
|
+
learnLevelMinimum,
|
|
398
|
+
missProbability
|
|
390
399
|
) then
|
|
400
|
+
self[100] = 1
|
|
391
401
|
UnitBehavior.prototype.destroy(self)
|
|
392
402
|
error(unsuccessfulApplicationMarker, 0)
|
|
393
403
|
end
|
|
394
404
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
395
405
|
if handle == nil then
|
|
406
|
+
self[100] = 1
|
|
396
407
|
UnitBehavior.prototype.destroy(self)
|
|
397
408
|
error(unsuccessfulApplicationMarker, 0)
|
|
398
409
|
end
|
|
@@ -401,20 +412,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
401
412
|
self._level = level
|
|
402
413
|
self._spellStealPriority = spellStealPriority
|
|
403
414
|
self._learnLevelMinimum = learnLevelMinimum
|
|
404
|
-
self[
|
|
405
|
-
self[
|
|
406
|
-
self[
|
|
407
|
-
self[
|
|
408
|
-
self[
|
|
415
|
+
self[102] = source
|
|
416
|
+
self[103] = duration or 0
|
|
417
|
+
self[104] = uniqueGroup
|
|
418
|
+
self[105] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
419
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
409
420
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
410
421
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
411
|
-
local
|
|
412
|
-
local
|
|
413
|
-
local
|
|
414
|
-
if
|
|
415
|
-
|
|
422
|
+
local ____ability_24 = ability
|
|
423
|
+
local ____level_25 = level
|
|
424
|
+
local ____temp_23 = parameters and parameters[buffBooleanParameter]
|
|
425
|
+
if ____temp_23 == nil then
|
|
426
|
+
____temp_23 = defaultParameters[buffBooleanParameter]
|
|
416
427
|
end
|
|
417
|
-
if resolveBooleanValue(
|
|
428
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
418
429
|
self[buffBooleanParameter] = true
|
|
419
430
|
end
|
|
420
431
|
end
|
|
@@ -430,11 +441,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
430
441
|
end
|
|
431
442
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
432
443
|
if maximumDuration ~= nil then
|
|
433
|
-
self[
|
|
444
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
434
445
|
end
|
|
435
446
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
436
447
|
if maximumRemainingDuration ~= nil then
|
|
437
|
-
self[
|
|
448
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
438
449
|
end
|
|
439
450
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
440
451
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -492,29 +503,18 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
492
503
|
self._timer = timer
|
|
493
504
|
end
|
|
494
505
|
self:onCreate()
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
local ____opt_36 = self._bonusIdByBonusType
|
|
498
|
-
local bonusId = ____opt_36 and ____opt_36[bonusType]
|
|
499
|
-
return bonusId == nil and 0 or getUnitBonus(self._unit, bonusType, bonusId)
|
|
500
|
-
end
|
|
501
|
-
function Buff.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
|
|
502
|
-
local bonusIdByBonusType = self._bonusIdByBonusType
|
|
503
|
-
if bonusIdByBonusType == nil then
|
|
504
|
-
bonusIdByBonusType = {}
|
|
505
|
-
self._bonusIdByBonusType = bonusIdByBonusType
|
|
506
|
-
end
|
|
507
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
506
|
+
self[100] = 1
|
|
507
|
+
Event.invoke(buffCreatedEvent, self)
|
|
508
508
|
end
|
|
509
509
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
510
510
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
511
|
-
Effect:flash(self[
|
|
511
|
+
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
512
512
|
else
|
|
513
513
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
514
514
|
local ____Effect_40 = Effect
|
|
515
515
|
local ____Effect_flash_41 = Effect.flash
|
|
516
516
|
local ____array_39 = __TS__SparseArrayNew(
|
|
517
|
-
self[
|
|
517
|
+
self[105],
|
|
518
518
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
519
519
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
520
520
|
)
|
|
@@ -536,7 +536,7 @@ function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
|
536
536
|
local ____Effect_44 = Effect
|
|
537
537
|
local ____Effect_flash_45 = Effect.flash
|
|
538
538
|
local ____array_43 = __TS__SparseArrayNew(
|
|
539
|
-
self[
|
|
539
|
+
self[106],
|
|
540
540
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
541
541
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
542
542
|
)
|
|
@@ -555,20 +555,22 @@ end
|
|
|
555
555
|
function Buff.prototype.onCreate(self)
|
|
556
556
|
end
|
|
557
557
|
function Buff.prototype.onDestroy(self)
|
|
558
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
559
|
+
self[100] = 2
|
|
558
560
|
local unit = self._unit
|
|
559
561
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
560
562
|
removeBuff(unit.handle, self.typeId)
|
|
561
563
|
end
|
|
562
564
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
563
|
-
local healingIntervalTimer = self[
|
|
565
|
+
local healingIntervalTimer = self[119]
|
|
564
566
|
if healingIntervalTimer ~= nil then
|
|
565
567
|
healingIntervalTimer:destroy()
|
|
566
|
-
self[
|
|
568
|
+
self[119] = nil
|
|
567
569
|
end
|
|
568
|
-
local damageIntervalTimer = self[
|
|
570
|
+
local damageIntervalTimer = self[114]
|
|
569
571
|
if damageIntervalTimer ~= nil then
|
|
570
572
|
damageIntervalTimer:destroy()
|
|
571
|
-
self[
|
|
573
|
+
self[114] = nil
|
|
572
574
|
end
|
|
573
575
|
if self._timer ~= nil then
|
|
574
576
|
self._timer:destroy()
|
|
@@ -578,26 +580,28 @@ function Buff.prototype.onDestroy(self)
|
|
|
578
580
|
behavior:destroy()
|
|
579
581
|
end
|
|
580
582
|
end
|
|
581
|
-
if self[
|
|
583
|
+
if self[139] then
|
|
584
|
+
unit:decrementInvulnerabilityCounter()
|
|
585
|
+
end
|
|
586
|
+
if self[138] then
|
|
582
587
|
unit:decrementDisableAutoAttackCounter()
|
|
583
588
|
end
|
|
584
|
-
if self[
|
|
585
|
-
if self[
|
|
586
|
-
unit:
|
|
589
|
+
if self[136] then
|
|
590
|
+
if self[137] then
|
|
591
|
+
unit:decrementForceStunCounter()
|
|
587
592
|
end
|
|
588
593
|
unit:decrementStunCounter()
|
|
589
594
|
end
|
|
595
|
+
if self[135] then
|
|
596
|
+
unit:decrementGhostCounter()
|
|
597
|
+
end
|
|
590
598
|
if self._abilityTypeIds ~= nil then
|
|
591
599
|
for abilityTypeId in pairs(self._abilityTypeIds) do
|
|
592
600
|
unit:removeAbility(abilityTypeId)
|
|
593
601
|
end
|
|
594
602
|
end
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
598
|
-
end
|
|
599
|
-
end
|
|
600
|
-
Event.invoke(buffDestroyEvent, self)
|
|
603
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
604
|
+
self[100] = 3
|
|
601
605
|
return UnitBehavior.prototype.onDestroy(self)
|
|
602
606
|
end
|
|
603
607
|
function Buff.apply(self, ...)
|
|
@@ -634,72 +638,72 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
634
638
|
end
|
|
635
639
|
function Buff.prototype.onExpiration(self)
|
|
636
640
|
local unit = self.unit
|
|
637
|
-
if self[119] ~= nil then
|
|
638
|
-
(self[101] or unit):damageTarget(unit, self[119] or 0)
|
|
639
|
-
end
|
|
640
641
|
if self[120] ~= nil then
|
|
641
|
-
(self[
|
|
642
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
642
643
|
end
|
|
643
|
-
if self[
|
|
644
|
+
if self[121] ~= nil then
|
|
645
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
646
|
+
end
|
|
647
|
+
if self[141] then
|
|
644
648
|
unit:explode()
|
|
645
|
-
elseif self[
|
|
649
|
+
elseif self[140] then
|
|
646
650
|
unit:kill()
|
|
647
651
|
end
|
|
648
652
|
end
|
|
649
653
|
function Buff.prototype.onDeath(self, source)
|
|
650
654
|
local unit = self.unit
|
|
651
|
-
if self[
|
|
655
|
+
if self[122] ~= nil then
|
|
652
656
|
damageArea(
|
|
653
|
-
self[
|
|
654
|
-
self[
|
|
657
|
+
self[102] or unit,
|
|
658
|
+
self[122],
|
|
655
659
|
unit.x,
|
|
656
660
|
unit.y,
|
|
661
|
+
self[124] or 0,
|
|
657
662
|
self[123] or 0,
|
|
658
|
-
self[
|
|
663
|
+
self[126] or 0,
|
|
659
664
|
self[125] or 0,
|
|
660
|
-
self[
|
|
661
|
-
self[127] or 0
|
|
662
|
-
self[126] or 0
|
|
665
|
+
self[128] or 0,
|
|
666
|
+
self[127] or 0
|
|
663
667
|
)
|
|
664
668
|
end
|
|
665
669
|
end
|
|
666
670
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
667
671
|
if event.isAttack then
|
|
668
|
-
if self[
|
|
669
|
-
local durationIncrease = self[
|
|
670
|
-
local maximumDuration = self[
|
|
672
|
+
if self[107] ~= nil then
|
|
673
|
+
local durationIncrease = self[107]
|
|
674
|
+
local maximumDuration = self[108] or 0
|
|
671
675
|
if maximumDuration > 0 then
|
|
672
676
|
durationIncrease = min(
|
|
673
677
|
durationIncrease,
|
|
674
|
-
max(0, maximumDuration - self[
|
|
678
|
+
max(0, maximumDuration - self[103])
|
|
675
679
|
)
|
|
676
680
|
end
|
|
677
681
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
678
|
-
local maximumRemainingDuration = self[
|
|
682
|
+
local maximumRemainingDuration = self[109] or 0
|
|
679
683
|
if maximumRemainingDuration > 0 then
|
|
680
684
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
681
685
|
end
|
|
682
686
|
self.remainingDuration = remainingDuration
|
|
683
687
|
end
|
|
684
|
-
local autoAttackCount = (self[
|
|
685
|
-
self[
|
|
686
|
-
if autoAttackCount == self[
|
|
688
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
689
|
+
self[129] = autoAttackCount
|
|
690
|
+
if autoAttackCount == self[130] then
|
|
687
691
|
self:destroy()
|
|
688
692
|
end
|
|
689
693
|
end
|
|
690
694
|
if event.originalAmount ~= 0 then
|
|
691
|
-
local damageDealtEventCount = (self[
|
|
692
|
-
self[
|
|
693
|
-
if damageDealtEventCount == self[
|
|
695
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
696
|
+
self[131] = damageDealtEventCount
|
|
697
|
+
if damageDealtEventCount == self[132] then
|
|
694
698
|
self:destroy()
|
|
695
699
|
end
|
|
696
700
|
end
|
|
697
701
|
end
|
|
698
702
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
699
703
|
if event.originalAmount ~= 0 then
|
|
700
|
-
local damageReceivedEventCount = (self[
|
|
701
|
-
self[
|
|
702
|
-
if damageReceivedEventCount == self[
|
|
704
|
+
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
705
|
+
self[133] = damageReceivedEventCount
|
|
706
|
+
if damageReceivedEventCount == self[134] then
|
|
703
707
|
self:destroy()
|
|
704
708
|
end
|
|
705
709
|
end
|
|
@@ -709,7 +713,7 @@ __TS__SetDescriptor(
|
|
|
709
713
|
Buff.prototype,
|
|
710
714
|
"source",
|
|
711
715
|
{get = function(self)
|
|
712
|
-
return self[
|
|
716
|
+
return self[102] or self._unit
|
|
713
717
|
end},
|
|
714
718
|
true
|
|
715
719
|
)
|
|
@@ -726,13 +730,13 @@ __TS__SetDescriptor(
|
|
|
726
730
|
"remainingDamageOverDuration",
|
|
727
731
|
{
|
|
728
732
|
get = function(self)
|
|
729
|
-
return self[
|
|
733
|
+
return self[113] or 0
|
|
730
734
|
end,
|
|
731
735
|
set = function(self, remainingDamageOverDuration)
|
|
732
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
733
|
-
self[
|
|
734
|
-
local damageOverDuration = (self[
|
|
735
|
-
self[
|
|
736
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[113] or 0)
|
|
737
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
738
|
+
local damageOverDuration = (self[110] or 0) + remainingDamageOverDurationDelta
|
|
739
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
736
740
|
end
|
|
737
741
|
},
|
|
738
742
|
true
|
|
@@ -742,13 +746,13 @@ __TS__SetDescriptor(
|
|
|
742
746
|
"damageOverDuration",
|
|
743
747
|
{
|
|
744
748
|
get = function(self)
|
|
745
|
-
return self[
|
|
749
|
+
return self[110] or 0
|
|
746
750
|
end,
|
|
747
751
|
set = function(self, damageOverDuration)
|
|
748
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
749
|
-
self[
|
|
750
|
-
local remainingDamageOverDuration = (self[
|
|
751
|
-
self[
|
|
752
|
+
local damageOverDurationDelta = damageOverDuration - (self[110] or 0)
|
|
753
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
754
|
+
local remainingDamageOverDuration = (self[113] or 0) + damageOverDurationDelta
|
|
755
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
752
756
|
end
|
|
753
757
|
},
|
|
754
758
|
true
|
|
@@ -758,10 +762,10 @@ __TS__SetDescriptor(
|
|
|
758
762
|
"damagePerInterval",
|
|
759
763
|
{
|
|
760
764
|
get = function(self)
|
|
761
|
-
return self[
|
|
765
|
+
return self[111] or 0
|
|
762
766
|
end,
|
|
763
767
|
set = function(self, damagePerInterval)
|
|
764
|
-
self[
|
|
768
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
765
769
|
end
|
|
766
770
|
},
|
|
767
771
|
true
|
|
@@ -771,25 +775,25 @@ __TS__SetDescriptor(
|
|
|
771
775
|
"damageInterval",
|
|
772
776
|
{
|
|
773
777
|
get = function(self)
|
|
774
|
-
return self[
|
|
778
|
+
return self[112] or 0
|
|
775
779
|
end,
|
|
776
780
|
set = function(self, damageInterval)
|
|
777
781
|
if damageInterval <= 0 then
|
|
778
|
-
self[
|
|
779
|
-
local timer = self[
|
|
782
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
783
|
+
local timer = self[114]
|
|
780
784
|
if timer ~= nil then
|
|
781
785
|
timer:destroy()
|
|
782
|
-
self[
|
|
786
|
+
self[114] = nil
|
|
783
787
|
end
|
|
784
788
|
return
|
|
785
789
|
end
|
|
786
|
-
self[
|
|
790
|
+
self[112] = damageInterval
|
|
787
791
|
local ____opt_48 = self._timer
|
|
788
792
|
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
789
|
-
local timer = self[
|
|
793
|
+
local timer = self[114]
|
|
790
794
|
if timer == nil then
|
|
791
795
|
timer = Timer:create()
|
|
792
|
-
self[
|
|
796
|
+
self[114] = timer
|
|
793
797
|
end
|
|
794
798
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
795
799
|
if initialDelay == damageInterval then
|
|
@@ -806,13 +810,13 @@ __TS__SetDescriptor(
|
|
|
806
810
|
"remainingHealingOverDuration",
|
|
807
811
|
{
|
|
808
812
|
get = function(self)
|
|
809
|
-
return self[
|
|
813
|
+
return self[118] or 0
|
|
810
814
|
end,
|
|
811
815
|
set = function(self, remainingHealingOverDuration)
|
|
812
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
813
|
-
self[
|
|
814
|
-
local healingOverDuration = (self[
|
|
815
|
-
self[
|
|
816
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[118] or 0)
|
|
817
|
+
self[113] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
818
|
+
local healingOverDuration = (self[115] or 0) + remainingHealingOverDurationDelta
|
|
819
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
816
820
|
end
|
|
817
821
|
},
|
|
818
822
|
true
|
|
@@ -822,13 +826,13 @@ __TS__SetDescriptor(
|
|
|
822
826
|
"healingOverDuration",
|
|
823
827
|
{
|
|
824
828
|
get = function(self)
|
|
825
|
-
return self[
|
|
829
|
+
return self[115] or 0
|
|
826
830
|
end,
|
|
827
831
|
set = function(self, healingOverDuration)
|
|
828
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
829
|
-
self[
|
|
830
|
-
local remainingHealingOverDuration = (self[
|
|
831
|
-
self[
|
|
832
|
+
local healingOverDurationDelta = healingOverDuration - (self[115] or 0)
|
|
833
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
834
|
+
local remainingHealingOverDuration = (self[118] or 0) + healingOverDurationDelta
|
|
835
|
+
self[118] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
832
836
|
end
|
|
833
837
|
},
|
|
834
838
|
true
|
|
@@ -838,10 +842,10 @@ __TS__SetDescriptor(
|
|
|
838
842
|
"healingPerInterval",
|
|
839
843
|
{
|
|
840
844
|
get = function(self)
|
|
841
|
-
return self[
|
|
845
|
+
return self[116] or 0
|
|
842
846
|
end,
|
|
843
847
|
set = function(self, healingPerInterval)
|
|
844
|
-
self[
|
|
848
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
845
849
|
end
|
|
846
850
|
},
|
|
847
851
|
true
|
|
@@ -851,25 +855,25 @@ __TS__SetDescriptor(
|
|
|
851
855
|
"healingInterval",
|
|
852
856
|
{
|
|
853
857
|
get = function(self)
|
|
854
|
-
return self[
|
|
858
|
+
return self[117] or 0
|
|
855
859
|
end,
|
|
856
860
|
set = function(self, healingInterval)
|
|
857
861
|
if healingInterval <= 0 then
|
|
858
|
-
self[
|
|
859
|
-
local timer = self[
|
|
862
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
863
|
+
local timer = self[119]
|
|
860
864
|
if timer ~= nil then
|
|
861
865
|
timer:destroy()
|
|
862
|
-
self[
|
|
866
|
+
self[119] = nil
|
|
863
867
|
end
|
|
864
868
|
return
|
|
865
869
|
end
|
|
866
|
-
self[
|
|
870
|
+
self[117] = healingInterval
|
|
867
871
|
local ____opt_50 = self._timer
|
|
868
872
|
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
869
|
-
local timer = self[
|
|
873
|
+
local timer = self[119]
|
|
870
874
|
if timer == nil then
|
|
871
875
|
timer = Timer:create()
|
|
872
|
-
self[
|
|
876
|
+
self[119] = timer
|
|
873
877
|
end
|
|
874
878
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
875
879
|
if initialDelay == healingInterval then
|
|
@@ -886,10 +890,10 @@ __TS__SetDescriptor(
|
|
|
886
890
|
"damageOnExpiration",
|
|
887
891
|
{
|
|
888
892
|
get = function(self)
|
|
889
|
-
return self[
|
|
893
|
+
return self[120] or 0
|
|
890
894
|
end,
|
|
891
895
|
set = function(self, damageOnExpiration)
|
|
892
|
-
self[
|
|
896
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
893
897
|
end
|
|
894
898
|
},
|
|
895
899
|
true
|
|
@@ -899,10 +903,10 @@ __TS__SetDescriptor(
|
|
|
899
903
|
"healingOnExpiration",
|
|
900
904
|
{
|
|
901
905
|
get = function(self)
|
|
902
|
-
return self[
|
|
906
|
+
return self[121] or 0
|
|
903
907
|
end,
|
|
904
908
|
set = function(self, healingOnExpiration)
|
|
905
|
-
self[
|
|
909
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
906
910
|
end
|
|
907
911
|
},
|
|
908
912
|
true
|
|
@@ -946,30 +950,53 @@ __TS__SetDescriptor(
|
|
|
946
950
|
},
|
|
947
951
|
true
|
|
948
952
|
)
|
|
953
|
+
__TS__SetDescriptor(
|
|
954
|
+
Buff.prototype,
|
|
955
|
+
"turnsIntoGhost",
|
|
956
|
+
{
|
|
957
|
+
get = function(self)
|
|
958
|
+
local ____self__135_52 = self[135]
|
|
959
|
+
if ____self__135_52 == nil then
|
|
960
|
+
____self__135_52 = false
|
|
961
|
+
end
|
|
962
|
+
return ____self__135_52
|
|
963
|
+
end,
|
|
964
|
+
set = function(self, turnsIntoGhost)
|
|
965
|
+
if not turnsIntoGhost and self[135] then
|
|
966
|
+
self.object:decrementGhostCounter()
|
|
967
|
+
self[135] = nil
|
|
968
|
+
elseif turnsIntoGhost and not self[135] then
|
|
969
|
+
self.object:incrementGhostCounter()
|
|
970
|
+
self[135] = true
|
|
971
|
+
end
|
|
972
|
+
end
|
|
973
|
+
},
|
|
974
|
+
true
|
|
975
|
+
)
|
|
949
976
|
__TS__SetDescriptor(
|
|
950
977
|
Buff.prototype,
|
|
951
978
|
"stuns",
|
|
952
979
|
{
|
|
953
980
|
get = function(self)
|
|
954
|
-
local
|
|
955
|
-
if
|
|
956
|
-
|
|
981
|
+
local ____self__136_53 = self[136]
|
|
982
|
+
if ____self__136_53 == nil then
|
|
983
|
+
____self__136_53 = false
|
|
957
984
|
end
|
|
958
|
-
return
|
|
985
|
+
return ____self__136_53
|
|
959
986
|
end,
|
|
960
987
|
set = function(self, stuns)
|
|
961
|
-
if not stuns and self[
|
|
962
|
-
if self[
|
|
963
|
-
self.object:
|
|
988
|
+
if not stuns and self[136] then
|
|
989
|
+
if self[137] then
|
|
990
|
+
self.object:decrementForceStunCounter()
|
|
964
991
|
end
|
|
965
992
|
self.object:decrementStunCounter()
|
|
966
|
-
self[
|
|
967
|
-
elseif stuns and not self[
|
|
968
|
-
if self[
|
|
969
|
-
self.object:
|
|
993
|
+
self[136] = nil
|
|
994
|
+
elseif stuns and not self[136] then
|
|
995
|
+
if self[137] then
|
|
996
|
+
self.object:incrementForceStunCounter()
|
|
970
997
|
end
|
|
971
998
|
self.object:incrementStunCounter()
|
|
972
|
-
self[
|
|
999
|
+
self[136] = true
|
|
973
1000
|
end
|
|
974
1001
|
end
|
|
975
1002
|
},
|
|
@@ -980,23 +1007,23 @@ __TS__SetDescriptor(
|
|
|
980
1007
|
"ignoresStunImmunity",
|
|
981
1008
|
{
|
|
982
1009
|
get = function(self)
|
|
983
|
-
local
|
|
984
|
-
if
|
|
985
|
-
|
|
1010
|
+
local ____self__137_54 = self[137]
|
|
1011
|
+
if ____self__137_54 == nil then
|
|
1012
|
+
____self__137_54 = false
|
|
986
1013
|
end
|
|
987
|
-
return
|
|
1014
|
+
return ____self__137_54
|
|
988
1015
|
end,
|
|
989
1016
|
set = function(self, ignoresStunImmunity)
|
|
990
|
-
if not ignoresStunImmunity and self[
|
|
991
|
-
if self[
|
|
992
|
-
self.object:
|
|
1017
|
+
if not ignoresStunImmunity and self[137] then
|
|
1018
|
+
if self[136] then
|
|
1019
|
+
self.object:decrementForceStunCounter()
|
|
993
1020
|
end
|
|
994
|
-
self[
|
|
995
|
-
elseif ignoresStunImmunity and not self[
|
|
996
|
-
if self[
|
|
997
|
-
self.object:
|
|
1021
|
+
self[137] = nil
|
|
1022
|
+
elseif ignoresStunImmunity and not self[137] then
|
|
1023
|
+
if self[136] then
|
|
1024
|
+
self.object:incrementForceStunCounter()
|
|
998
1025
|
end
|
|
999
|
-
self[
|
|
1026
|
+
self[137] = true
|
|
1000
1027
|
end
|
|
1001
1028
|
end
|
|
1002
1029
|
},
|
|
@@ -1007,19 +1034,19 @@ __TS__SetDescriptor(
|
|
|
1007
1034
|
"disablesAutoAttack",
|
|
1008
1035
|
{
|
|
1009
1036
|
get = function(self)
|
|
1010
|
-
local
|
|
1011
|
-
if
|
|
1012
|
-
|
|
1037
|
+
local ____self__138_55 = self[138]
|
|
1038
|
+
if ____self__138_55 == nil then
|
|
1039
|
+
____self__138_55 = false
|
|
1013
1040
|
end
|
|
1014
|
-
return
|
|
1041
|
+
return ____self__138_55
|
|
1015
1042
|
end,
|
|
1016
1043
|
set = function(self, disablesAutoAttack)
|
|
1017
|
-
if not disablesAutoAttack and self[
|
|
1044
|
+
if not disablesAutoAttack and self[138] then
|
|
1018
1045
|
self.object:decrementDisableAutoAttackCounter()
|
|
1019
|
-
self[
|
|
1020
|
-
elseif disablesAutoAttack and not self[
|
|
1046
|
+
self[138] = nil
|
|
1047
|
+
elseif disablesAutoAttack and not self[138] then
|
|
1021
1048
|
self.object:incrementDisableAutoAttackCounter()
|
|
1022
|
-
self[
|
|
1049
|
+
self[138] = true
|
|
1023
1050
|
end
|
|
1024
1051
|
end
|
|
1025
1052
|
},
|
|
@@ -1030,19 +1057,19 @@ __TS__SetDescriptor(
|
|
|
1030
1057
|
"providesInvulnerability",
|
|
1031
1058
|
{
|
|
1032
1059
|
get = function(self)
|
|
1033
|
-
local
|
|
1034
|
-
if
|
|
1035
|
-
|
|
1060
|
+
local ____self__139_56 = self[139]
|
|
1061
|
+
if ____self__139_56 == nil then
|
|
1062
|
+
____self__139_56 = false
|
|
1036
1063
|
end
|
|
1037
|
-
return
|
|
1064
|
+
return ____self__139_56
|
|
1038
1065
|
end,
|
|
1039
1066
|
set = function(self, providesInvulnerability)
|
|
1040
|
-
if not providesInvulnerability and self[
|
|
1067
|
+
if not providesInvulnerability and self[139] then
|
|
1041
1068
|
self.object:decrementInvulnerabilityCounter()
|
|
1042
|
-
self[
|
|
1043
|
-
elseif providesInvulnerability and not self[
|
|
1069
|
+
self[139] = nil
|
|
1070
|
+
elseif providesInvulnerability and not self[139] then
|
|
1044
1071
|
self.object:incrementInvulnerabilityCounter()
|
|
1045
|
-
self[
|
|
1072
|
+
self[139] = true
|
|
1046
1073
|
end
|
|
1047
1074
|
end
|
|
1048
1075
|
},
|
|
@@ -1053,17 +1080,17 @@ __TS__SetDescriptor(
|
|
|
1053
1080
|
"killsOnExpiration",
|
|
1054
1081
|
{
|
|
1055
1082
|
get = function(self)
|
|
1056
|
-
local
|
|
1057
|
-
if
|
|
1058
|
-
|
|
1083
|
+
local ____self__140_57 = self[140]
|
|
1084
|
+
if ____self__140_57 == nil then
|
|
1085
|
+
____self__140_57 = false
|
|
1059
1086
|
end
|
|
1060
|
-
return
|
|
1087
|
+
return ____self__140_57
|
|
1061
1088
|
end,
|
|
1062
1089
|
set = function(self, killsOnExpiration)
|
|
1063
|
-
if not killsOnExpiration and self[
|
|
1064
|
-
self[
|
|
1065
|
-
elseif killsOnExpiration and not self[
|
|
1066
|
-
self[
|
|
1090
|
+
if not killsOnExpiration and self[140] then
|
|
1091
|
+
self[140] = nil
|
|
1092
|
+
elseif killsOnExpiration and not self[140] then
|
|
1093
|
+
self[140] = true
|
|
1067
1094
|
end
|
|
1068
1095
|
end
|
|
1069
1096
|
},
|
|
@@ -1074,17 +1101,17 @@ __TS__SetDescriptor(
|
|
|
1074
1101
|
"explodesOnExpiration",
|
|
1075
1102
|
{
|
|
1076
1103
|
get = function(self)
|
|
1077
|
-
local
|
|
1078
|
-
if
|
|
1079
|
-
|
|
1104
|
+
local ____self__141_58 = self[141]
|
|
1105
|
+
if ____self__141_58 == nil then
|
|
1106
|
+
____self__141_58 = false
|
|
1080
1107
|
end
|
|
1081
|
-
return
|
|
1108
|
+
return ____self__141_58
|
|
1082
1109
|
end,
|
|
1083
1110
|
set = function(self, killsOnExpiration)
|
|
1084
|
-
if not killsOnExpiration and self[
|
|
1085
|
-
self[
|
|
1086
|
-
elseif killsOnExpiration and not self[
|
|
1087
|
-
self[
|
|
1111
|
+
if not killsOnExpiration and self[141] then
|
|
1112
|
+
self[141] = nil
|
|
1113
|
+
elseif killsOnExpiration and not self[141] then
|
|
1114
|
+
self[141] = true
|
|
1088
1115
|
end
|
|
1089
1116
|
end
|
|
1090
1117
|
},
|
|
@@ -1095,13 +1122,13 @@ __TS__SetDescriptor(
|
|
|
1095
1122
|
"maximumDamageDealtEventCount",
|
|
1096
1123
|
{
|
|
1097
1124
|
get = function(self)
|
|
1098
|
-
return self[
|
|
1125
|
+
return self[132] or 0
|
|
1099
1126
|
end,
|
|
1100
1127
|
set = function(self, maximumDamageDealtEventCount)
|
|
1101
1128
|
if maximumDamageDealtEventCount == 0 then
|
|
1102
|
-
self[
|
|
1129
|
+
self[132] = nil
|
|
1103
1130
|
else
|
|
1104
|
-
self[
|
|
1131
|
+
self[132] = maximumDamageDealtEventCount
|
|
1105
1132
|
end
|
|
1106
1133
|
end
|
|
1107
1134
|
},
|
|
@@ -1112,13 +1139,13 @@ __TS__SetDescriptor(
|
|
|
1112
1139
|
"maximumDamageReceivedEventCount",
|
|
1113
1140
|
{
|
|
1114
1141
|
get = function(self)
|
|
1115
|
-
return self[
|
|
1142
|
+
return self[134] or 0
|
|
1116
1143
|
end,
|
|
1117
1144
|
set = function(self, maximumDamageReceivedEventCount)
|
|
1118
1145
|
if maximumDamageReceivedEventCount == 0 then
|
|
1119
|
-
self[
|
|
1146
|
+
self[134] = nil
|
|
1120
1147
|
else
|
|
1121
|
-
self[
|
|
1148
|
+
self[134] = maximumDamageReceivedEventCount
|
|
1122
1149
|
end
|
|
1123
1150
|
end
|
|
1124
1151
|
},
|
|
@@ -1129,13 +1156,13 @@ __TS__SetDescriptor(
|
|
|
1129
1156
|
"maximumAutoAttackCount",
|
|
1130
1157
|
{
|
|
1131
1158
|
get = function(self)
|
|
1132
|
-
return self[
|
|
1159
|
+
return self[130] or 0
|
|
1133
1160
|
end,
|
|
1134
1161
|
set = function(self, maximumAutoAttackCount)
|
|
1135
1162
|
if maximumAutoAttackCount == 0 then
|
|
1136
|
-
self[
|
|
1163
|
+
self[130] = nil
|
|
1137
1164
|
else
|
|
1138
|
-
self[
|
|
1165
|
+
self[130] = maximumAutoAttackCount
|
|
1139
1166
|
end
|
|
1140
1167
|
end
|
|
1141
1168
|
},
|
|
@@ -1146,10 +1173,10 @@ __TS__SetDescriptor(
|
|
|
1146
1173
|
"durationIncreaseOnAutoAttack",
|
|
1147
1174
|
{
|
|
1148
1175
|
get = function(self)
|
|
1149
|
-
return self[
|
|
1176
|
+
return self[107] or 0
|
|
1150
1177
|
end,
|
|
1151
1178
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1152
|
-
self[
|
|
1179
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
1153
1180
|
end
|
|
1154
1181
|
},
|
|
1155
1182
|
true
|
|
@@ -1197,7 +1224,7 @@ __TS__SetDescriptor(
|
|
|
1197
1224
|
Buff.prototype,
|
|
1198
1225
|
"duration",
|
|
1199
1226
|
{get = function(self)
|
|
1200
|
-
return self[
|
|
1227
|
+
return self[103]
|
|
1201
1228
|
end},
|
|
1202
1229
|
true
|
|
1203
1230
|
)
|
|
@@ -1206,15 +1233,15 @@ __TS__SetDescriptor(
|
|
|
1206
1233
|
"remainingDuration",
|
|
1207
1234
|
{
|
|
1208
1235
|
get = function(self)
|
|
1209
|
-
local
|
|
1210
|
-
return
|
|
1236
|
+
local ____opt_59 = self._timer
|
|
1237
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1211
1238
|
end,
|
|
1212
1239
|
set = function(self, remainingDuration)
|
|
1213
|
-
local
|
|
1214
|
-
local
|
|
1215
|
-
local remainingDurationDelta =
|
|
1240
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1241
|
+
local ____opt_61 = self._timer
|
|
1242
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1216
1243
|
if remainingDurationDelta ~= 0 then
|
|
1217
|
-
self[
|
|
1244
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1218
1245
|
if remainingDuration <= 0 then
|
|
1219
1246
|
Timer:run(destroyBuff, self)
|
|
1220
1247
|
else
|
|
@@ -1226,7 +1253,8 @@ __TS__SetDescriptor(
|
|
|
1226
1253
|
self._level,
|
|
1227
1254
|
remainingDuration,
|
|
1228
1255
|
self._spellStealPriority,
|
|
1229
|
-
self._learnLevelMinimum
|
|
1256
|
+
self._learnLevelMinimum,
|
|
1257
|
+
self[142]
|
|
1230
1258
|
) then
|
|
1231
1259
|
local timer = self._timer
|
|
1232
1260
|
if timer == nil then
|
|
@@ -1241,10 +1269,11 @@ __TS__SetDescriptor(
|
|
|
1241
1269
|
},
|
|
1242
1270
|
true
|
|
1243
1271
|
)
|
|
1244
|
-
Buff.
|
|
1272
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1273
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1245
1274
|
(function(self)
|
|
1246
1275
|
local function destroyBuffIfNeeded(buff)
|
|
1247
|
-
if getUnitAbility(buff[
|
|
1276
|
+
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
1248
1277
|
buff:destroy()
|
|
1249
1278
|
end
|
|
1250
1279
|
end
|
|
@@ -1295,5 +1324,8 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1295
1324
|
____exports.checkBuffs(target)
|
|
1296
1325
|
end
|
|
1297
1326
|
)
|
|
1327
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1328
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1329
|
+
end)
|
|
1298
1330
|
end)(Buff)
|
|
1299
1331
|
return ____exports
|