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