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