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