warscript 0.0.1-dev.e1acea3 → 0.0.1-dev.e49ec00
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +5 -0
- package/attributes.lua +8 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +2 -3
- package/core/types/effect.lua +95 -48
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +7 -8
- package/core/types/timer.lua +18 -21
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -1
- package/decl/native.d.ts +840 -786
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- 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.lua +20 -7
- package/engine/behaviour/ability/on-command-impact.lua +7 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +4 -1
- package/engine/behaviour/ability/remove-buffs.lua +8 -2
- package/engine/behaviour/ability.d.ts +15 -3
- package/engine/behaviour/ability.lua +85 -22
- package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
- package/engine/behaviour/unit/stun-immunity.lua +43 -27
- package/engine/behaviour/unit.d.ts +28 -0
- package/engine/behaviour/unit.lua +163 -4
- package/engine/buff.d.ts +57 -41
- package/engine/buff.lua +301 -228
- package/engine/internal/ability.d.ts +15 -1
- package/engine/internal/ability.lua +90 -2
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item.d.ts +7 -4
- package/engine/internal/item.lua +131 -28
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +62 -0
- 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/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.lua +6 -12
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- 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 +1 -1
- package/engine/internal/unit.d.ts +31 -6
- package/engine/internal/unit.lua +302 -107
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/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 +89 -33
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.d.ts +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 +10 -3
- package/engine/object-data/entry/unit-type.lua +155 -92
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +10 -4
- package/engine/object-field/ability.lua +3 -0
- 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 +187 -89
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- package/engine/standard/fields/unit.d.ts +4 -0
- package/engine/standard/fields/unit.lua +7 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +175 -10
- package/engine/unit.d.ts +2 -0
- package/engine/unit.lua +2 -0
- package/objutil/buff.lua +1 -2
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +3 -0
- package/utility/functions.d.ts +4 -0
- package/utility/functions.lua +4 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +3 -0
- package/utility/lua-maps.d.ts +4 -0
- package/utility/lua-maps.lua +20 -0
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/buff.lua
CHANGED
|
@@ -35,6 +35,7 @@ local UnitBonusType = ____bonus.UnitBonusType
|
|
|
35
35
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
36
|
local damageArea = ____area_2Ddamage.damageArea
|
|
37
37
|
local ____preconditions = require("utility.preconditions")
|
|
38
|
+
local check = ____preconditions.check
|
|
38
39
|
local checkNotNull = ____preconditions.checkNotNull
|
|
39
40
|
local ____effect = require("core.types.effect")
|
|
40
41
|
local Effect = ____effect.Effect
|
|
@@ -44,6 +45,8 @@ local ____unit = require("engine.behaviour.unit")
|
|
|
44
45
|
local UnitBehavior = ____unit.UnitBehavior
|
|
45
46
|
local ____arrays = require("utility.arrays")
|
|
46
47
|
local forEach = ____arrays.forEach
|
|
48
|
+
local ____event = require("event")
|
|
49
|
+
local Event = ____event.Event
|
|
47
50
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
51
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
49
52
|
local ____item = require("engine.internal.item")
|
|
@@ -98,12 +101,15 @@ local buffParametersKeys = {
|
|
|
98
101
|
armorIncreaseFactor = true,
|
|
99
102
|
attackSpeedIncreaseFactor = true,
|
|
100
103
|
movementSpeedIncreaseFactor = true,
|
|
104
|
+
evasionProbability = true,
|
|
105
|
+
missProbability = true,
|
|
101
106
|
damageFactor = true,
|
|
102
107
|
receivedDamageFactor = true,
|
|
103
108
|
receivedMagicDamageFactor = true,
|
|
104
109
|
durationIncreaseOnAutoAttack = true,
|
|
105
110
|
maximumDuration = true,
|
|
106
111
|
maximumRemainingDuration = true,
|
|
112
|
+
turnsIntoGhost = true,
|
|
107
113
|
stuns = true,
|
|
108
114
|
ignoresStunImmunity = true,
|
|
109
115
|
providesStunImmunity = true,
|
|
@@ -169,6 +175,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
169
175
|
end
|
|
170
176
|
end
|
|
171
177
|
local buffBooleanParameters = {
|
|
178
|
+
"turnsIntoGhost",
|
|
172
179
|
"stuns",
|
|
173
180
|
"ignoresStunImmunity",
|
|
174
181
|
"disablesAutoAttack",
|
|
@@ -180,6 +187,7 @@ local buffNumberParameters = {
|
|
|
180
187
|
"durationIncreaseOnAutoAttack",
|
|
181
188
|
"attackSpeedIncreaseFactor",
|
|
182
189
|
"movementSpeedIncreaseFactor",
|
|
190
|
+
"evasionProbability",
|
|
183
191
|
"armorIncrease",
|
|
184
192
|
"damageFactor",
|
|
185
193
|
"receivedDamageFactor",
|
|
@@ -220,7 +228,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
220
228
|
return checkNotNull(firstNativeBuffTypeId)
|
|
221
229
|
end
|
|
222
230
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
223
|
-
if buff[
|
|
231
|
+
if buff[104] == uniqueGroup then
|
|
224
232
|
buff:destroy()
|
|
225
233
|
end
|
|
226
234
|
end
|
|
@@ -228,17 +236,17 @@ local function destroyBuff(buff)
|
|
|
228
236
|
buff:destroy()
|
|
229
237
|
end
|
|
230
238
|
local function expireBuff(buff)
|
|
231
|
-
local remainingDamageOverDuration = buff[
|
|
232
|
-
local remainingHealingOverDuration = buff[
|
|
239
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
240
|
+
local remainingHealingOverDuration = buff[113] or 0
|
|
233
241
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
234
242
|
buff:flashSpecialEffect()
|
|
235
243
|
if remainingDamageOverDuration ~= 0 then
|
|
236
|
-
(buff[
|
|
237
|
-
buff[
|
|
244
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
245
|
+
buff[113] = nil
|
|
238
246
|
end
|
|
239
247
|
if remainingHealingOverDuration ~= 0 then
|
|
240
|
-
(buff[
|
|
241
|
-
buff[
|
|
248
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
249
|
+
buff[118] = nil
|
|
242
250
|
end
|
|
243
251
|
end
|
|
244
252
|
Timer:run(destroyBuff, buff)
|
|
@@ -246,56 +254,58 @@ local function expireBuff(buff)
|
|
|
246
254
|
end
|
|
247
255
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
248
256
|
buffDamageIntervalTimerCallback(buff)
|
|
249
|
-
local timer = buff[
|
|
250
|
-
local damageInterval = buff[
|
|
257
|
+
local timer = buff[114]
|
|
258
|
+
local damageInterval = buff[112]
|
|
251
259
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
252
260
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
253
261
|
end
|
|
254
262
|
end
|
|
255
263
|
buffDamageIntervalTimerCallback = function(buff)
|
|
256
264
|
buff:flashSpecialEffect()
|
|
257
|
-
local source = buff[
|
|
258
|
-
local remainingDamageOverDuration = buff[
|
|
265
|
+
local source = buff[102] or buff[101]
|
|
266
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
259
267
|
if remainingDamageOverDuration ~= 0 then
|
|
260
|
-
local damageInterval = buff[
|
|
268
|
+
local damageInterval = buff[112] or 0
|
|
261
269
|
if damageInterval ~= 0 then
|
|
262
270
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
263
|
-
source:damageTarget(buff[
|
|
264
|
-
buff[
|
|
271
|
+
source:damageTarget(buff[101], damage)
|
|
272
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
265
273
|
end
|
|
266
274
|
end
|
|
267
|
-
local damagePerInterval = buff[
|
|
275
|
+
local damagePerInterval = buff[111] or 0
|
|
268
276
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
269
|
-
source:damageTarget(buff[
|
|
277
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
270
278
|
end
|
|
271
279
|
end
|
|
272
280
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
273
281
|
buffHealingIntervalTimerCallback(buff)
|
|
274
|
-
local timer = buff[
|
|
275
|
-
local healingInterval = buff[
|
|
282
|
+
local timer = buff[119]
|
|
283
|
+
local healingInterval = buff[117]
|
|
276
284
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
277
285
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
278
286
|
end
|
|
279
287
|
end
|
|
280
288
|
buffHealingIntervalTimerCallback = function(buff)
|
|
281
|
-
if buff[
|
|
289
|
+
if buff[117] ~= buff[112] then
|
|
282
290
|
buff:flashSpecialEffect()
|
|
283
291
|
end
|
|
284
|
-
local source = buff[
|
|
285
|
-
local remainingHealingOverDuration = buff[
|
|
292
|
+
local source = buff[102] or buff[101]
|
|
293
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
286
294
|
if remainingHealingOverDuration ~= 0 then
|
|
287
|
-
local healingInterval = buff[
|
|
295
|
+
local healingInterval = buff[117] or 0
|
|
288
296
|
if healingInterval ~= 0 then
|
|
289
297
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
290
|
-
source:healTarget(buff[
|
|
291
|
-
buff[
|
|
298
|
+
source:healTarget(buff[101], healing)
|
|
299
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
292
300
|
end
|
|
293
301
|
end
|
|
294
|
-
local healingPerInterval = buff[
|
|
302
|
+
local healingPerInterval = buff[116] or 0
|
|
295
303
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
296
|
-
source:healTarget(buff[
|
|
304
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
297
305
|
end
|
|
298
306
|
end
|
|
307
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
308
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
299
309
|
____exports.Buff = __TS__Class()
|
|
300
310
|
local Buff = ____exports.Buff
|
|
301
311
|
Buff.name = "Buff"
|
|
@@ -304,7 +314,8 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
304
314
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
305
315
|
self._unit = _unit
|
|
306
316
|
self.parameters = nil
|
|
307
|
-
self[100] =
|
|
317
|
+
self[100] = 0
|
|
318
|
+
self[101] = _unit
|
|
308
319
|
local typeId
|
|
309
320
|
local polarity
|
|
310
321
|
local resistanceType
|
|
@@ -313,7 +324,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
313
324
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
314
325
|
polarity = resistanceTypeOrPolarity
|
|
315
326
|
resistanceType = abilityOrParametersOrResistanceType
|
|
316
|
-
if __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
327
|
+
if __TS__InstanceOf(parametersOrAbility, Ability) or parametersOrAbility == nil then
|
|
317
328
|
ability = parametersOrAbility
|
|
318
329
|
else
|
|
319
330
|
ability = nil
|
|
@@ -323,7 +334,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
323
334
|
typeId = typeIdOrTypeIds
|
|
324
335
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
325
336
|
resistanceType = resistanceTypeOrPolarity
|
|
326
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
337
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) or abilityOrParametersOrResistanceType == nil then
|
|
327
338
|
ability = abilityOrParametersOrResistanceType
|
|
328
339
|
parameters = parametersOrAbility
|
|
329
340
|
else
|
|
@@ -332,7 +343,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
332
343
|
end
|
|
333
344
|
end
|
|
334
345
|
self.typeId = typeId
|
|
335
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
346
|
+
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
336
347
|
parameters = ability
|
|
337
348
|
ability = nil
|
|
338
349
|
end
|
|
@@ -360,14 +371,19 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
360
371
|
end
|
|
361
372
|
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
362
373
|
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
374
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
375
|
+
if missProbability ~= nil then
|
|
376
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
377
|
+
self[142] = missProbability
|
|
378
|
+
end
|
|
363
379
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
364
380
|
if buffByTypeId == nil then
|
|
365
381
|
buffByTypeId = {}
|
|
366
382
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
367
383
|
end
|
|
368
|
-
local
|
|
369
|
-
if
|
|
370
|
-
|
|
384
|
+
local ____opt_15 = buffByTypeId[typeId]
|
|
385
|
+
if ____opt_15 ~= nil then
|
|
386
|
+
____opt_15:destroy()
|
|
371
387
|
end
|
|
372
388
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
373
389
|
if uniqueGroup ~= nil then
|
|
@@ -381,13 +397,16 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
381
397
|
level,
|
|
382
398
|
duration,
|
|
383
399
|
spellStealPriority,
|
|
384
|
-
learnLevelMinimum
|
|
400
|
+
learnLevelMinimum,
|
|
401
|
+
missProbability
|
|
385
402
|
) then
|
|
403
|
+
self[100] = 1
|
|
386
404
|
UnitBehavior.prototype.destroy(self)
|
|
387
405
|
error(unsuccessfulApplicationMarker, 0)
|
|
388
406
|
end
|
|
389
407
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
390
408
|
if handle == nil then
|
|
409
|
+
self[100] = 1
|
|
391
410
|
UnitBehavior.prototype.destroy(self)
|
|
392
411
|
error(unsuccessfulApplicationMarker, 0)
|
|
393
412
|
end
|
|
@@ -396,20 +415,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
396
415
|
self._level = level
|
|
397
416
|
self._spellStealPriority = spellStealPriority
|
|
398
417
|
self._learnLevelMinimum = learnLevelMinimum
|
|
399
|
-
self[
|
|
400
|
-
self[
|
|
401
|
-
self[
|
|
402
|
-
self[
|
|
403
|
-
self[
|
|
418
|
+
self[102] = source
|
|
419
|
+
self[103] = duration or 0
|
|
420
|
+
self[104] = uniqueGroup
|
|
421
|
+
self[105] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
422
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
404
423
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
405
424
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
406
|
-
local
|
|
407
|
-
local
|
|
408
|
-
local
|
|
409
|
-
if
|
|
410
|
-
|
|
425
|
+
local ____ability_24 = ability
|
|
426
|
+
local ____level_25 = level
|
|
427
|
+
local ____temp_23 = parameters and parameters[buffBooleanParameter]
|
|
428
|
+
if ____temp_23 == nil then
|
|
429
|
+
____temp_23 = defaultParameters[buffBooleanParameter]
|
|
411
430
|
end
|
|
412
|
-
if resolveBooleanValue(
|
|
431
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
413
432
|
self[buffBooleanParameter] = true
|
|
414
433
|
end
|
|
415
434
|
end
|
|
@@ -425,11 +444,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
425
444
|
end
|
|
426
445
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
427
446
|
if maximumDuration ~= nil then
|
|
428
|
-
self[
|
|
447
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
429
448
|
end
|
|
430
449
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
431
450
|
if maximumRemainingDuration ~= nil then
|
|
432
|
-
self[
|
|
451
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
433
452
|
end
|
|
434
453
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
435
454
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -487,10 +506,12 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
487
506
|
self._timer = timer
|
|
488
507
|
end
|
|
489
508
|
self:onCreate()
|
|
509
|
+
self[100] = 1
|
|
510
|
+
Event.invoke(buffCreatedEvent, self)
|
|
490
511
|
end
|
|
491
512
|
function Buff.prototype.getUnitBonus(self, bonusType)
|
|
492
|
-
local
|
|
493
|
-
local bonusId =
|
|
513
|
+
local ____opt_38 = self._bonusIdByBonusType
|
|
514
|
+
local bonusId = ____opt_38 and ____opt_38[bonusType]
|
|
494
515
|
return bonusId == nil and 0 or getUnitBonus(self._unit, bonusType, bonusId)
|
|
495
516
|
end
|
|
496
517
|
function Buff.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
|
|
@@ -503,67 +524,69 @@ function Buff.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
|
|
|
503
524
|
end
|
|
504
525
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
505
526
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
506
|
-
Effect:flash(self[
|
|
527
|
+
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
507
528
|
else
|
|
508
529
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
509
|
-
local
|
|
510
|
-
local
|
|
511
|
-
local
|
|
512
|
-
self[
|
|
530
|
+
local ____Effect_42 = Effect
|
|
531
|
+
local ____Effect_flash_43 = Effect.flash
|
|
532
|
+
local ____array_41 = __TS__SparseArrayNew(
|
|
533
|
+
self[105],
|
|
513
534
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
514
535
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
515
536
|
)
|
|
516
|
-
local
|
|
537
|
+
local ____isWidgetProvided_40
|
|
517
538
|
if isWidgetProvided then
|
|
518
|
-
|
|
539
|
+
____isWidgetProvided_40 = yOrParametersOrDuration
|
|
519
540
|
else
|
|
520
|
-
|
|
541
|
+
____isWidgetProvided_40 = widgetOrXOrParametersOrDuration
|
|
521
542
|
end
|
|
522
|
-
__TS__SparseArrayPush(
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
__TS__SparseArraySpread(
|
|
543
|
+
__TS__SparseArrayPush(____array_41, ____isWidgetProvided_40)
|
|
544
|
+
____Effect_flash_43(
|
|
545
|
+
____Effect_42,
|
|
546
|
+
__TS__SparseArraySpread(____array_41)
|
|
526
547
|
)
|
|
527
548
|
end
|
|
528
549
|
end
|
|
529
550
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
530
551
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
531
|
-
local
|
|
532
|
-
local
|
|
533
|
-
local
|
|
534
|
-
self[
|
|
552
|
+
local ____Effect_46 = Effect
|
|
553
|
+
local ____Effect_flash_47 = Effect.flash
|
|
554
|
+
local ____array_45 = __TS__SparseArrayNew(
|
|
555
|
+
self[106],
|
|
535
556
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
536
557
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
537
558
|
)
|
|
538
|
-
local
|
|
559
|
+
local ____isWidgetProvided_44
|
|
539
560
|
if isWidgetProvided then
|
|
540
|
-
|
|
561
|
+
____isWidgetProvided_44 = duration
|
|
541
562
|
else
|
|
542
|
-
|
|
563
|
+
____isWidgetProvided_44 = widgetOrDuration
|
|
543
564
|
end
|
|
544
|
-
__TS__SparseArrayPush(
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
__TS__SparseArraySpread(
|
|
565
|
+
__TS__SparseArrayPush(____array_45, ____isWidgetProvided_44)
|
|
566
|
+
____Effect_flash_47(
|
|
567
|
+
____Effect_46,
|
|
568
|
+
__TS__SparseArraySpread(____array_45)
|
|
548
569
|
)
|
|
549
570
|
end
|
|
550
571
|
function Buff.prototype.onCreate(self)
|
|
551
572
|
end
|
|
552
573
|
function Buff.prototype.onDestroy(self)
|
|
574
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
575
|
+
self[100] = 2
|
|
553
576
|
local unit = self._unit
|
|
554
577
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
555
578
|
removeBuff(unit.handle, self.typeId)
|
|
556
579
|
end
|
|
557
580
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
558
|
-
local healingIntervalTimer = self[
|
|
581
|
+
local healingIntervalTimer = self[119]
|
|
559
582
|
if healingIntervalTimer ~= nil then
|
|
560
583
|
healingIntervalTimer:destroy()
|
|
561
|
-
self[
|
|
584
|
+
self[119] = nil
|
|
562
585
|
end
|
|
563
|
-
local damageIntervalTimer = self[
|
|
586
|
+
local damageIntervalTimer = self[114]
|
|
564
587
|
if damageIntervalTimer ~= nil then
|
|
565
588
|
damageIntervalTimer:destroy()
|
|
566
|
-
self[
|
|
589
|
+
self[114] = nil
|
|
567
590
|
end
|
|
568
591
|
if self._timer ~= nil then
|
|
569
592
|
self._timer:destroy()
|
|
@@ -573,15 +596,21 @@ function Buff.prototype.onDestroy(self)
|
|
|
573
596
|
behavior:destroy()
|
|
574
597
|
end
|
|
575
598
|
end
|
|
576
|
-
if self[
|
|
599
|
+
if self[139] then
|
|
600
|
+
unit:decrementInvulnerabilityCounter()
|
|
601
|
+
end
|
|
602
|
+
if self[138] then
|
|
577
603
|
unit:decrementDisableAutoAttackCounter()
|
|
578
604
|
end
|
|
579
|
-
if self[
|
|
580
|
-
if self[
|
|
605
|
+
if self[136] then
|
|
606
|
+
if self[137] then
|
|
581
607
|
unit:decrementStunCounter()
|
|
582
608
|
end
|
|
583
609
|
unit:decrementStunCounter()
|
|
584
610
|
end
|
|
611
|
+
if self[135] then
|
|
612
|
+
unit:decrementGhostCounter()
|
|
613
|
+
end
|
|
585
614
|
if self._abilityTypeIds ~= nil then
|
|
586
615
|
for abilityTypeId in pairs(self._abilityTypeIds) do
|
|
587
616
|
unit:removeAbility(abilityTypeId)
|
|
@@ -592,6 +621,8 @@ function Buff.prototype.onDestroy(self)
|
|
|
592
621
|
removeUnitBonus(unit, bonusType, bonusId)
|
|
593
622
|
end
|
|
594
623
|
end
|
|
624
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
625
|
+
self[100] = 3
|
|
595
626
|
return UnitBehavior.prototype.onDestroy(self)
|
|
596
627
|
end
|
|
597
628
|
function Buff.apply(self, ...)
|
|
@@ -619,8 +650,8 @@ function Buff.apply(self, ...)
|
|
|
619
650
|
end
|
|
620
651
|
end
|
|
621
652
|
function Buff.getByTypeId(self, unit, typeId)
|
|
622
|
-
local
|
|
623
|
-
local buff =
|
|
653
|
+
local ____opt_48 = buffByTypeIdByUnit[unit]
|
|
654
|
+
local buff = ____opt_48 and ____opt_48[typeId]
|
|
624
655
|
if __TS__InstanceOf(buff, self) then
|
|
625
656
|
return buff
|
|
626
657
|
end
|
|
@@ -628,72 +659,72 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
628
659
|
end
|
|
629
660
|
function Buff.prototype.onExpiration(self)
|
|
630
661
|
local unit = self.unit
|
|
631
|
-
if self[119] ~= nil then
|
|
632
|
-
(self[101] or unit):damageTarget(unit, self[119] or 0)
|
|
633
|
-
end
|
|
634
662
|
if self[120] ~= nil then
|
|
635
|
-
(self[
|
|
663
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
636
664
|
end
|
|
637
|
-
if self[
|
|
665
|
+
if self[121] ~= nil then
|
|
666
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
667
|
+
end
|
|
668
|
+
if self[141] then
|
|
638
669
|
unit:explode()
|
|
639
|
-
elseif self[
|
|
670
|
+
elseif self[140] then
|
|
640
671
|
unit:kill()
|
|
641
672
|
end
|
|
642
673
|
end
|
|
643
674
|
function Buff.prototype.onDeath(self, source)
|
|
644
675
|
local unit = self.unit
|
|
645
|
-
if self[
|
|
676
|
+
if self[122] ~= nil then
|
|
646
677
|
damageArea(
|
|
647
|
-
self[
|
|
648
|
-
self[
|
|
678
|
+
self[102] or unit,
|
|
679
|
+
self[122],
|
|
649
680
|
unit.x,
|
|
650
681
|
unit.y,
|
|
682
|
+
self[124] or 0,
|
|
651
683
|
self[123] or 0,
|
|
652
|
-
self[
|
|
684
|
+
self[126] or 0,
|
|
653
685
|
self[125] or 0,
|
|
654
|
-
self[
|
|
655
|
-
self[127] or 0
|
|
656
|
-
self[126] or 0
|
|
686
|
+
self[128] or 0,
|
|
687
|
+
self[127] or 0
|
|
657
688
|
)
|
|
658
689
|
end
|
|
659
690
|
end
|
|
660
691
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
661
692
|
if event.isAttack then
|
|
662
|
-
if self[
|
|
663
|
-
local durationIncrease = self[
|
|
664
|
-
local maximumDuration = self[
|
|
693
|
+
if self[107] ~= nil then
|
|
694
|
+
local durationIncrease = self[107]
|
|
695
|
+
local maximumDuration = self[108] or 0
|
|
665
696
|
if maximumDuration > 0 then
|
|
666
697
|
durationIncrease = min(
|
|
667
698
|
durationIncrease,
|
|
668
|
-
max(0, maximumDuration - self[
|
|
699
|
+
max(0, maximumDuration - self[103])
|
|
669
700
|
)
|
|
670
701
|
end
|
|
671
702
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
672
|
-
local maximumRemainingDuration = self[
|
|
703
|
+
local maximumRemainingDuration = self[109] or 0
|
|
673
704
|
if maximumRemainingDuration > 0 then
|
|
674
705
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
675
706
|
end
|
|
676
707
|
self.remainingDuration = remainingDuration
|
|
677
708
|
end
|
|
678
|
-
local autoAttackCount = (self[
|
|
679
|
-
self[
|
|
680
|
-
if autoAttackCount == self[
|
|
709
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
710
|
+
self[129] = autoAttackCount
|
|
711
|
+
if autoAttackCount == self[130] then
|
|
681
712
|
self:destroy()
|
|
682
713
|
end
|
|
683
714
|
end
|
|
684
715
|
if event.originalAmount ~= 0 then
|
|
685
|
-
local damageDealtEventCount = (self[
|
|
686
|
-
self[
|
|
687
|
-
if damageDealtEventCount == self[
|
|
716
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
717
|
+
self[131] = damageDealtEventCount
|
|
718
|
+
if damageDealtEventCount == self[132] then
|
|
688
719
|
self:destroy()
|
|
689
720
|
end
|
|
690
721
|
end
|
|
691
722
|
end
|
|
692
723
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
693
724
|
if event.originalAmount ~= 0 then
|
|
694
|
-
local damageReceivedEventCount = (self[
|
|
695
|
-
self[
|
|
696
|
-
if damageReceivedEventCount == self[
|
|
725
|
+
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
726
|
+
self[133] = damageReceivedEventCount
|
|
727
|
+
if damageReceivedEventCount == self[134] then
|
|
697
728
|
self:destroy()
|
|
698
729
|
end
|
|
699
730
|
end
|
|
@@ -703,7 +734,7 @@ __TS__SetDescriptor(
|
|
|
703
734
|
Buff.prototype,
|
|
704
735
|
"source",
|
|
705
736
|
{get = function(self)
|
|
706
|
-
return self[
|
|
737
|
+
return self[102] or self._unit
|
|
707
738
|
end},
|
|
708
739
|
true
|
|
709
740
|
)
|
|
@@ -720,13 +751,13 @@ __TS__SetDescriptor(
|
|
|
720
751
|
"remainingDamageOverDuration",
|
|
721
752
|
{
|
|
722
753
|
get = function(self)
|
|
723
|
-
return self[
|
|
754
|
+
return self[113] or 0
|
|
724
755
|
end,
|
|
725
756
|
set = function(self, remainingDamageOverDuration)
|
|
726
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
727
|
-
self[
|
|
728
|
-
local damageOverDuration = (self[
|
|
729
|
-
self[
|
|
757
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[113] or 0)
|
|
758
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
759
|
+
local damageOverDuration = (self[110] or 0) + remainingDamageOverDurationDelta
|
|
760
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
730
761
|
end
|
|
731
762
|
},
|
|
732
763
|
true
|
|
@@ -736,13 +767,13 @@ __TS__SetDescriptor(
|
|
|
736
767
|
"damageOverDuration",
|
|
737
768
|
{
|
|
738
769
|
get = function(self)
|
|
739
|
-
return self[
|
|
770
|
+
return self[110] or 0
|
|
740
771
|
end,
|
|
741
772
|
set = function(self, damageOverDuration)
|
|
742
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
743
|
-
self[
|
|
744
|
-
local remainingDamageOverDuration = (self[
|
|
745
|
-
self[
|
|
773
|
+
local damageOverDurationDelta = damageOverDuration - (self[110] or 0)
|
|
774
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
775
|
+
local remainingDamageOverDuration = (self[113] or 0) + damageOverDurationDelta
|
|
776
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
746
777
|
end
|
|
747
778
|
},
|
|
748
779
|
true
|
|
@@ -752,10 +783,10 @@ __TS__SetDescriptor(
|
|
|
752
783
|
"damagePerInterval",
|
|
753
784
|
{
|
|
754
785
|
get = function(self)
|
|
755
|
-
return self[
|
|
786
|
+
return self[111] or 0
|
|
756
787
|
end,
|
|
757
788
|
set = function(self, damagePerInterval)
|
|
758
|
-
self[
|
|
789
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
759
790
|
end
|
|
760
791
|
},
|
|
761
792
|
true
|
|
@@ -765,25 +796,25 @@ __TS__SetDescriptor(
|
|
|
765
796
|
"damageInterval",
|
|
766
797
|
{
|
|
767
798
|
get = function(self)
|
|
768
|
-
return self[
|
|
799
|
+
return self[112] or 0
|
|
769
800
|
end,
|
|
770
801
|
set = function(self, damageInterval)
|
|
771
802
|
if damageInterval <= 0 then
|
|
772
|
-
self[
|
|
773
|
-
local timer = self[
|
|
803
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
804
|
+
local timer = self[114]
|
|
774
805
|
if timer ~= nil then
|
|
775
806
|
timer:destroy()
|
|
776
|
-
self[
|
|
807
|
+
self[114] = nil
|
|
777
808
|
end
|
|
778
809
|
return
|
|
779
810
|
end
|
|
780
|
-
self[
|
|
781
|
-
local
|
|
782
|
-
local elapsed =
|
|
783
|
-
local timer = self[
|
|
811
|
+
self[112] = damageInterval
|
|
812
|
+
local ____opt_50 = self._timer
|
|
813
|
+
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
814
|
+
local timer = self[114]
|
|
784
815
|
if timer == nil then
|
|
785
816
|
timer = Timer:create()
|
|
786
|
-
self[
|
|
817
|
+
self[114] = timer
|
|
787
818
|
end
|
|
788
819
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
789
820
|
if initialDelay == damageInterval then
|
|
@@ -800,13 +831,13 @@ __TS__SetDescriptor(
|
|
|
800
831
|
"remainingHealingOverDuration",
|
|
801
832
|
{
|
|
802
833
|
get = function(self)
|
|
803
|
-
return self[
|
|
834
|
+
return self[118] or 0
|
|
804
835
|
end,
|
|
805
836
|
set = function(self, remainingHealingOverDuration)
|
|
806
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
807
|
-
self[
|
|
808
|
-
local healingOverDuration = (self[
|
|
809
|
-
self[
|
|
837
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[118] or 0)
|
|
838
|
+
self[113] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
839
|
+
local healingOverDuration = (self[115] or 0) + remainingHealingOverDurationDelta
|
|
840
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
810
841
|
end
|
|
811
842
|
},
|
|
812
843
|
true
|
|
@@ -816,13 +847,13 @@ __TS__SetDescriptor(
|
|
|
816
847
|
"healingOverDuration",
|
|
817
848
|
{
|
|
818
849
|
get = function(self)
|
|
819
|
-
return self[
|
|
850
|
+
return self[115] or 0
|
|
820
851
|
end,
|
|
821
852
|
set = function(self, healingOverDuration)
|
|
822
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
823
|
-
self[
|
|
824
|
-
local remainingHealingOverDuration = (self[
|
|
825
|
-
self[
|
|
853
|
+
local healingOverDurationDelta = healingOverDuration - (self[115] or 0)
|
|
854
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
855
|
+
local remainingHealingOverDuration = (self[118] or 0) + healingOverDurationDelta
|
|
856
|
+
self[118] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
826
857
|
end
|
|
827
858
|
},
|
|
828
859
|
true
|
|
@@ -832,10 +863,10 @@ __TS__SetDescriptor(
|
|
|
832
863
|
"healingPerInterval",
|
|
833
864
|
{
|
|
834
865
|
get = function(self)
|
|
835
|
-
return self[
|
|
866
|
+
return self[116] or 0
|
|
836
867
|
end,
|
|
837
868
|
set = function(self, healingPerInterval)
|
|
838
|
-
self[
|
|
869
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
839
870
|
end
|
|
840
871
|
},
|
|
841
872
|
true
|
|
@@ -845,25 +876,25 @@ __TS__SetDescriptor(
|
|
|
845
876
|
"healingInterval",
|
|
846
877
|
{
|
|
847
878
|
get = function(self)
|
|
848
|
-
return self[
|
|
879
|
+
return self[117] or 0
|
|
849
880
|
end,
|
|
850
881
|
set = function(self, healingInterval)
|
|
851
882
|
if healingInterval <= 0 then
|
|
852
|
-
self[
|
|
853
|
-
local timer = self[
|
|
883
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
884
|
+
local timer = self[119]
|
|
854
885
|
if timer ~= nil then
|
|
855
886
|
timer:destroy()
|
|
856
|
-
self[
|
|
887
|
+
self[119] = nil
|
|
857
888
|
end
|
|
858
889
|
return
|
|
859
890
|
end
|
|
860
|
-
self[
|
|
861
|
-
local
|
|
862
|
-
local elapsed =
|
|
863
|
-
local timer = self[
|
|
891
|
+
self[117] = healingInterval
|
|
892
|
+
local ____opt_52 = self._timer
|
|
893
|
+
local elapsed = ____opt_52 and ____opt_52.elapsed or 0
|
|
894
|
+
local timer = self[119]
|
|
864
895
|
if timer == nil then
|
|
865
896
|
timer = Timer:create()
|
|
866
|
-
self[
|
|
897
|
+
self[119] = timer
|
|
867
898
|
end
|
|
868
899
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
869
900
|
if initialDelay == healingInterval then
|
|
@@ -880,10 +911,10 @@ __TS__SetDescriptor(
|
|
|
880
911
|
"damageOnExpiration",
|
|
881
912
|
{
|
|
882
913
|
get = function(self)
|
|
883
|
-
return self[
|
|
914
|
+
return self[120] or 0
|
|
884
915
|
end,
|
|
885
916
|
set = function(self, damageOnExpiration)
|
|
886
|
-
self[
|
|
917
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
887
918
|
end
|
|
888
919
|
},
|
|
889
920
|
true
|
|
@@ -893,10 +924,10 @@ __TS__SetDescriptor(
|
|
|
893
924
|
"healingOnExpiration",
|
|
894
925
|
{
|
|
895
926
|
get = function(self)
|
|
896
|
-
return self[
|
|
927
|
+
return self[121] or 0
|
|
897
928
|
end,
|
|
898
929
|
set = function(self, healingOnExpiration)
|
|
899
|
-
self[
|
|
930
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
900
931
|
end
|
|
901
932
|
},
|
|
902
933
|
true
|
|
@@ -940,30 +971,53 @@ __TS__SetDescriptor(
|
|
|
940
971
|
},
|
|
941
972
|
true
|
|
942
973
|
)
|
|
974
|
+
__TS__SetDescriptor(
|
|
975
|
+
Buff.prototype,
|
|
976
|
+
"turnsIntoGhost",
|
|
977
|
+
{
|
|
978
|
+
get = function(self)
|
|
979
|
+
local ____self__135_54 = self[135]
|
|
980
|
+
if ____self__135_54 == nil then
|
|
981
|
+
____self__135_54 = false
|
|
982
|
+
end
|
|
983
|
+
return ____self__135_54
|
|
984
|
+
end,
|
|
985
|
+
set = function(self, turnsIntoGhost)
|
|
986
|
+
if not turnsIntoGhost and self[135] then
|
|
987
|
+
self.object:decrementGhostCounter()
|
|
988
|
+
self[135] = nil
|
|
989
|
+
elseif turnsIntoGhost and not self[135] then
|
|
990
|
+
self.object:incrementGhostCounter()
|
|
991
|
+
self[135] = true
|
|
992
|
+
end
|
|
993
|
+
end
|
|
994
|
+
},
|
|
995
|
+
true
|
|
996
|
+
)
|
|
943
997
|
__TS__SetDescriptor(
|
|
944
998
|
Buff.prototype,
|
|
945
999
|
"stuns",
|
|
946
1000
|
{
|
|
947
1001
|
get = function(self)
|
|
948
|
-
local
|
|
949
|
-
if
|
|
950
|
-
|
|
1002
|
+
local ____self__136_55 = self[136]
|
|
1003
|
+
if ____self__136_55 == nil then
|
|
1004
|
+
____self__136_55 = false
|
|
951
1005
|
end
|
|
952
|
-
return
|
|
1006
|
+
return ____self__136_55
|
|
953
1007
|
end,
|
|
954
1008
|
set = function(self, stuns)
|
|
955
|
-
if not stuns and self[
|
|
956
|
-
if self[
|
|
1009
|
+
if not stuns and self[136] then
|
|
1010
|
+
if self[137] then
|
|
957
1011
|
self.object:decrementStunCounter()
|
|
958
1012
|
end
|
|
959
1013
|
self.object:decrementStunCounter()
|
|
960
|
-
self[
|
|
961
|
-
elseif stuns and not self[
|
|
962
|
-
if self[
|
|
1014
|
+
self[136] = nil
|
|
1015
|
+
elseif stuns and not self[136] then
|
|
1016
|
+
if self[137] then
|
|
963
1017
|
self.object:incrementStunCounter()
|
|
964
1018
|
end
|
|
965
1019
|
self.object:incrementStunCounter()
|
|
966
|
-
self[
|
|
1020
|
+
self[136] = true
|
|
967
1021
|
end
|
|
968
1022
|
end
|
|
969
1023
|
},
|
|
@@ -974,23 +1028,23 @@ __TS__SetDescriptor(
|
|
|
974
1028
|
"ignoresStunImmunity",
|
|
975
1029
|
{
|
|
976
1030
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
1031
|
+
local ____self__137_56 = self[137]
|
|
1032
|
+
if ____self__137_56 == nil then
|
|
1033
|
+
____self__137_56 = false
|
|
980
1034
|
end
|
|
981
|
-
return
|
|
1035
|
+
return ____self__137_56
|
|
982
1036
|
end,
|
|
983
1037
|
set = function(self, ignoresStunImmunity)
|
|
984
|
-
if not ignoresStunImmunity and self[
|
|
985
|
-
if self[
|
|
1038
|
+
if not ignoresStunImmunity and self[137] then
|
|
1039
|
+
if self[136] then
|
|
986
1040
|
self.object:decrementStunCounter()
|
|
987
1041
|
end
|
|
988
|
-
self[
|
|
989
|
-
elseif ignoresStunImmunity and not self[
|
|
990
|
-
if self[
|
|
1042
|
+
self[137] = nil
|
|
1043
|
+
elseif ignoresStunImmunity and not self[137] then
|
|
1044
|
+
if self[136] then
|
|
991
1045
|
self.object:incrementStunCounter()
|
|
992
1046
|
end
|
|
993
|
-
self[
|
|
1047
|
+
self[137] = true
|
|
994
1048
|
end
|
|
995
1049
|
end
|
|
996
1050
|
},
|
|
@@ -1001,19 +1055,19 @@ __TS__SetDescriptor(
|
|
|
1001
1055
|
"disablesAutoAttack",
|
|
1002
1056
|
{
|
|
1003
1057
|
get = function(self)
|
|
1004
|
-
local
|
|
1005
|
-
if
|
|
1006
|
-
|
|
1058
|
+
local ____self__138_57 = self[138]
|
|
1059
|
+
if ____self__138_57 == nil then
|
|
1060
|
+
____self__138_57 = false
|
|
1007
1061
|
end
|
|
1008
|
-
return
|
|
1062
|
+
return ____self__138_57
|
|
1009
1063
|
end,
|
|
1010
1064
|
set = function(self, disablesAutoAttack)
|
|
1011
|
-
if not disablesAutoAttack and self[
|
|
1065
|
+
if not disablesAutoAttack and self[138] then
|
|
1012
1066
|
self.object:decrementDisableAutoAttackCounter()
|
|
1013
|
-
self[
|
|
1014
|
-
elseif disablesAutoAttack and not self[
|
|
1067
|
+
self[138] = nil
|
|
1068
|
+
elseif disablesAutoAttack and not self[138] then
|
|
1015
1069
|
self.object:incrementDisableAutoAttackCounter()
|
|
1016
|
-
self[
|
|
1070
|
+
self[138] = true
|
|
1017
1071
|
end
|
|
1018
1072
|
end
|
|
1019
1073
|
},
|
|
@@ -1024,19 +1078,19 @@ __TS__SetDescriptor(
|
|
|
1024
1078
|
"providesInvulnerability",
|
|
1025
1079
|
{
|
|
1026
1080
|
get = function(self)
|
|
1027
|
-
local
|
|
1028
|
-
if
|
|
1029
|
-
|
|
1081
|
+
local ____self__139_58 = self[139]
|
|
1082
|
+
if ____self__139_58 == nil then
|
|
1083
|
+
____self__139_58 = false
|
|
1030
1084
|
end
|
|
1031
|
-
return
|
|
1085
|
+
return ____self__139_58
|
|
1032
1086
|
end,
|
|
1033
1087
|
set = function(self, providesInvulnerability)
|
|
1034
|
-
if not providesInvulnerability and self[
|
|
1088
|
+
if not providesInvulnerability and self[139] then
|
|
1035
1089
|
self.object:decrementInvulnerabilityCounter()
|
|
1036
|
-
self[
|
|
1037
|
-
elseif providesInvulnerability and not self[
|
|
1090
|
+
self[139] = nil
|
|
1091
|
+
elseif providesInvulnerability and not self[139] then
|
|
1038
1092
|
self.object:incrementInvulnerabilityCounter()
|
|
1039
|
-
self[
|
|
1093
|
+
self[139] = true
|
|
1040
1094
|
end
|
|
1041
1095
|
end
|
|
1042
1096
|
},
|
|
@@ -1047,17 +1101,17 @@ __TS__SetDescriptor(
|
|
|
1047
1101
|
"killsOnExpiration",
|
|
1048
1102
|
{
|
|
1049
1103
|
get = function(self)
|
|
1050
|
-
local
|
|
1051
|
-
if
|
|
1052
|
-
|
|
1104
|
+
local ____self__140_59 = self[140]
|
|
1105
|
+
if ____self__140_59 == nil then
|
|
1106
|
+
____self__140_59 = false
|
|
1053
1107
|
end
|
|
1054
|
-
return
|
|
1108
|
+
return ____self__140_59
|
|
1055
1109
|
end,
|
|
1056
1110
|
set = function(self, killsOnExpiration)
|
|
1057
|
-
if not killsOnExpiration and self[
|
|
1058
|
-
self[
|
|
1059
|
-
elseif killsOnExpiration and not self[
|
|
1060
|
-
self[
|
|
1111
|
+
if not killsOnExpiration and self[140] then
|
|
1112
|
+
self[140] = nil
|
|
1113
|
+
elseif killsOnExpiration and not self[140] then
|
|
1114
|
+
self[140] = true
|
|
1061
1115
|
end
|
|
1062
1116
|
end
|
|
1063
1117
|
},
|
|
@@ -1068,17 +1122,17 @@ __TS__SetDescriptor(
|
|
|
1068
1122
|
"explodesOnExpiration",
|
|
1069
1123
|
{
|
|
1070
1124
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1125
|
+
local ____self__141_60 = self[141]
|
|
1126
|
+
if ____self__141_60 == nil then
|
|
1127
|
+
____self__141_60 = false
|
|
1074
1128
|
end
|
|
1075
|
-
return
|
|
1129
|
+
return ____self__141_60
|
|
1076
1130
|
end,
|
|
1077
1131
|
set = function(self, killsOnExpiration)
|
|
1078
|
-
if not killsOnExpiration and self[
|
|
1079
|
-
self[
|
|
1080
|
-
elseif killsOnExpiration and not self[
|
|
1081
|
-
self[
|
|
1132
|
+
if not killsOnExpiration and self[141] then
|
|
1133
|
+
self[141] = nil
|
|
1134
|
+
elseif killsOnExpiration and not self[141] then
|
|
1135
|
+
self[141] = true
|
|
1082
1136
|
end
|
|
1083
1137
|
end
|
|
1084
1138
|
},
|
|
@@ -1089,13 +1143,13 @@ __TS__SetDescriptor(
|
|
|
1089
1143
|
"maximumDamageDealtEventCount",
|
|
1090
1144
|
{
|
|
1091
1145
|
get = function(self)
|
|
1092
|
-
return self[
|
|
1146
|
+
return self[132] or 0
|
|
1093
1147
|
end,
|
|
1094
1148
|
set = function(self, maximumDamageDealtEventCount)
|
|
1095
1149
|
if maximumDamageDealtEventCount == 0 then
|
|
1096
|
-
self[
|
|
1150
|
+
self[132] = nil
|
|
1097
1151
|
else
|
|
1098
|
-
self[
|
|
1152
|
+
self[132] = maximumDamageDealtEventCount
|
|
1099
1153
|
end
|
|
1100
1154
|
end
|
|
1101
1155
|
},
|
|
@@ -1106,13 +1160,13 @@ __TS__SetDescriptor(
|
|
|
1106
1160
|
"maximumDamageReceivedEventCount",
|
|
1107
1161
|
{
|
|
1108
1162
|
get = function(self)
|
|
1109
|
-
return self[
|
|
1163
|
+
return self[134] or 0
|
|
1110
1164
|
end,
|
|
1111
1165
|
set = function(self, maximumDamageReceivedEventCount)
|
|
1112
1166
|
if maximumDamageReceivedEventCount == 0 then
|
|
1113
|
-
self[
|
|
1167
|
+
self[134] = nil
|
|
1114
1168
|
else
|
|
1115
|
-
self[
|
|
1169
|
+
self[134] = maximumDamageReceivedEventCount
|
|
1116
1170
|
end
|
|
1117
1171
|
end
|
|
1118
1172
|
},
|
|
@@ -1123,13 +1177,13 @@ __TS__SetDescriptor(
|
|
|
1123
1177
|
"maximumAutoAttackCount",
|
|
1124
1178
|
{
|
|
1125
1179
|
get = function(self)
|
|
1126
|
-
return self[
|
|
1180
|
+
return self[130] or 0
|
|
1127
1181
|
end,
|
|
1128
1182
|
set = function(self, maximumAutoAttackCount)
|
|
1129
1183
|
if maximumAutoAttackCount == 0 then
|
|
1130
|
-
self[
|
|
1184
|
+
self[130] = nil
|
|
1131
1185
|
else
|
|
1132
|
-
self[
|
|
1186
|
+
self[130] = maximumAutoAttackCount
|
|
1133
1187
|
end
|
|
1134
1188
|
end
|
|
1135
1189
|
},
|
|
@@ -1140,10 +1194,10 @@ __TS__SetDescriptor(
|
|
|
1140
1194
|
"durationIncreaseOnAutoAttack",
|
|
1141
1195
|
{
|
|
1142
1196
|
get = function(self)
|
|
1143
|
-
return self[
|
|
1197
|
+
return self[107] or 0
|
|
1144
1198
|
end,
|
|
1145
1199
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1146
|
-
self[
|
|
1200
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
1147
1201
|
end
|
|
1148
1202
|
},
|
|
1149
1203
|
true
|
|
@@ -1174,11 +1228,24 @@ __TS__SetDescriptor(
|
|
|
1174
1228
|
},
|
|
1175
1229
|
true
|
|
1176
1230
|
)
|
|
1231
|
+
__TS__SetDescriptor(
|
|
1232
|
+
Buff.prototype,
|
|
1233
|
+
"evasionProbability",
|
|
1234
|
+
{
|
|
1235
|
+
get = function(self)
|
|
1236
|
+
return self:getUnitBonus(UnitBonusType.EVASION_PROBABILITY)
|
|
1237
|
+
end,
|
|
1238
|
+
set = function(self, evasionProbability)
|
|
1239
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.EVASION_PROBABILITY, evasionProbability)
|
|
1240
|
+
end
|
|
1241
|
+
},
|
|
1242
|
+
true
|
|
1243
|
+
)
|
|
1177
1244
|
__TS__SetDescriptor(
|
|
1178
1245
|
Buff.prototype,
|
|
1179
1246
|
"duration",
|
|
1180
1247
|
{get = function(self)
|
|
1181
|
-
return self[
|
|
1248
|
+
return self[103]
|
|
1182
1249
|
end},
|
|
1183
1250
|
true
|
|
1184
1251
|
)
|
|
@@ -1187,15 +1254,15 @@ __TS__SetDescriptor(
|
|
|
1187
1254
|
"remainingDuration",
|
|
1188
1255
|
{
|
|
1189
1256
|
get = function(self)
|
|
1190
|
-
local
|
|
1191
|
-
return
|
|
1257
|
+
local ____opt_61 = self._timer
|
|
1258
|
+
return ____opt_61 and ____opt_61.remaining or 0
|
|
1192
1259
|
end,
|
|
1193
1260
|
set = function(self, remainingDuration)
|
|
1194
|
-
local
|
|
1195
|
-
local
|
|
1196
|
-
local remainingDurationDelta =
|
|
1261
|
+
local ____remainingDuration_65 = remainingDuration
|
|
1262
|
+
local ____opt_63 = self._timer
|
|
1263
|
+
local remainingDurationDelta = ____remainingDuration_65 - (____opt_63 and ____opt_63.remaining or 0)
|
|
1197
1264
|
if remainingDurationDelta ~= 0 then
|
|
1198
|
-
self[
|
|
1265
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1199
1266
|
if remainingDuration <= 0 then
|
|
1200
1267
|
Timer:run(destroyBuff, self)
|
|
1201
1268
|
else
|
|
@@ -1207,7 +1274,8 @@ __TS__SetDescriptor(
|
|
|
1207
1274
|
self._level,
|
|
1208
1275
|
remainingDuration,
|
|
1209
1276
|
self._spellStealPriority,
|
|
1210
|
-
self._learnLevelMinimum
|
|
1277
|
+
self._learnLevelMinimum,
|
|
1278
|
+
self[142]
|
|
1211
1279
|
) then
|
|
1212
1280
|
local timer = self._timer
|
|
1213
1281
|
if timer == nil then
|
|
@@ -1221,10 +1289,12 @@ __TS__SetDescriptor(
|
|
|
1221
1289
|
end
|
|
1222
1290
|
},
|
|
1223
1291
|
true
|
|
1224
|
-
)
|
|
1292
|
+
)
|
|
1293
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1294
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1225
1295
|
(function(self)
|
|
1226
1296
|
local function destroyBuffIfNeeded(buff)
|
|
1227
|
-
if getUnitAbility(buff[
|
|
1297
|
+
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
1228
1298
|
buff:destroy()
|
|
1229
1299
|
end
|
|
1230
1300
|
end
|
|
@@ -1275,5 +1345,8 @@ __TS__SetDescriptor(
|
|
|
1275
1345
|
____exports.checkBuffs(target)
|
|
1276
1346
|
end
|
|
1277
1347
|
)
|
|
1348
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1349
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1350
|
+
end)
|
|
1278
1351
|
end)(Buff)
|
|
1279
1352
|
return ____exports
|