warscript 0.0.1-dev.f48f7bb → 0.0.1-dev.f70428f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- package/core/types/frame.lua +24 -21
- package/core/types/player.d.ts +15 -0
- package/core/types/player.lua +56 -14
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.lua +6 -1
- package/decl/native.d.ts +846 -790
- package/engine/behavior.d.ts +12 -1
- package/engine/behavior.lua +172 -70
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -3
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -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 +7 -2
- package/engine/behaviour/ability.lua +42 -24
- package/engine/behaviour/unit/stun-immunity.d.ts +11 -5
- package/engine/behaviour/unit/stun-immunity.lua +53 -28
- package/engine/behaviour/unit.d.ts +36 -2
- package/engine/behaviour/unit.lua +192 -6
- package/engine/buff.d.ts +66 -44
- package/engine/buff.lua +330 -225
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +49 -11
- package/engine/internal/item/ability.lua +66 -14
- 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/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +17 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/item.lua +3 -48
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +45 -14
- package/engine/internal/unit.d.ts +43 -17
- package/engine/internal/unit.lua +340 -165
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/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 +85 -24
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.lua +4 -4
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +21 -5
- package/engine/object-data/entry/unit-type.lua +214 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +69 -3
- package/engine/object-field/unit.lua +264 -7
- package/engine/object-field.d.ts +23 -6
- package/engine/object-field.lua +309 -126
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/unit.d.ts +6 -0
- package/engine/standard/fields/unit.lua +11 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +4 -0
- package/engine/unit.lua +4 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +2 -3
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-set.d.ts +2 -0
- package/utility/linked-set.lua +22 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/buff.lua
CHANGED
|
@@ -16,6 +16,7 @@ local internalApplyBuff = ____applicable.internalApplyBuff
|
|
|
16
16
|
local removeBuff = ____applicable.removeBuff
|
|
17
17
|
local ____ability = require("engine.internal.ability")
|
|
18
18
|
local Ability = ____ability.Ability
|
|
19
|
+
local UnitAbility = ____ability.UnitAbility
|
|
19
20
|
local ____ability = require("engine.object-field.ability")
|
|
20
21
|
local AbilityBooleanField = ____ability.AbilityBooleanField
|
|
21
22
|
local AbilityNumberField = ____ability.AbilityNumberField
|
|
@@ -28,13 +29,11 @@ local ____math = require("math")
|
|
|
28
29
|
local max = ____math.max
|
|
29
30
|
local min = ____math.min
|
|
30
31
|
local ____bonus = require("engine.internal.unit.bonus")
|
|
31
|
-
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
32
|
-
local getUnitBonus = ____bonus.getUnitBonus
|
|
33
|
-
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
34
32
|
local UnitBonusType = ____bonus.UnitBonusType
|
|
35
33
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
34
|
local damageArea = ____area_2Ddamage.damageArea
|
|
37
35
|
local ____preconditions = require("utility.preconditions")
|
|
36
|
+
local check = ____preconditions.check
|
|
38
37
|
local checkNotNull = ____preconditions.checkNotNull
|
|
39
38
|
local ____effect = require("core.types.effect")
|
|
40
39
|
local Effect = ____effect.Effect
|
|
@@ -44,12 +43,16 @@ local ____unit = require("engine.behaviour.unit")
|
|
|
44
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
45
44
|
local ____arrays = require("utility.arrays")
|
|
46
45
|
local forEach = ____arrays.forEach
|
|
46
|
+
local ____event = require("event")
|
|
47
|
+
local Event = ____event.Event
|
|
47
48
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
49
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
49
50
|
local ____item = require("engine.internal.item")
|
|
50
51
|
local Item = ____item.Item
|
|
51
52
|
local ____destructable = require("core.types.destructable")
|
|
52
53
|
local Destructable = ____destructable.Destructable
|
|
54
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
55
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
53
56
|
local getUnitAbility = BlzGetUnitAbility
|
|
54
57
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
55
58
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -98,12 +101,15 @@ local buffParametersKeys = {
|
|
|
98
101
|
armorIncreaseFactor = true,
|
|
99
102
|
attackSpeedIncreaseFactor = true,
|
|
100
103
|
movementSpeedIncreaseFactor = true,
|
|
104
|
+
evasionProbability = true,
|
|
105
|
+
missProbability = true,
|
|
101
106
|
damageFactor = true,
|
|
102
107
|
receivedDamageFactor = true,
|
|
103
108
|
receivedMagicDamageFactor = true,
|
|
104
109
|
durationIncreaseOnAutoAttack = true,
|
|
105
110
|
maximumDuration = true,
|
|
106
111
|
maximumRemainingDuration = true,
|
|
112
|
+
turnsIntoGhost = true,
|
|
107
113
|
stuns = true,
|
|
108
114
|
ignoresStunImmunity = true,
|
|
109
115
|
providesStunImmunity = true,
|
|
@@ -118,7 +124,8 @@ local buffParametersKeys = {
|
|
|
118
124
|
damageOnExpiration = true,
|
|
119
125
|
healingOnExpiration = true,
|
|
120
126
|
killsOnExpiration = true,
|
|
121
|
-
explodesOnExpiration = true
|
|
127
|
+
explodesOnExpiration = true,
|
|
128
|
+
abilityCooldownFactor = true
|
|
122
129
|
}
|
|
123
130
|
local function resolveEnumValue(ability, level, value)
|
|
124
131
|
if value == nil or type(value) == "number" then
|
|
@@ -169,6 +176,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
169
176
|
end
|
|
170
177
|
end
|
|
171
178
|
local buffBooleanParameters = {
|
|
179
|
+
"turnsIntoGhost",
|
|
172
180
|
"stuns",
|
|
173
181
|
"ignoresStunImmunity",
|
|
174
182
|
"disablesAutoAttack",
|
|
@@ -180,6 +188,7 @@ local buffNumberParameters = {
|
|
|
180
188
|
"durationIncreaseOnAutoAttack",
|
|
181
189
|
"attackSpeedIncreaseFactor",
|
|
182
190
|
"movementSpeedIncreaseFactor",
|
|
191
|
+
"evasionProbability",
|
|
183
192
|
"armorIncrease",
|
|
184
193
|
"damageFactor",
|
|
185
194
|
"receivedDamageFactor",
|
|
@@ -193,7 +202,8 @@ local buffNumberParameters = {
|
|
|
193
202
|
"healingPerInterval",
|
|
194
203
|
"healingOverDuration",
|
|
195
204
|
"damageOnExpiration",
|
|
196
|
-
"healingOnExpiration"
|
|
205
|
+
"healingOnExpiration",
|
|
206
|
+
"abilityCooldownFactor"
|
|
197
207
|
}
|
|
198
208
|
local unsuccessfulApplicationMarker = {}
|
|
199
209
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -220,7 +230,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
220
230
|
return checkNotNull(firstNativeBuffTypeId)
|
|
221
231
|
end
|
|
222
232
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
223
|
-
if buff[
|
|
233
|
+
if buff[104] == uniqueGroup then
|
|
224
234
|
buff:destroy()
|
|
225
235
|
end
|
|
226
236
|
end
|
|
@@ -228,17 +238,17 @@ local function destroyBuff(buff)
|
|
|
228
238
|
buff:destroy()
|
|
229
239
|
end
|
|
230
240
|
local function expireBuff(buff)
|
|
231
|
-
local remainingDamageOverDuration = buff[
|
|
232
|
-
local remainingHealingOverDuration = buff[
|
|
241
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
242
|
+
local remainingHealingOverDuration = buff[113] or 0
|
|
233
243
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
234
244
|
buff:flashSpecialEffect()
|
|
235
245
|
if remainingDamageOverDuration ~= 0 then
|
|
236
|
-
(buff[
|
|
237
|
-
buff[
|
|
246
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
247
|
+
buff[113] = nil
|
|
238
248
|
end
|
|
239
249
|
if remainingHealingOverDuration ~= 0 then
|
|
240
|
-
(buff[
|
|
241
|
-
buff[
|
|
250
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
251
|
+
buff[118] = nil
|
|
242
252
|
end
|
|
243
253
|
end
|
|
244
254
|
Timer:run(destroyBuff, buff)
|
|
@@ -246,56 +256,58 @@ local function expireBuff(buff)
|
|
|
246
256
|
end
|
|
247
257
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
248
258
|
buffDamageIntervalTimerCallback(buff)
|
|
249
|
-
local timer = buff[
|
|
250
|
-
local damageInterval = buff[
|
|
259
|
+
local timer = buff[114]
|
|
260
|
+
local damageInterval = buff[112]
|
|
251
261
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
252
262
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
253
263
|
end
|
|
254
264
|
end
|
|
255
265
|
buffDamageIntervalTimerCallback = function(buff)
|
|
256
266
|
buff:flashSpecialEffect()
|
|
257
|
-
local source = buff[
|
|
258
|
-
local remainingDamageOverDuration = buff[
|
|
267
|
+
local source = buff[102] or buff[101]
|
|
268
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
259
269
|
if remainingDamageOverDuration ~= 0 then
|
|
260
|
-
local damageInterval = buff[
|
|
270
|
+
local damageInterval = buff[112] or 0
|
|
261
271
|
if damageInterval ~= 0 then
|
|
262
272
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
263
|
-
source:damageTarget(buff[
|
|
264
|
-
buff[
|
|
273
|
+
source:damageTarget(buff[101], damage)
|
|
274
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
265
275
|
end
|
|
266
276
|
end
|
|
267
|
-
local damagePerInterval = buff[
|
|
277
|
+
local damagePerInterval = buff[111] or 0
|
|
268
278
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
269
|
-
source:damageTarget(buff[
|
|
279
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
270
280
|
end
|
|
271
281
|
end
|
|
272
282
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
273
283
|
buffHealingIntervalTimerCallback(buff)
|
|
274
|
-
local timer = buff[
|
|
275
|
-
local healingInterval = buff[
|
|
284
|
+
local timer = buff[119]
|
|
285
|
+
local healingInterval = buff[117]
|
|
276
286
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
277
287
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
278
288
|
end
|
|
279
289
|
end
|
|
280
290
|
buffHealingIntervalTimerCallback = function(buff)
|
|
281
|
-
if buff[
|
|
291
|
+
if buff[117] ~= buff[112] then
|
|
282
292
|
buff:flashSpecialEffect()
|
|
283
293
|
end
|
|
284
|
-
local source = buff[
|
|
285
|
-
local remainingHealingOverDuration = buff[
|
|
294
|
+
local source = buff[102] or buff[101]
|
|
295
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
286
296
|
if remainingHealingOverDuration ~= 0 then
|
|
287
|
-
local healingInterval = buff[
|
|
297
|
+
local healingInterval = buff[117] or 0
|
|
288
298
|
if healingInterval ~= 0 then
|
|
289
299
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
290
|
-
source:healTarget(buff[
|
|
291
|
-
buff[
|
|
300
|
+
source:healTarget(buff[101], healing)
|
|
301
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
292
302
|
end
|
|
293
303
|
end
|
|
294
|
-
local healingPerInterval = buff[
|
|
304
|
+
local healingPerInterval = buff[116] or 0
|
|
295
305
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
296
|
-
source:healTarget(buff[
|
|
306
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
297
307
|
end
|
|
298
308
|
end
|
|
309
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
310
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
299
311
|
____exports.Buff = __TS__Class()
|
|
300
312
|
local Buff = ____exports.Buff
|
|
301
313
|
Buff.name = "Buff"
|
|
@@ -304,7 +316,8 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
304
316
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
305
317
|
self._unit = _unit
|
|
306
318
|
self.parameters = nil
|
|
307
|
-
self[100] =
|
|
319
|
+
self[100] = 0
|
|
320
|
+
self[101] = _unit
|
|
308
321
|
local typeId
|
|
309
322
|
local polarity
|
|
310
323
|
local resistanceType
|
|
@@ -313,7 +326,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
313
326
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
314
327
|
polarity = resistanceTypeOrPolarity
|
|
315
328
|
resistanceType = abilityOrParametersOrResistanceType
|
|
316
|
-
if __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
329
|
+
if __TS__InstanceOf(parametersOrAbility, Ability) or parametersOrAbility == nil then
|
|
317
330
|
ability = parametersOrAbility
|
|
318
331
|
else
|
|
319
332
|
ability = nil
|
|
@@ -323,7 +336,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
323
336
|
typeId = typeIdOrTypeIds
|
|
324
337
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
325
338
|
resistanceType = resistanceTypeOrPolarity
|
|
326
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
339
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) or abilityOrParametersOrResistanceType == nil then
|
|
327
340
|
ability = abilityOrParametersOrResistanceType
|
|
328
341
|
parameters = parametersOrAbility
|
|
329
342
|
else
|
|
@@ -332,7 +345,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
332
345
|
end
|
|
333
346
|
end
|
|
334
347
|
self.typeId = typeId
|
|
335
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
348
|
+
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
336
349
|
parameters = ability
|
|
337
350
|
ability = nil
|
|
338
351
|
end
|
|
@@ -360,14 +373,19 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
360
373
|
end
|
|
361
374
|
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
362
375
|
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
376
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
377
|
+
if missProbability ~= nil then
|
|
378
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
379
|
+
self[142] = missProbability
|
|
380
|
+
end
|
|
363
381
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
364
382
|
if buffByTypeId == nil then
|
|
365
383
|
buffByTypeId = {}
|
|
366
384
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
367
385
|
end
|
|
368
|
-
local
|
|
369
|
-
if
|
|
370
|
-
|
|
386
|
+
local ____opt_15 = buffByTypeId[typeId]
|
|
387
|
+
if ____opt_15 ~= nil then
|
|
388
|
+
____opt_15:destroy()
|
|
371
389
|
end
|
|
372
390
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
373
391
|
if uniqueGroup ~= nil then
|
|
@@ -381,13 +399,16 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
381
399
|
level,
|
|
382
400
|
duration,
|
|
383
401
|
spellStealPriority,
|
|
384
|
-
learnLevelMinimum
|
|
402
|
+
learnLevelMinimum,
|
|
403
|
+
missProbability
|
|
385
404
|
) then
|
|
405
|
+
self[100] = 1
|
|
386
406
|
UnitBehavior.prototype.destroy(self)
|
|
387
407
|
error(unsuccessfulApplicationMarker, 0)
|
|
388
408
|
end
|
|
389
409
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
390
410
|
if handle == nil then
|
|
411
|
+
self[100] = 1
|
|
391
412
|
UnitBehavior.prototype.destroy(self)
|
|
392
413
|
error(unsuccessfulApplicationMarker, 0)
|
|
393
414
|
end
|
|
@@ -396,20 +417,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
396
417
|
self._level = level
|
|
397
418
|
self._spellStealPriority = spellStealPriority
|
|
398
419
|
self._learnLevelMinimum = learnLevelMinimum
|
|
399
|
-
self[
|
|
400
|
-
self[
|
|
401
|
-
self[
|
|
402
|
-
self[
|
|
403
|
-
self[
|
|
420
|
+
self[102] = source
|
|
421
|
+
self[103] = duration or 0
|
|
422
|
+
self[104] = uniqueGroup
|
|
423
|
+
self[105] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
424
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
404
425
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
405
426
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
406
|
-
local
|
|
407
|
-
local
|
|
408
|
-
local
|
|
409
|
-
if
|
|
410
|
-
|
|
427
|
+
local ____ability_24 = ability
|
|
428
|
+
local ____level_25 = level
|
|
429
|
+
local ____temp_23 = parameters and parameters[buffBooleanParameter]
|
|
430
|
+
if ____temp_23 == nil then
|
|
431
|
+
____temp_23 = defaultParameters[buffBooleanParameter]
|
|
411
432
|
end
|
|
412
|
-
if resolveBooleanValue(
|
|
433
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
413
434
|
self[buffBooleanParameter] = true
|
|
414
435
|
end
|
|
415
436
|
end
|
|
@@ -425,11 +446,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
425
446
|
end
|
|
426
447
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
427
448
|
if maximumDuration ~= nil then
|
|
428
|
-
self[
|
|
449
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
429
450
|
end
|
|
430
451
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
431
452
|
if maximumRemainingDuration ~= nil then
|
|
432
|
-
self[
|
|
453
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
433
454
|
end
|
|
434
455
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
435
456
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -487,29 +508,34 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
487
508
|
self._timer = timer
|
|
488
509
|
end
|
|
489
510
|
self:onCreate()
|
|
511
|
+
self[100] = 1
|
|
512
|
+
Event.invoke(buffCreatedEvent, self)
|
|
490
513
|
end
|
|
491
|
-
function Buff.prototype.
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
514
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
515
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
516
|
+
local abilityCooldownModifier = self[144]
|
|
517
|
+
if abilityCooldownModifier then
|
|
518
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
519
|
+
end
|
|
520
|
+
end
|
|
495
521
|
end
|
|
496
|
-
function Buff.prototype.
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
522
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
523
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
524
|
+
local abilityCooldownModifier = self[144]
|
|
525
|
+
if abilityCooldownModifier then
|
|
526
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
527
|
+
end
|
|
501
528
|
end
|
|
502
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
503
529
|
end
|
|
504
530
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
505
531
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
506
|
-
Effect:flash(self[
|
|
532
|
+
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
507
533
|
else
|
|
508
534
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
509
535
|
local ____Effect_40 = Effect
|
|
510
536
|
local ____Effect_flash_41 = Effect.flash
|
|
511
537
|
local ____array_39 = __TS__SparseArrayNew(
|
|
512
|
-
self[
|
|
538
|
+
self[105],
|
|
513
539
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
514
540
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
515
541
|
)
|
|
@@ -531,7 +557,7 @@ function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
|
531
557
|
local ____Effect_44 = Effect
|
|
532
558
|
local ____Effect_flash_45 = Effect.flash
|
|
533
559
|
local ____array_43 = __TS__SparseArrayNew(
|
|
534
|
-
self[
|
|
560
|
+
self[106],
|
|
535
561
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
536
562
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
537
563
|
)
|
|
@@ -550,20 +576,22 @@ end
|
|
|
550
576
|
function Buff.prototype.onCreate(self)
|
|
551
577
|
end
|
|
552
578
|
function Buff.prototype.onDestroy(self)
|
|
579
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
580
|
+
self[100] = 2
|
|
553
581
|
local unit = self._unit
|
|
554
582
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
555
583
|
removeBuff(unit.handle, self.typeId)
|
|
556
584
|
end
|
|
557
585
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
558
|
-
local healingIntervalTimer = self[
|
|
586
|
+
local healingIntervalTimer = self[119]
|
|
559
587
|
if healingIntervalTimer ~= nil then
|
|
560
588
|
healingIntervalTimer:destroy()
|
|
561
|
-
self[
|
|
589
|
+
self[119] = nil
|
|
562
590
|
end
|
|
563
|
-
local damageIntervalTimer = self[
|
|
591
|
+
local damageIntervalTimer = self[114]
|
|
564
592
|
if damageIntervalTimer ~= nil then
|
|
565
593
|
damageIntervalTimer:destroy()
|
|
566
|
-
self[
|
|
594
|
+
self[114] = nil
|
|
567
595
|
end
|
|
568
596
|
if self._timer ~= nil then
|
|
569
597
|
self._timer:destroy()
|
|
@@ -573,25 +601,34 @@ function Buff.prototype.onDestroy(self)
|
|
|
573
601
|
behavior:destroy()
|
|
574
602
|
end
|
|
575
603
|
end
|
|
576
|
-
|
|
604
|
+
local previousAbilityCooldownModifier = self[144]
|
|
605
|
+
if previousAbilityCooldownModifier then
|
|
606
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
607
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
608
|
+
end
|
|
609
|
+
end
|
|
610
|
+
if self[139] then
|
|
611
|
+
unit:decrementInvulnerabilityCounter()
|
|
612
|
+
end
|
|
613
|
+
if self[138] then
|
|
577
614
|
unit:decrementDisableAutoAttackCounter()
|
|
578
615
|
end
|
|
579
|
-
if self[
|
|
580
|
-
if self[
|
|
581
|
-
unit:
|
|
616
|
+
if self[136] then
|
|
617
|
+
if self[137] then
|
|
618
|
+
unit:decrementForceStunCounter()
|
|
582
619
|
end
|
|
583
620
|
unit:decrementStunCounter()
|
|
584
621
|
end
|
|
622
|
+
if self[135] then
|
|
623
|
+
unit:decrementGhostCounter()
|
|
624
|
+
end
|
|
585
625
|
if self._abilityTypeIds ~= nil then
|
|
586
626
|
for abilityTypeId in pairs(self._abilityTypeIds) do
|
|
587
627
|
unit:removeAbility(abilityTypeId)
|
|
588
628
|
end
|
|
589
629
|
end
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
593
|
-
end
|
|
594
|
-
end
|
|
630
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
631
|
+
self[100] = 3
|
|
595
632
|
return UnitBehavior.prototype.onDestroy(self)
|
|
596
633
|
end
|
|
597
634
|
function Buff.apply(self, ...)
|
|
@@ -628,72 +665,72 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
628
665
|
end
|
|
629
666
|
function Buff.prototype.onExpiration(self)
|
|
630
667
|
local unit = self.unit
|
|
631
|
-
if self[119] ~= nil then
|
|
632
|
-
(self[101] or unit):damageTarget(unit, self[119] or 0)
|
|
633
|
-
end
|
|
634
668
|
if self[120] ~= nil then
|
|
635
|
-
(self[
|
|
669
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
636
670
|
end
|
|
637
|
-
if self[
|
|
671
|
+
if self[121] ~= nil then
|
|
672
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
673
|
+
end
|
|
674
|
+
if self[141] then
|
|
638
675
|
unit:explode()
|
|
639
|
-
elseif self[
|
|
676
|
+
elseif self[140] then
|
|
640
677
|
unit:kill()
|
|
641
678
|
end
|
|
642
679
|
end
|
|
643
680
|
function Buff.prototype.onDeath(self, source)
|
|
644
681
|
local unit = self.unit
|
|
645
|
-
if self[
|
|
682
|
+
if self[122] ~= nil then
|
|
646
683
|
damageArea(
|
|
647
|
-
self[
|
|
648
|
-
self[
|
|
684
|
+
self[102] or unit,
|
|
685
|
+
self[122],
|
|
649
686
|
unit.x,
|
|
650
687
|
unit.y,
|
|
688
|
+
self[124] or 0,
|
|
651
689
|
self[123] or 0,
|
|
652
|
-
self[
|
|
690
|
+
self[126] or 0,
|
|
653
691
|
self[125] or 0,
|
|
654
|
-
self[
|
|
655
|
-
self[127] or 0
|
|
656
|
-
self[126] or 0
|
|
692
|
+
self[128] or 0,
|
|
693
|
+
self[127] or 0
|
|
657
694
|
)
|
|
658
695
|
end
|
|
659
696
|
end
|
|
660
697
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
661
698
|
if event.isAttack then
|
|
662
|
-
if self[
|
|
663
|
-
local durationIncrease = self[
|
|
664
|
-
local maximumDuration = self[
|
|
699
|
+
if self[107] ~= nil then
|
|
700
|
+
local durationIncrease = self[107]
|
|
701
|
+
local maximumDuration = self[108] or 0
|
|
665
702
|
if maximumDuration > 0 then
|
|
666
703
|
durationIncrease = min(
|
|
667
704
|
durationIncrease,
|
|
668
|
-
max(0, maximumDuration - self[
|
|
705
|
+
max(0, maximumDuration - self[103])
|
|
669
706
|
)
|
|
670
707
|
end
|
|
671
708
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
672
|
-
local maximumRemainingDuration = self[
|
|
709
|
+
local maximumRemainingDuration = self[109] or 0
|
|
673
710
|
if maximumRemainingDuration > 0 then
|
|
674
711
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
675
712
|
end
|
|
676
713
|
self.remainingDuration = remainingDuration
|
|
677
714
|
end
|
|
678
|
-
local autoAttackCount = (self[
|
|
679
|
-
self[
|
|
680
|
-
if autoAttackCount == self[
|
|
715
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
716
|
+
self[129] = autoAttackCount
|
|
717
|
+
if autoAttackCount == self[130] then
|
|
681
718
|
self:destroy()
|
|
682
719
|
end
|
|
683
720
|
end
|
|
684
721
|
if event.originalAmount ~= 0 then
|
|
685
|
-
local damageDealtEventCount = (self[
|
|
686
|
-
self[
|
|
687
|
-
if damageDealtEventCount == self[
|
|
722
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
723
|
+
self[131] = damageDealtEventCount
|
|
724
|
+
if damageDealtEventCount == self[132] then
|
|
688
725
|
self:destroy()
|
|
689
726
|
end
|
|
690
727
|
end
|
|
691
728
|
end
|
|
692
729
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
693
730
|
if event.originalAmount ~= 0 then
|
|
694
|
-
local damageReceivedEventCount = (self[
|
|
695
|
-
self[
|
|
696
|
-
if damageReceivedEventCount == self[
|
|
731
|
+
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
732
|
+
self[133] = damageReceivedEventCount
|
|
733
|
+
if damageReceivedEventCount == self[134] then
|
|
697
734
|
self:destroy()
|
|
698
735
|
end
|
|
699
736
|
end
|
|
@@ -703,7 +740,7 @@ __TS__SetDescriptor(
|
|
|
703
740
|
Buff.prototype,
|
|
704
741
|
"source",
|
|
705
742
|
{get = function(self)
|
|
706
|
-
return self[
|
|
743
|
+
return self[102] or self._unit
|
|
707
744
|
end},
|
|
708
745
|
true
|
|
709
746
|
)
|
|
@@ -720,13 +757,13 @@ __TS__SetDescriptor(
|
|
|
720
757
|
"remainingDamageOverDuration",
|
|
721
758
|
{
|
|
722
759
|
get = function(self)
|
|
723
|
-
return self[
|
|
760
|
+
return self[113] or 0
|
|
724
761
|
end,
|
|
725
762
|
set = function(self, remainingDamageOverDuration)
|
|
726
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
727
|
-
self[
|
|
728
|
-
local damageOverDuration = (self[
|
|
729
|
-
self[
|
|
763
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[113] or 0)
|
|
764
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
765
|
+
local damageOverDuration = (self[110] or 0) + remainingDamageOverDurationDelta
|
|
766
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
730
767
|
end
|
|
731
768
|
},
|
|
732
769
|
true
|
|
@@ -736,13 +773,13 @@ __TS__SetDescriptor(
|
|
|
736
773
|
"damageOverDuration",
|
|
737
774
|
{
|
|
738
775
|
get = function(self)
|
|
739
|
-
return self[
|
|
776
|
+
return self[110] or 0
|
|
740
777
|
end,
|
|
741
778
|
set = function(self, damageOverDuration)
|
|
742
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
743
|
-
self[
|
|
744
|
-
local remainingDamageOverDuration = (self[
|
|
745
|
-
self[
|
|
779
|
+
local damageOverDurationDelta = damageOverDuration - (self[110] or 0)
|
|
780
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
781
|
+
local remainingDamageOverDuration = (self[113] or 0) + damageOverDurationDelta
|
|
782
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
746
783
|
end
|
|
747
784
|
},
|
|
748
785
|
true
|
|
@@ -752,10 +789,10 @@ __TS__SetDescriptor(
|
|
|
752
789
|
"damagePerInterval",
|
|
753
790
|
{
|
|
754
791
|
get = function(self)
|
|
755
|
-
return self[
|
|
792
|
+
return self[111] or 0
|
|
756
793
|
end,
|
|
757
794
|
set = function(self, damagePerInterval)
|
|
758
|
-
self[
|
|
795
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
759
796
|
end
|
|
760
797
|
},
|
|
761
798
|
true
|
|
@@ -765,25 +802,25 @@ __TS__SetDescriptor(
|
|
|
765
802
|
"damageInterval",
|
|
766
803
|
{
|
|
767
804
|
get = function(self)
|
|
768
|
-
return self[
|
|
805
|
+
return self[112] or 0
|
|
769
806
|
end,
|
|
770
807
|
set = function(self, damageInterval)
|
|
771
808
|
if damageInterval <= 0 then
|
|
772
|
-
self[
|
|
773
|
-
local timer = self[
|
|
809
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
810
|
+
local timer = self[114]
|
|
774
811
|
if timer ~= nil then
|
|
775
812
|
timer:destroy()
|
|
776
|
-
self[
|
|
813
|
+
self[114] = nil
|
|
777
814
|
end
|
|
778
815
|
return
|
|
779
816
|
end
|
|
780
|
-
self[
|
|
817
|
+
self[112] = damageInterval
|
|
781
818
|
local ____opt_48 = self._timer
|
|
782
819
|
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
783
|
-
local timer = self[
|
|
820
|
+
local timer = self[114]
|
|
784
821
|
if timer == nil then
|
|
785
822
|
timer = Timer:create()
|
|
786
|
-
self[
|
|
823
|
+
self[114] = timer
|
|
787
824
|
end
|
|
788
825
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
789
826
|
if initialDelay == damageInterval then
|
|
@@ -800,13 +837,13 @@ __TS__SetDescriptor(
|
|
|
800
837
|
"remainingHealingOverDuration",
|
|
801
838
|
{
|
|
802
839
|
get = function(self)
|
|
803
|
-
return self[
|
|
840
|
+
return self[118] or 0
|
|
804
841
|
end,
|
|
805
842
|
set = function(self, remainingHealingOverDuration)
|
|
806
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
807
|
-
self[
|
|
808
|
-
local healingOverDuration = (self[
|
|
809
|
-
self[
|
|
843
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[118] or 0)
|
|
844
|
+
self[113] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
845
|
+
local healingOverDuration = (self[115] or 0) + remainingHealingOverDurationDelta
|
|
846
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
810
847
|
end
|
|
811
848
|
},
|
|
812
849
|
true
|
|
@@ -816,13 +853,13 @@ __TS__SetDescriptor(
|
|
|
816
853
|
"healingOverDuration",
|
|
817
854
|
{
|
|
818
855
|
get = function(self)
|
|
819
|
-
return self[
|
|
856
|
+
return self[115] or 0
|
|
820
857
|
end,
|
|
821
858
|
set = function(self, healingOverDuration)
|
|
822
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
823
|
-
self[
|
|
824
|
-
local remainingHealingOverDuration = (self[
|
|
825
|
-
self[
|
|
859
|
+
local healingOverDurationDelta = healingOverDuration - (self[115] or 0)
|
|
860
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
861
|
+
local remainingHealingOverDuration = (self[118] or 0) + healingOverDurationDelta
|
|
862
|
+
self[118] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
826
863
|
end
|
|
827
864
|
},
|
|
828
865
|
true
|
|
@@ -832,10 +869,10 @@ __TS__SetDescriptor(
|
|
|
832
869
|
"healingPerInterval",
|
|
833
870
|
{
|
|
834
871
|
get = function(self)
|
|
835
|
-
return self[
|
|
872
|
+
return self[116] or 0
|
|
836
873
|
end,
|
|
837
874
|
set = function(self, healingPerInterval)
|
|
838
|
-
self[
|
|
875
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
839
876
|
end
|
|
840
877
|
},
|
|
841
878
|
true
|
|
@@ -845,25 +882,25 @@ __TS__SetDescriptor(
|
|
|
845
882
|
"healingInterval",
|
|
846
883
|
{
|
|
847
884
|
get = function(self)
|
|
848
|
-
return self[
|
|
885
|
+
return self[117] or 0
|
|
849
886
|
end,
|
|
850
887
|
set = function(self, healingInterval)
|
|
851
888
|
if healingInterval <= 0 then
|
|
852
|
-
self[
|
|
853
|
-
local timer = self[
|
|
889
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
890
|
+
local timer = self[119]
|
|
854
891
|
if timer ~= nil then
|
|
855
892
|
timer:destroy()
|
|
856
|
-
self[
|
|
893
|
+
self[119] = nil
|
|
857
894
|
end
|
|
858
895
|
return
|
|
859
896
|
end
|
|
860
|
-
self[
|
|
897
|
+
self[117] = healingInterval
|
|
861
898
|
local ____opt_50 = self._timer
|
|
862
899
|
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
863
|
-
local timer = self[
|
|
900
|
+
local timer = self[119]
|
|
864
901
|
if timer == nil then
|
|
865
902
|
timer = Timer:create()
|
|
866
|
-
self[
|
|
903
|
+
self[119] = timer
|
|
867
904
|
end
|
|
868
905
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
869
906
|
if initialDelay == healingInterval then
|
|
@@ -880,10 +917,10 @@ __TS__SetDescriptor(
|
|
|
880
917
|
"damageOnExpiration",
|
|
881
918
|
{
|
|
882
919
|
get = function(self)
|
|
883
|
-
return self[
|
|
920
|
+
return self[120] or 0
|
|
884
921
|
end,
|
|
885
922
|
set = function(self, damageOnExpiration)
|
|
886
|
-
self[
|
|
923
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
887
924
|
end
|
|
888
925
|
},
|
|
889
926
|
true
|
|
@@ -893,10 +930,10 @@ __TS__SetDescriptor(
|
|
|
893
930
|
"healingOnExpiration",
|
|
894
931
|
{
|
|
895
932
|
get = function(self)
|
|
896
|
-
return self[
|
|
933
|
+
return self[121] or 0
|
|
897
934
|
end,
|
|
898
935
|
set = function(self, healingOnExpiration)
|
|
899
|
-
self[
|
|
936
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
900
937
|
end
|
|
901
938
|
},
|
|
902
939
|
true
|
|
@@ -940,30 +977,53 @@ __TS__SetDescriptor(
|
|
|
940
977
|
},
|
|
941
978
|
true
|
|
942
979
|
)
|
|
980
|
+
__TS__SetDescriptor(
|
|
981
|
+
Buff.prototype,
|
|
982
|
+
"turnsIntoGhost",
|
|
983
|
+
{
|
|
984
|
+
get = function(self)
|
|
985
|
+
local ____self__135_52 = self[135]
|
|
986
|
+
if ____self__135_52 == nil then
|
|
987
|
+
____self__135_52 = false
|
|
988
|
+
end
|
|
989
|
+
return ____self__135_52
|
|
990
|
+
end,
|
|
991
|
+
set = function(self, turnsIntoGhost)
|
|
992
|
+
if not turnsIntoGhost and self[135] then
|
|
993
|
+
self.object:decrementGhostCounter()
|
|
994
|
+
self[135] = nil
|
|
995
|
+
elseif turnsIntoGhost and not self[135] then
|
|
996
|
+
self.object:incrementGhostCounter()
|
|
997
|
+
self[135] = true
|
|
998
|
+
end
|
|
999
|
+
end
|
|
1000
|
+
},
|
|
1001
|
+
true
|
|
1002
|
+
)
|
|
943
1003
|
__TS__SetDescriptor(
|
|
944
1004
|
Buff.prototype,
|
|
945
1005
|
"stuns",
|
|
946
1006
|
{
|
|
947
1007
|
get = function(self)
|
|
948
|
-
local
|
|
949
|
-
if
|
|
950
|
-
|
|
1008
|
+
local ____self__136_53 = self[136]
|
|
1009
|
+
if ____self__136_53 == nil then
|
|
1010
|
+
____self__136_53 = false
|
|
951
1011
|
end
|
|
952
|
-
return
|
|
1012
|
+
return ____self__136_53
|
|
953
1013
|
end,
|
|
954
1014
|
set = function(self, stuns)
|
|
955
|
-
if not stuns and self[
|
|
956
|
-
if self[
|
|
957
|
-
self.object:
|
|
1015
|
+
if not stuns and self[136] then
|
|
1016
|
+
if self[137] then
|
|
1017
|
+
self.object:decrementForceStunCounter()
|
|
958
1018
|
end
|
|
959
1019
|
self.object:decrementStunCounter()
|
|
960
|
-
self[
|
|
961
|
-
elseif stuns and not self[
|
|
962
|
-
if self[
|
|
963
|
-
self.object:
|
|
1020
|
+
self[136] = nil
|
|
1021
|
+
elseif stuns and not self[136] then
|
|
1022
|
+
if self[137] then
|
|
1023
|
+
self.object:incrementForceStunCounter()
|
|
964
1024
|
end
|
|
965
1025
|
self.object:incrementStunCounter()
|
|
966
|
-
self[
|
|
1026
|
+
self[136] = true
|
|
967
1027
|
end
|
|
968
1028
|
end
|
|
969
1029
|
},
|
|
@@ -974,23 +1034,23 @@ __TS__SetDescriptor(
|
|
|
974
1034
|
"ignoresStunImmunity",
|
|
975
1035
|
{
|
|
976
1036
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
1037
|
+
local ____self__137_54 = self[137]
|
|
1038
|
+
if ____self__137_54 == nil then
|
|
1039
|
+
____self__137_54 = false
|
|
980
1040
|
end
|
|
981
|
-
return
|
|
1041
|
+
return ____self__137_54
|
|
982
1042
|
end,
|
|
983
1043
|
set = function(self, ignoresStunImmunity)
|
|
984
|
-
if not ignoresStunImmunity and self[
|
|
985
|
-
if self[
|
|
986
|
-
self.object:
|
|
1044
|
+
if not ignoresStunImmunity and self[137] then
|
|
1045
|
+
if self[136] then
|
|
1046
|
+
self.object:decrementForceStunCounter()
|
|
987
1047
|
end
|
|
988
|
-
self[
|
|
989
|
-
elseif ignoresStunImmunity and not self[
|
|
990
|
-
if self[
|
|
991
|
-
self.object:
|
|
1048
|
+
self[137] = nil
|
|
1049
|
+
elseif ignoresStunImmunity and not self[137] then
|
|
1050
|
+
if self[136] then
|
|
1051
|
+
self.object:incrementForceStunCounter()
|
|
992
1052
|
end
|
|
993
|
-
self[
|
|
1053
|
+
self[137] = true
|
|
994
1054
|
end
|
|
995
1055
|
end
|
|
996
1056
|
},
|
|
@@ -1001,19 +1061,19 @@ __TS__SetDescriptor(
|
|
|
1001
1061
|
"disablesAutoAttack",
|
|
1002
1062
|
{
|
|
1003
1063
|
get = function(self)
|
|
1004
|
-
local
|
|
1005
|
-
if
|
|
1006
|
-
|
|
1064
|
+
local ____self__138_55 = self[138]
|
|
1065
|
+
if ____self__138_55 == nil then
|
|
1066
|
+
____self__138_55 = false
|
|
1007
1067
|
end
|
|
1008
|
-
return
|
|
1068
|
+
return ____self__138_55
|
|
1009
1069
|
end,
|
|
1010
1070
|
set = function(self, disablesAutoAttack)
|
|
1011
|
-
if not disablesAutoAttack and self[
|
|
1071
|
+
if not disablesAutoAttack and self[138] then
|
|
1012
1072
|
self.object:decrementDisableAutoAttackCounter()
|
|
1013
|
-
self[
|
|
1014
|
-
elseif disablesAutoAttack and not self[
|
|
1073
|
+
self[138] = nil
|
|
1074
|
+
elseif disablesAutoAttack and not self[138] then
|
|
1015
1075
|
self.object:incrementDisableAutoAttackCounter()
|
|
1016
|
-
self[
|
|
1076
|
+
self[138] = true
|
|
1017
1077
|
end
|
|
1018
1078
|
end
|
|
1019
1079
|
},
|
|
@@ -1024,19 +1084,19 @@ __TS__SetDescriptor(
|
|
|
1024
1084
|
"providesInvulnerability",
|
|
1025
1085
|
{
|
|
1026
1086
|
get = function(self)
|
|
1027
|
-
local
|
|
1028
|
-
if
|
|
1029
|
-
|
|
1087
|
+
local ____self__139_56 = self[139]
|
|
1088
|
+
if ____self__139_56 == nil then
|
|
1089
|
+
____self__139_56 = false
|
|
1030
1090
|
end
|
|
1031
|
-
return
|
|
1091
|
+
return ____self__139_56
|
|
1032
1092
|
end,
|
|
1033
1093
|
set = function(self, providesInvulnerability)
|
|
1034
|
-
if not providesInvulnerability and self[
|
|
1094
|
+
if not providesInvulnerability and self[139] then
|
|
1035
1095
|
self.object:decrementInvulnerabilityCounter()
|
|
1036
|
-
self[
|
|
1037
|
-
elseif providesInvulnerability and not self[
|
|
1096
|
+
self[139] = nil
|
|
1097
|
+
elseif providesInvulnerability and not self[139] then
|
|
1038
1098
|
self.object:incrementInvulnerabilityCounter()
|
|
1039
|
-
self[
|
|
1099
|
+
self[139] = true
|
|
1040
1100
|
end
|
|
1041
1101
|
end
|
|
1042
1102
|
},
|
|
@@ -1047,17 +1107,17 @@ __TS__SetDescriptor(
|
|
|
1047
1107
|
"killsOnExpiration",
|
|
1048
1108
|
{
|
|
1049
1109
|
get = function(self)
|
|
1050
|
-
local
|
|
1051
|
-
if
|
|
1052
|
-
|
|
1110
|
+
local ____self__140_57 = self[140]
|
|
1111
|
+
if ____self__140_57 == nil then
|
|
1112
|
+
____self__140_57 = false
|
|
1053
1113
|
end
|
|
1054
|
-
return
|
|
1114
|
+
return ____self__140_57
|
|
1055
1115
|
end,
|
|
1056
1116
|
set = function(self, killsOnExpiration)
|
|
1057
|
-
if not killsOnExpiration and self[
|
|
1058
|
-
self[
|
|
1059
|
-
elseif killsOnExpiration and not self[
|
|
1060
|
-
self[
|
|
1117
|
+
if not killsOnExpiration and self[140] then
|
|
1118
|
+
self[140] = nil
|
|
1119
|
+
elseif killsOnExpiration and not self[140] then
|
|
1120
|
+
self[140] = true
|
|
1061
1121
|
end
|
|
1062
1122
|
end
|
|
1063
1123
|
},
|
|
@@ -1068,17 +1128,17 @@ __TS__SetDescriptor(
|
|
|
1068
1128
|
"explodesOnExpiration",
|
|
1069
1129
|
{
|
|
1070
1130
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1131
|
+
local ____self__141_58 = self[141]
|
|
1132
|
+
if ____self__141_58 == nil then
|
|
1133
|
+
____self__141_58 = false
|
|
1074
1134
|
end
|
|
1075
|
-
return
|
|
1135
|
+
return ____self__141_58
|
|
1076
1136
|
end,
|
|
1077
1137
|
set = function(self, killsOnExpiration)
|
|
1078
|
-
if not killsOnExpiration and self[
|
|
1079
|
-
self[
|
|
1080
|
-
elseif killsOnExpiration and not self[
|
|
1081
|
-
self[
|
|
1138
|
+
if not killsOnExpiration and self[141] then
|
|
1139
|
+
self[141] = nil
|
|
1140
|
+
elseif killsOnExpiration and not self[141] then
|
|
1141
|
+
self[141] = true
|
|
1082
1142
|
end
|
|
1083
1143
|
end
|
|
1084
1144
|
},
|
|
@@ -1089,13 +1149,13 @@ __TS__SetDescriptor(
|
|
|
1089
1149
|
"maximumDamageDealtEventCount",
|
|
1090
1150
|
{
|
|
1091
1151
|
get = function(self)
|
|
1092
|
-
return self[
|
|
1152
|
+
return self[132] or 0
|
|
1093
1153
|
end,
|
|
1094
1154
|
set = function(self, maximumDamageDealtEventCount)
|
|
1095
1155
|
if maximumDamageDealtEventCount == 0 then
|
|
1096
|
-
self[
|
|
1156
|
+
self[132] = nil
|
|
1097
1157
|
else
|
|
1098
|
-
self[
|
|
1158
|
+
self[132] = maximumDamageDealtEventCount
|
|
1099
1159
|
end
|
|
1100
1160
|
end
|
|
1101
1161
|
},
|
|
@@ -1106,13 +1166,13 @@ __TS__SetDescriptor(
|
|
|
1106
1166
|
"maximumDamageReceivedEventCount",
|
|
1107
1167
|
{
|
|
1108
1168
|
get = function(self)
|
|
1109
|
-
return self[
|
|
1169
|
+
return self[134] or 0
|
|
1110
1170
|
end,
|
|
1111
1171
|
set = function(self, maximumDamageReceivedEventCount)
|
|
1112
1172
|
if maximumDamageReceivedEventCount == 0 then
|
|
1113
|
-
self[
|
|
1173
|
+
self[134] = nil
|
|
1114
1174
|
else
|
|
1115
|
-
self[
|
|
1175
|
+
self[134] = maximumDamageReceivedEventCount
|
|
1116
1176
|
end
|
|
1117
1177
|
end
|
|
1118
1178
|
},
|
|
@@ -1123,13 +1183,13 @@ __TS__SetDescriptor(
|
|
|
1123
1183
|
"maximumAutoAttackCount",
|
|
1124
1184
|
{
|
|
1125
1185
|
get = function(self)
|
|
1126
|
-
return self[
|
|
1186
|
+
return self[130] or 0
|
|
1127
1187
|
end,
|
|
1128
1188
|
set = function(self, maximumAutoAttackCount)
|
|
1129
1189
|
if maximumAutoAttackCount == 0 then
|
|
1130
|
-
self[
|
|
1190
|
+
self[130] = nil
|
|
1131
1191
|
else
|
|
1132
|
-
self[
|
|
1192
|
+
self[130] = maximumAutoAttackCount
|
|
1133
1193
|
end
|
|
1134
1194
|
end
|
|
1135
1195
|
},
|
|
@@ -1140,10 +1200,10 @@ __TS__SetDescriptor(
|
|
|
1140
1200
|
"durationIncreaseOnAutoAttack",
|
|
1141
1201
|
{
|
|
1142
1202
|
get = function(self)
|
|
1143
|
-
return self[
|
|
1203
|
+
return self[107] or 0
|
|
1144
1204
|
end,
|
|
1145
1205
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1146
|
-
self[
|
|
1206
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
1147
1207
|
end
|
|
1148
1208
|
},
|
|
1149
1209
|
true
|
|
@@ -1174,11 +1234,24 @@ __TS__SetDescriptor(
|
|
|
1174
1234
|
},
|
|
1175
1235
|
true
|
|
1176
1236
|
)
|
|
1237
|
+
__TS__SetDescriptor(
|
|
1238
|
+
Buff.prototype,
|
|
1239
|
+
"evasionProbability",
|
|
1240
|
+
{
|
|
1241
|
+
get = function(self)
|
|
1242
|
+
return self:getUnitBonus(UnitBonusType.EVASION_PROBABILITY)
|
|
1243
|
+
end,
|
|
1244
|
+
set = function(self, evasionProbability)
|
|
1245
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.EVASION_PROBABILITY, evasionProbability)
|
|
1246
|
+
end
|
|
1247
|
+
},
|
|
1248
|
+
true
|
|
1249
|
+
)
|
|
1177
1250
|
__TS__SetDescriptor(
|
|
1178
1251
|
Buff.prototype,
|
|
1179
1252
|
"duration",
|
|
1180
1253
|
{get = function(self)
|
|
1181
|
-
return self[
|
|
1254
|
+
return self[103]
|
|
1182
1255
|
end},
|
|
1183
1256
|
true
|
|
1184
1257
|
)
|
|
@@ -1187,15 +1260,15 @@ __TS__SetDescriptor(
|
|
|
1187
1260
|
"remainingDuration",
|
|
1188
1261
|
{
|
|
1189
1262
|
get = function(self)
|
|
1190
|
-
local
|
|
1191
|
-
return
|
|
1263
|
+
local ____opt_59 = self._timer
|
|
1264
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1192
1265
|
end,
|
|
1193
1266
|
set = function(self, remainingDuration)
|
|
1194
|
-
local
|
|
1195
|
-
local
|
|
1196
|
-
local remainingDurationDelta =
|
|
1267
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1268
|
+
local ____opt_61 = self._timer
|
|
1269
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1197
1270
|
if remainingDurationDelta ~= 0 then
|
|
1198
|
-
self[
|
|
1271
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1199
1272
|
if remainingDuration <= 0 then
|
|
1200
1273
|
Timer:run(destroyBuff, self)
|
|
1201
1274
|
else
|
|
@@ -1207,7 +1280,8 @@ __TS__SetDescriptor(
|
|
|
1207
1280
|
self._level,
|
|
1208
1281
|
remainingDuration,
|
|
1209
1282
|
self._spellStealPriority,
|
|
1210
|
-
self._learnLevelMinimum
|
|
1283
|
+
self._learnLevelMinimum,
|
|
1284
|
+
self[142]
|
|
1211
1285
|
) then
|
|
1212
1286
|
local timer = self._timer
|
|
1213
1287
|
if timer == nil then
|
|
@@ -1221,10 +1295,38 @@ __TS__SetDescriptor(
|
|
|
1221
1295
|
end
|
|
1222
1296
|
},
|
|
1223
1297
|
true
|
|
1224
|
-
)
|
|
1298
|
+
)
|
|
1299
|
+
__TS__SetDescriptor(
|
|
1300
|
+
Buff.prototype,
|
|
1301
|
+
"abilityCooldownFactor",
|
|
1302
|
+
{
|
|
1303
|
+
get = function(self)
|
|
1304
|
+
return self[143] or 1
|
|
1305
|
+
end,
|
|
1306
|
+
set = function(self, abilityCooldownFactor)
|
|
1307
|
+
local previousAbilityCooldownModifier = self[144]
|
|
1308
|
+
if previousAbilityCooldownModifier then
|
|
1309
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1310
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1311
|
+
end
|
|
1312
|
+
end
|
|
1313
|
+
local function modifier(ability, level, cooldown)
|
|
1314
|
+
return cooldown * abilityCooldownFactor
|
|
1315
|
+
end
|
|
1316
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1317
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1318
|
+
end
|
|
1319
|
+
self[144] = modifier
|
|
1320
|
+
self[143] = abilityCooldownFactor
|
|
1321
|
+
end
|
|
1322
|
+
},
|
|
1323
|
+
true
|
|
1324
|
+
)
|
|
1325
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1326
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1225
1327
|
(function(self)
|
|
1226
1328
|
local function destroyBuffIfNeeded(buff)
|
|
1227
|
-
if getUnitAbility(buff[
|
|
1329
|
+
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
1228
1330
|
buff:destroy()
|
|
1229
1331
|
end
|
|
1230
1332
|
end
|
|
@@ -1275,5 +1377,8 @@ __TS__SetDescriptor(
|
|
|
1275
1377
|
____exports.checkBuffs(target)
|
|
1276
1378
|
end
|
|
1277
1379
|
)
|
|
1380
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1381
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1382
|
+
end)
|
|
1278
1383
|
end)(Buff)
|
|
1279
1384
|
return ____exports
|