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