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