warscript 0.0.1-dev.ac556d2 → 0.0.1-dev.aeaf398
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 +16 -0
- package/core/types/player.lua +60 -15
- 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/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- 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 +22 -8
- 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 +14 -4
- package/engine/behaviour/ability.lua +76 -25
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +74 -46
- package/engine/buff.lua +389 -256
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +65 -24
- package/engine/internal/item/ability.lua +82 -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/mechanics/cast-ability.lua +6 -3
- 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/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.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/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +4 -0
- package/engine/internal/unit/bonus.lua +27 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/item.lua +3 -4
- 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 +52 -14
- package/engine/internal/unit.d.ts +43 -24
- package/engine/internal/unit.lua +403 -237
- 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/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -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/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- 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 +28 -2
- package/engine/object-data/entry/destructible-type.lua +155 -0
- 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 +25 -5
- package/engine/object-data/entry/unit-type.lua +258 -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 +8 -5
- package/engine/object-field/ability.lua +8 -4
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +25 -6
- package/engine/object-field.lua +359 -116
- 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 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -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 +6 -0
- package/engine/unit.lua +6 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lua.lua +9 -0
- 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-map.d.ts +26 -0
- package/utility/linked-map.lua +66 -0
- package/utility/linked-set.d.ts +2 -0
- package/utility/linked-set.lua +26 -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/records.lua +20 -1
- 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
|
|
@@ -43,13 +42,22 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
43
42
|
local ____unit = require("engine.behaviour.unit")
|
|
44
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
45
44
|
local ____arrays = require("utility.arrays")
|
|
45
|
+
local emptyArray = ____arrays.emptyArray
|
|
46
46
|
local forEach = ____arrays.forEach
|
|
47
|
+
local ____event = require("event")
|
|
48
|
+
local Event = ____event.Event
|
|
47
49
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
50
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
49
51
|
local ____item = require("engine.internal.item")
|
|
50
52
|
local Item = ____item.Item
|
|
51
53
|
local ____destructable = require("core.types.destructable")
|
|
52
54
|
local Destructable = ____destructable.Destructable
|
|
55
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
56
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
57
|
+
local ____ability = require("engine.behaviour.ability")
|
|
58
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
59
|
+
local ____records = require("utility.records")
|
|
60
|
+
local sortedKeysUnnested = ____records.sortedKeysUnnested
|
|
53
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
54
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
55
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -98,12 +106,16 @@ local buffParametersKeys = {
|
|
|
98
106
|
armorIncreaseFactor = true,
|
|
99
107
|
attackSpeedIncreaseFactor = true,
|
|
100
108
|
movementSpeedIncreaseFactor = true,
|
|
109
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
110
|
+
evasionProbability = true,
|
|
111
|
+
missProbability = true,
|
|
101
112
|
damageFactor = true,
|
|
102
113
|
receivedDamageFactor = true,
|
|
103
114
|
receivedMagicDamageFactor = true,
|
|
104
115
|
durationIncreaseOnAutoAttack = true,
|
|
105
116
|
maximumDuration = true,
|
|
106
117
|
maximumRemainingDuration = true,
|
|
118
|
+
turnsIntoGhost = true,
|
|
107
119
|
stuns = true,
|
|
108
120
|
ignoresStunImmunity = true,
|
|
109
121
|
providesStunImmunity = true,
|
|
@@ -118,7 +130,8 @@ local buffParametersKeys = {
|
|
|
118
130
|
damageOnExpiration = true,
|
|
119
131
|
healingOnExpiration = true,
|
|
120
132
|
killsOnExpiration = true,
|
|
121
|
-
explodesOnExpiration = true
|
|
133
|
+
explodesOnExpiration = true,
|
|
134
|
+
abilityCooldownFactor = true
|
|
122
135
|
}
|
|
123
136
|
local function resolveEnumValue(ability, level, value)
|
|
124
137
|
if value == nil or type(value) == "number" then
|
|
@@ -169,6 +182,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
169
182
|
end
|
|
170
183
|
end
|
|
171
184
|
local buffBooleanParameters = {
|
|
185
|
+
"turnsIntoGhost",
|
|
172
186
|
"stuns",
|
|
173
187
|
"ignoresStunImmunity",
|
|
174
188
|
"disablesAutoAttack",
|
|
@@ -180,6 +194,8 @@ local buffNumberParameters = {
|
|
|
180
194
|
"durationIncreaseOnAutoAttack",
|
|
181
195
|
"attackSpeedIncreaseFactor",
|
|
182
196
|
"movementSpeedIncreaseFactor",
|
|
197
|
+
"manaRegenerationRateIncreaseFactor",
|
|
198
|
+
"evasionProbability",
|
|
183
199
|
"armorIncrease",
|
|
184
200
|
"damageFactor",
|
|
185
201
|
"receivedDamageFactor",
|
|
@@ -193,7 +209,8 @@ local buffNumberParameters = {
|
|
|
193
209
|
"healingPerInterval",
|
|
194
210
|
"healingOverDuration",
|
|
195
211
|
"damageOnExpiration",
|
|
196
|
-
"healingOnExpiration"
|
|
212
|
+
"healingOnExpiration",
|
|
213
|
+
"abilityCooldownFactor"
|
|
197
214
|
}
|
|
198
215
|
local unsuccessfulApplicationMarker = {}
|
|
199
216
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -220,7 +237,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
220
237
|
return checkNotNull(firstNativeBuffTypeId)
|
|
221
238
|
end
|
|
222
239
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
223
|
-
if buff[
|
|
240
|
+
if buff[104] == uniqueGroup then
|
|
224
241
|
buff:destroy()
|
|
225
242
|
end
|
|
226
243
|
end
|
|
@@ -228,17 +245,17 @@ local function destroyBuff(buff)
|
|
|
228
245
|
buff:destroy()
|
|
229
246
|
end
|
|
230
247
|
local function expireBuff(buff)
|
|
231
|
-
local remainingDamageOverDuration = buff[
|
|
232
|
-
local remainingHealingOverDuration = buff[
|
|
248
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
249
|
+
local remainingHealingOverDuration = buff[113] or 0
|
|
233
250
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
234
251
|
buff:flashSpecialEffect()
|
|
235
252
|
if remainingDamageOverDuration ~= 0 then
|
|
236
|
-
(buff[
|
|
237
|
-
buff[
|
|
253
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
254
|
+
buff[113] = nil
|
|
238
255
|
end
|
|
239
256
|
if remainingHealingOverDuration ~= 0 then
|
|
240
|
-
(buff[
|
|
241
|
-
buff[
|
|
257
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
258
|
+
buff[118] = nil
|
|
242
259
|
end
|
|
243
260
|
end
|
|
244
261
|
Timer:run(destroyBuff, buff)
|
|
@@ -246,56 +263,58 @@ local function expireBuff(buff)
|
|
|
246
263
|
end
|
|
247
264
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
248
265
|
buffDamageIntervalTimerCallback(buff)
|
|
249
|
-
local timer = buff[
|
|
250
|
-
local damageInterval = buff[
|
|
266
|
+
local timer = buff[114]
|
|
267
|
+
local damageInterval = buff[112]
|
|
251
268
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
252
269
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
253
270
|
end
|
|
254
271
|
end
|
|
255
272
|
buffDamageIntervalTimerCallback = function(buff)
|
|
256
273
|
buff:flashSpecialEffect()
|
|
257
|
-
local source = buff[
|
|
258
|
-
local remainingDamageOverDuration = buff[
|
|
274
|
+
local source = buff[102] or buff[101]
|
|
275
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
259
276
|
if remainingDamageOverDuration ~= 0 then
|
|
260
|
-
local damageInterval = buff[
|
|
277
|
+
local damageInterval = buff[112] or 0
|
|
261
278
|
if damageInterval ~= 0 then
|
|
262
279
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
263
|
-
source:damageTarget(buff[
|
|
264
|
-
buff[
|
|
280
|
+
source:damageTarget(buff[101], damage)
|
|
281
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
265
282
|
end
|
|
266
283
|
end
|
|
267
|
-
local damagePerInterval = buff[
|
|
284
|
+
local damagePerInterval = buff[111] or 0
|
|
268
285
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
269
|
-
source:damageTarget(buff[
|
|
286
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
270
287
|
end
|
|
271
288
|
end
|
|
272
289
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
273
290
|
buffHealingIntervalTimerCallback(buff)
|
|
274
|
-
local timer = buff[
|
|
275
|
-
local healingInterval = buff[
|
|
291
|
+
local timer = buff[119]
|
|
292
|
+
local healingInterval = buff[117]
|
|
276
293
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
277
294
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
278
295
|
end
|
|
279
296
|
end
|
|
280
297
|
buffHealingIntervalTimerCallback = function(buff)
|
|
281
|
-
if buff[
|
|
298
|
+
if buff[117] ~= buff[112] then
|
|
282
299
|
buff:flashSpecialEffect()
|
|
283
300
|
end
|
|
284
|
-
local source = buff[
|
|
285
|
-
local remainingHealingOverDuration = buff[
|
|
301
|
+
local source = buff[102] or buff[101]
|
|
302
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
286
303
|
if remainingHealingOverDuration ~= 0 then
|
|
287
|
-
local healingInterval = buff[
|
|
304
|
+
local healingInterval = buff[117] or 0
|
|
288
305
|
if healingInterval ~= 0 then
|
|
289
306
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
290
|
-
source:healTarget(buff[
|
|
291
|
-
buff[
|
|
307
|
+
source:healTarget(buff[101], healing)
|
|
308
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
292
309
|
end
|
|
293
310
|
end
|
|
294
|
-
local healingPerInterval = buff[
|
|
311
|
+
local healingPerInterval = buff[116] or 0
|
|
295
312
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
296
|
-
source:healTarget(buff[
|
|
313
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
297
314
|
end
|
|
298
315
|
end
|
|
316
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
317
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
299
318
|
____exports.Buff = __TS__Class()
|
|
300
319
|
local Buff = ____exports.Buff
|
|
301
320
|
Buff.name = "Buff"
|
|
@@ -304,38 +323,44 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
304
323
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
305
324
|
self._unit = _unit
|
|
306
325
|
self.parameters = nil
|
|
307
|
-
self[100] =
|
|
326
|
+
self[100] = 0
|
|
327
|
+
self[101] = _unit
|
|
308
328
|
local typeId
|
|
309
329
|
local polarity
|
|
310
330
|
local resistanceType
|
|
311
331
|
local ability
|
|
332
|
+
local abilityBehavior
|
|
312
333
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
313
334
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
314
335
|
polarity = resistanceTypeOrPolarity
|
|
315
336
|
resistanceType = abilityOrParametersOrResistanceType
|
|
316
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
337
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
338
|
+
abilityBehavior = parametersOrAbility
|
|
339
|
+
ability = abilityBehavior.ability
|
|
340
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
317
341
|
ability = parametersOrAbility
|
|
318
|
-
|
|
319
|
-
ability = nil
|
|
342
|
+
elseif parametersOrAbility ~= nil then
|
|
320
343
|
parameters = parametersOrAbility
|
|
321
344
|
end
|
|
322
345
|
else
|
|
323
346
|
typeId = typeIdOrTypeIds
|
|
324
347
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
325
348
|
resistanceType = resistanceTypeOrPolarity
|
|
326
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
349
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
350
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
351
|
+
ability = abilityBehavior.ability
|
|
352
|
+
parameters = parametersOrAbility
|
|
353
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
327
354
|
ability = abilityOrParametersOrResistanceType
|
|
328
355
|
parameters = parametersOrAbility
|
|
329
|
-
|
|
330
|
-
ability = nil
|
|
356
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
331
357
|
parameters = abilityOrParametersOrResistanceType
|
|
358
|
+
else
|
|
359
|
+
parameters = parametersOrAbility
|
|
332
360
|
end
|
|
333
361
|
end
|
|
362
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
334
363
|
self.typeId = typeId
|
|
335
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
336
|
-
parameters = ability
|
|
337
|
-
ability = nil
|
|
338
|
-
end
|
|
339
364
|
local defaultParameters = self.constructor.defaultParameters
|
|
340
365
|
local level = parameters and parameters.level or defaultParameters.level
|
|
341
366
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -360,14 +385,19 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
360
385
|
end
|
|
361
386
|
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
362
387
|
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
388
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
389
|
+
if missProbability ~= nil then
|
|
390
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
391
|
+
self[142] = missProbability
|
|
392
|
+
end
|
|
363
393
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
364
394
|
if buffByTypeId == nil then
|
|
365
395
|
buffByTypeId = {}
|
|
366
396
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
367
397
|
end
|
|
368
|
-
local
|
|
369
|
-
if
|
|
370
|
-
|
|
398
|
+
local ____opt_15 = buffByTypeId[typeId]
|
|
399
|
+
if ____opt_15 ~= nil then
|
|
400
|
+
____opt_15:destroy()
|
|
371
401
|
end
|
|
372
402
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
373
403
|
if uniqueGroup ~= nil then
|
|
@@ -381,13 +411,16 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
381
411
|
level,
|
|
382
412
|
duration,
|
|
383
413
|
spellStealPriority,
|
|
384
|
-
learnLevelMinimum
|
|
414
|
+
learnLevelMinimum,
|
|
415
|
+
missProbability
|
|
385
416
|
) then
|
|
417
|
+
self[100] = 1
|
|
386
418
|
UnitBehavior.prototype.destroy(self)
|
|
387
419
|
error(unsuccessfulApplicationMarker, 0)
|
|
388
420
|
end
|
|
389
421
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
390
422
|
if handle == nil then
|
|
423
|
+
self[100] = 1
|
|
391
424
|
UnitBehavior.prototype.destroy(self)
|
|
392
425
|
error(unsuccessfulApplicationMarker, 0)
|
|
393
426
|
end
|
|
@@ -396,20 +429,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
396
429
|
self._level = level
|
|
397
430
|
self._spellStealPriority = spellStealPriority
|
|
398
431
|
self._learnLevelMinimum = learnLevelMinimum
|
|
399
|
-
self[
|
|
400
|
-
self[
|
|
401
|
-
self[
|
|
402
|
-
self[
|
|
403
|
-
self[
|
|
432
|
+
self[102] = source
|
|
433
|
+
self[103] = duration or 0
|
|
434
|
+
self[104] = uniqueGroup
|
|
435
|
+
self[105] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
436
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
404
437
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
405
438
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
406
|
-
local
|
|
407
|
-
local
|
|
408
|
-
local
|
|
409
|
-
if
|
|
410
|
-
|
|
439
|
+
local ____ability_24 = ability
|
|
440
|
+
local ____level_25 = level
|
|
441
|
+
local ____temp_23 = parameters and parameters[buffBooleanParameter]
|
|
442
|
+
if ____temp_23 == nil then
|
|
443
|
+
____temp_23 = defaultParameters[buffBooleanParameter]
|
|
411
444
|
end
|
|
412
|
-
if resolveBooleanValue(
|
|
445
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
413
446
|
self[buffBooleanParameter] = true
|
|
414
447
|
end
|
|
415
448
|
end
|
|
@@ -425,11 +458,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
425
458
|
end
|
|
426
459
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
427
460
|
if maximumDuration ~= nil then
|
|
428
|
-
self[
|
|
461
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
429
462
|
end
|
|
430
463
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
431
464
|
if maximumRemainingDuration ~= nil then
|
|
432
|
-
self[
|
|
465
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
433
466
|
end
|
|
434
467
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
435
468
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -438,24 +471,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
438
471
|
abilityTypeIds = {}
|
|
439
472
|
self._abilityTypeIds = abilityTypeIds
|
|
440
473
|
end
|
|
441
|
-
for
|
|
474
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
475
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
442
476
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
443
477
|
if addedAbility ~= nil then
|
|
444
478
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
445
479
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
449
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
450
|
-
end
|
|
451
|
-
elseif abilityParameterKey ~= "level" then
|
|
452
|
-
abilityParameterKey:setValue(
|
|
453
|
-
addedAbility,
|
|
454
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
455
|
-
)
|
|
456
|
-
end
|
|
480
|
+
if abilityParameters.isButtonVisible == false then
|
|
481
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
457
482
|
end
|
|
458
|
-
|
|
483
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
484
|
+
field[1]:setValue(
|
|
485
|
+
addedAbility,
|
|
486
|
+
resolveNumberValue(ability, level, field[2])
|
|
487
|
+
)
|
|
488
|
+
end
|
|
489
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
459
490
|
end
|
|
460
491
|
end
|
|
461
492
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -467,18 +498,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
467
498
|
self._behaviors = behaviors
|
|
468
499
|
end
|
|
469
500
|
end
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
if
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
501
|
+
if parameters ~= nil then
|
|
502
|
+
local additionalParameters = {}
|
|
503
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
504
|
+
if not buffParametersKeys[key] then
|
|
505
|
+
if ability then
|
|
506
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
507
|
+
else
|
|
508
|
+
additionalParameters[key] = parameters[key]
|
|
509
|
+
end
|
|
477
510
|
end
|
|
478
511
|
end
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
512
|
+
if (next(additionalParameters)) ~= nil then
|
|
513
|
+
self.parameters = additionalParameters
|
|
514
|
+
end
|
|
482
515
|
end
|
|
483
516
|
end
|
|
484
517
|
if duration ~= nil and duration > 0 then
|
|
@@ -487,29 +520,34 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
487
520
|
self._timer = timer
|
|
488
521
|
end
|
|
489
522
|
self:onCreate()
|
|
523
|
+
self[100] = 1
|
|
524
|
+
Event.invoke(buffCreatedEvent, self)
|
|
490
525
|
end
|
|
491
|
-
function Buff.prototype.
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
526
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
527
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
528
|
+
local abilityCooldownModifier = self[144]
|
|
529
|
+
if abilityCooldownModifier then
|
|
530
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
531
|
+
end
|
|
532
|
+
end
|
|
495
533
|
end
|
|
496
|
-
function Buff.prototype.
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
534
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
535
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
536
|
+
local abilityCooldownModifier = self[144]
|
|
537
|
+
if abilityCooldownModifier then
|
|
538
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
539
|
+
end
|
|
501
540
|
end
|
|
502
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
503
541
|
end
|
|
504
542
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
505
543
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
506
|
-
Effect:flash(self[
|
|
544
|
+
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
507
545
|
else
|
|
508
546
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
509
547
|
local ____Effect_40 = Effect
|
|
510
548
|
local ____Effect_flash_41 = Effect.flash
|
|
511
549
|
local ____array_39 = __TS__SparseArrayNew(
|
|
512
|
-
self[
|
|
550
|
+
self[105],
|
|
513
551
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
514
552
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
515
553
|
)
|
|
@@ -531,7 +569,7 @@ function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
|
531
569
|
local ____Effect_44 = Effect
|
|
532
570
|
local ____Effect_flash_45 = Effect.flash
|
|
533
571
|
local ____array_43 = __TS__SparseArrayNew(
|
|
534
|
-
self[
|
|
572
|
+
self[106],
|
|
535
573
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
536
574
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
537
575
|
)
|
|
@@ -550,20 +588,22 @@ end
|
|
|
550
588
|
function Buff.prototype.onCreate(self)
|
|
551
589
|
end
|
|
552
590
|
function Buff.prototype.onDestroy(self)
|
|
591
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
592
|
+
self[100] = 2
|
|
553
593
|
local unit = self._unit
|
|
554
594
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
555
595
|
removeBuff(unit.handle, self.typeId)
|
|
556
596
|
end
|
|
557
597
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
558
|
-
local healingIntervalTimer = self[
|
|
598
|
+
local healingIntervalTimer = self[119]
|
|
559
599
|
if healingIntervalTimer ~= nil then
|
|
560
600
|
healingIntervalTimer:destroy()
|
|
561
|
-
self[
|
|
601
|
+
self[119] = nil
|
|
562
602
|
end
|
|
563
|
-
local damageIntervalTimer = self[
|
|
603
|
+
local damageIntervalTimer = self[114]
|
|
564
604
|
if damageIntervalTimer ~= nil then
|
|
565
605
|
damageIntervalTimer:destroy()
|
|
566
|
-
self[
|
|
606
|
+
self[114] = nil
|
|
567
607
|
end
|
|
568
608
|
if self._timer ~= nil then
|
|
569
609
|
self._timer:destroy()
|
|
@@ -573,25 +613,34 @@ function Buff.prototype.onDestroy(self)
|
|
|
573
613
|
behavior:destroy()
|
|
574
614
|
end
|
|
575
615
|
end
|
|
576
|
-
|
|
616
|
+
local previousAbilityCooldownModifier = self[144]
|
|
617
|
+
if previousAbilityCooldownModifier then
|
|
618
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
619
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
620
|
+
end
|
|
621
|
+
end
|
|
622
|
+
if self[139] then
|
|
623
|
+
unit:decrementInvulnerabilityCounter()
|
|
624
|
+
end
|
|
625
|
+
if self[138] then
|
|
577
626
|
unit:decrementDisableAutoAttackCounter()
|
|
578
627
|
end
|
|
579
|
-
if self[
|
|
580
|
-
if self[
|
|
581
|
-
unit:
|
|
628
|
+
if self[136] then
|
|
629
|
+
if self[137] then
|
|
630
|
+
unit:decrementForceStunCounter()
|
|
582
631
|
end
|
|
583
632
|
unit:decrementStunCounter()
|
|
584
633
|
end
|
|
634
|
+
if self[135] then
|
|
635
|
+
unit:decrementGhostCounter()
|
|
636
|
+
end
|
|
585
637
|
if self._abilityTypeIds ~= nil then
|
|
586
|
-
for abilityTypeId in
|
|
638
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
587
639
|
unit:removeAbility(abilityTypeId)
|
|
588
640
|
end
|
|
589
641
|
end
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
593
|
-
end
|
|
594
|
-
end
|
|
642
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
643
|
+
self[100] = 3
|
|
595
644
|
return UnitBehavior.prototype.onDestroy(self)
|
|
596
645
|
end
|
|
597
646
|
function Buff.apply(self, ...)
|
|
@@ -628,72 +677,72 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
628
677
|
end
|
|
629
678
|
function Buff.prototype.onExpiration(self)
|
|
630
679
|
local unit = self.unit
|
|
631
|
-
if self[119] ~= nil then
|
|
632
|
-
(self[101] or unit):damageTarget(unit, self[119] or 0)
|
|
633
|
-
end
|
|
634
680
|
if self[120] ~= nil then
|
|
635
|
-
(self[
|
|
681
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
636
682
|
end
|
|
637
|
-
if self[
|
|
683
|
+
if self[121] ~= nil then
|
|
684
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
685
|
+
end
|
|
686
|
+
if self[141] then
|
|
638
687
|
unit:explode()
|
|
639
|
-
elseif self[
|
|
688
|
+
elseif self[140] then
|
|
640
689
|
unit:kill()
|
|
641
690
|
end
|
|
642
691
|
end
|
|
643
692
|
function Buff.prototype.onDeath(self, source)
|
|
644
693
|
local unit = self.unit
|
|
645
|
-
if self[
|
|
694
|
+
if self[122] ~= nil then
|
|
646
695
|
damageArea(
|
|
647
|
-
self[
|
|
648
|
-
self[
|
|
696
|
+
self[102] or unit,
|
|
697
|
+
self[122],
|
|
649
698
|
unit.x,
|
|
650
699
|
unit.y,
|
|
700
|
+
self[124] or 0,
|
|
651
701
|
self[123] or 0,
|
|
652
|
-
self[
|
|
702
|
+
self[126] or 0,
|
|
653
703
|
self[125] or 0,
|
|
654
|
-
self[
|
|
655
|
-
self[127] or 0
|
|
656
|
-
self[126] or 0
|
|
704
|
+
self[128] or 0,
|
|
705
|
+
self[127] or 0
|
|
657
706
|
)
|
|
658
707
|
end
|
|
659
708
|
end
|
|
660
709
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
661
710
|
if event.isAttack then
|
|
662
|
-
if self[
|
|
663
|
-
local durationIncrease = self[
|
|
664
|
-
local maximumDuration = self[
|
|
711
|
+
if self[107] ~= nil then
|
|
712
|
+
local durationIncrease = self[107]
|
|
713
|
+
local maximumDuration = self[108] or 0
|
|
665
714
|
if maximumDuration > 0 then
|
|
666
715
|
durationIncrease = min(
|
|
667
716
|
durationIncrease,
|
|
668
|
-
max(0, maximumDuration - self[
|
|
717
|
+
max(0, maximumDuration - self[103])
|
|
669
718
|
)
|
|
670
719
|
end
|
|
671
720
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
672
|
-
local maximumRemainingDuration = self[
|
|
721
|
+
local maximumRemainingDuration = self[109] or 0
|
|
673
722
|
if maximumRemainingDuration > 0 then
|
|
674
723
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
675
724
|
end
|
|
676
725
|
self.remainingDuration = remainingDuration
|
|
677
726
|
end
|
|
678
|
-
local autoAttackCount = (self[
|
|
679
|
-
self[
|
|
680
|
-
if autoAttackCount == self[
|
|
727
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
728
|
+
self[129] = autoAttackCount
|
|
729
|
+
if autoAttackCount == self[130] then
|
|
681
730
|
self:destroy()
|
|
682
731
|
end
|
|
683
732
|
end
|
|
684
733
|
if event.originalAmount ~= 0 then
|
|
685
|
-
local damageDealtEventCount = (self[
|
|
686
|
-
self[
|
|
687
|
-
if damageDealtEventCount == self[
|
|
734
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
735
|
+
self[131] = damageDealtEventCount
|
|
736
|
+
if damageDealtEventCount == self[132] then
|
|
688
737
|
self:destroy()
|
|
689
738
|
end
|
|
690
739
|
end
|
|
691
740
|
end
|
|
692
741
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
693
742
|
if event.originalAmount ~= 0 then
|
|
694
|
-
local damageReceivedEventCount = (self[
|
|
695
|
-
self[
|
|
696
|
-
if damageReceivedEventCount == self[
|
|
743
|
+
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
744
|
+
self[133] = damageReceivedEventCount
|
|
745
|
+
if damageReceivedEventCount == self[134] then
|
|
697
746
|
self:destroy()
|
|
698
747
|
end
|
|
699
748
|
end
|
|
@@ -703,7 +752,7 @@ __TS__SetDescriptor(
|
|
|
703
752
|
Buff.prototype,
|
|
704
753
|
"source",
|
|
705
754
|
{get = function(self)
|
|
706
|
-
return self[
|
|
755
|
+
return self[102] or self._unit
|
|
707
756
|
end},
|
|
708
757
|
true
|
|
709
758
|
)
|
|
@@ -720,13 +769,13 @@ __TS__SetDescriptor(
|
|
|
720
769
|
"remainingDamageOverDuration",
|
|
721
770
|
{
|
|
722
771
|
get = function(self)
|
|
723
|
-
return self[
|
|
772
|
+
return self[113] or 0
|
|
724
773
|
end,
|
|
725
774
|
set = function(self, remainingDamageOverDuration)
|
|
726
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
727
|
-
self[
|
|
728
|
-
local damageOverDuration = (self[
|
|
729
|
-
self[
|
|
775
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[113] or 0)
|
|
776
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
777
|
+
local damageOverDuration = (self[110] or 0) + remainingDamageOverDurationDelta
|
|
778
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
730
779
|
end
|
|
731
780
|
},
|
|
732
781
|
true
|
|
@@ -736,13 +785,13 @@ __TS__SetDescriptor(
|
|
|
736
785
|
"damageOverDuration",
|
|
737
786
|
{
|
|
738
787
|
get = function(self)
|
|
739
|
-
return self[
|
|
788
|
+
return self[110] or 0
|
|
740
789
|
end,
|
|
741
790
|
set = function(self, damageOverDuration)
|
|
742
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
743
|
-
self[
|
|
744
|
-
local remainingDamageOverDuration = (self[
|
|
745
|
-
self[
|
|
791
|
+
local damageOverDurationDelta = damageOverDuration - (self[110] or 0)
|
|
792
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
793
|
+
local remainingDamageOverDuration = (self[113] or 0) + damageOverDurationDelta
|
|
794
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
746
795
|
end
|
|
747
796
|
},
|
|
748
797
|
true
|
|
@@ -752,10 +801,10 @@ __TS__SetDescriptor(
|
|
|
752
801
|
"damagePerInterval",
|
|
753
802
|
{
|
|
754
803
|
get = function(self)
|
|
755
|
-
return self[
|
|
804
|
+
return self[111] or 0
|
|
756
805
|
end,
|
|
757
806
|
set = function(self, damagePerInterval)
|
|
758
|
-
self[
|
|
807
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
759
808
|
end
|
|
760
809
|
},
|
|
761
810
|
true
|
|
@@ -765,25 +814,25 @@ __TS__SetDescriptor(
|
|
|
765
814
|
"damageInterval",
|
|
766
815
|
{
|
|
767
816
|
get = function(self)
|
|
768
|
-
return self[
|
|
817
|
+
return self[112] or 0
|
|
769
818
|
end,
|
|
770
819
|
set = function(self, damageInterval)
|
|
771
820
|
if damageInterval <= 0 then
|
|
772
|
-
self[
|
|
773
|
-
local timer = self[
|
|
821
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
822
|
+
local timer = self[114]
|
|
774
823
|
if timer ~= nil then
|
|
775
824
|
timer:destroy()
|
|
776
|
-
self[
|
|
825
|
+
self[114] = nil
|
|
777
826
|
end
|
|
778
827
|
return
|
|
779
828
|
end
|
|
780
|
-
self[
|
|
829
|
+
self[112] = damageInterval
|
|
781
830
|
local ____opt_48 = self._timer
|
|
782
831
|
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
783
|
-
local timer = self[
|
|
832
|
+
local timer = self[114]
|
|
784
833
|
if timer == nil then
|
|
785
834
|
timer = Timer:create()
|
|
786
|
-
self[
|
|
835
|
+
self[114] = timer
|
|
787
836
|
end
|
|
788
837
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
789
838
|
if initialDelay == damageInterval then
|
|
@@ -800,13 +849,13 @@ __TS__SetDescriptor(
|
|
|
800
849
|
"remainingHealingOverDuration",
|
|
801
850
|
{
|
|
802
851
|
get = function(self)
|
|
803
|
-
return self[
|
|
852
|
+
return self[118] or 0
|
|
804
853
|
end,
|
|
805
854
|
set = function(self, remainingHealingOverDuration)
|
|
806
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
807
|
-
self[
|
|
808
|
-
local healingOverDuration = (self[
|
|
809
|
-
self[
|
|
855
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[118] or 0)
|
|
856
|
+
self[113] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
857
|
+
local healingOverDuration = (self[115] or 0) + remainingHealingOverDurationDelta
|
|
858
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
810
859
|
end
|
|
811
860
|
},
|
|
812
861
|
true
|
|
@@ -816,13 +865,13 @@ __TS__SetDescriptor(
|
|
|
816
865
|
"healingOverDuration",
|
|
817
866
|
{
|
|
818
867
|
get = function(self)
|
|
819
|
-
return self[
|
|
868
|
+
return self[115] or 0
|
|
820
869
|
end,
|
|
821
870
|
set = function(self, healingOverDuration)
|
|
822
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
823
|
-
self[
|
|
824
|
-
local remainingHealingOverDuration = (self[
|
|
825
|
-
self[
|
|
871
|
+
local healingOverDurationDelta = healingOverDuration - (self[115] or 0)
|
|
872
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
873
|
+
local remainingHealingOverDuration = (self[118] or 0) + healingOverDurationDelta
|
|
874
|
+
self[118] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
826
875
|
end
|
|
827
876
|
},
|
|
828
877
|
true
|
|
@@ -832,10 +881,10 @@ __TS__SetDescriptor(
|
|
|
832
881
|
"healingPerInterval",
|
|
833
882
|
{
|
|
834
883
|
get = function(self)
|
|
835
|
-
return self[
|
|
884
|
+
return self[116] or 0
|
|
836
885
|
end,
|
|
837
886
|
set = function(self, healingPerInterval)
|
|
838
|
-
self[
|
|
887
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
839
888
|
end
|
|
840
889
|
},
|
|
841
890
|
true
|
|
@@ -845,25 +894,25 @@ __TS__SetDescriptor(
|
|
|
845
894
|
"healingInterval",
|
|
846
895
|
{
|
|
847
896
|
get = function(self)
|
|
848
|
-
return self[
|
|
897
|
+
return self[117] or 0
|
|
849
898
|
end,
|
|
850
899
|
set = function(self, healingInterval)
|
|
851
900
|
if healingInterval <= 0 then
|
|
852
|
-
self[
|
|
853
|
-
local timer = self[
|
|
901
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
902
|
+
local timer = self[119]
|
|
854
903
|
if timer ~= nil then
|
|
855
904
|
timer:destroy()
|
|
856
|
-
self[
|
|
905
|
+
self[119] = nil
|
|
857
906
|
end
|
|
858
907
|
return
|
|
859
908
|
end
|
|
860
|
-
self[
|
|
909
|
+
self[117] = healingInterval
|
|
861
910
|
local ____opt_50 = self._timer
|
|
862
911
|
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
863
|
-
local timer = self[
|
|
912
|
+
local timer = self[119]
|
|
864
913
|
if timer == nil then
|
|
865
914
|
timer = Timer:create()
|
|
866
|
-
self[
|
|
915
|
+
self[119] = timer
|
|
867
916
|
end
|
|
868
917
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
869
918
|
if initialDelay == healingInterval then
|
|
@@ -880,10 +929,10 @@ __TS__SetDescriptor(
|
|
|
880
929
|
"damageOnExpiration",
|
|
881
930
|
{
|
|
882
931
|
get = function(self)
|
|
883
|
-
return self[
|
|
932
|
+
return self[120] or 0
|
|
884
933
|
end,
|
|
885
934
|
set = function(self, damageOnExpiration)
|
|
886
|
-
self[
|
|
935
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
887
936
|
end
|
|
888
937
|
},
|
|
889
938
|
true
|
|
@@ -893,10 +942,10 @@ __TS__SetDescriptor(
|
|
|
893
942
|
"healingOnExpiration",
|
|
894
943
|
{
|
|
895
944
|
get = function(self)
|
|
896
|
-
return self[
|
|
945
|
+
return self[121] or 0
|
|
897
946
|
end,
|
|
898
947
|
set = function(self, healingOnExpiration)
|
|
899
|
-
self[
|
|
948
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
900
949
|
end
|
|
901
950
|
},
|
|
902
951
|
true
|
|
@@ -940,30 +989,53 @@ __TS__SetDescriptor(
|
|
|
940
989
|
},
|
|
941
990
|
true
|
|
942
991
|
)
|
|
992
|
+
__TS__SetDescriptor(
|
|
993
|
+
Buff.prototype,
|
|
994
|
+
"turnsIntoGhost",
|
|
995
|
+
{
|
|
996
|
+
get = function(self)
|
|
997
|
+
local ____self__135_52 = self[135]
|
|
998
|
+
if ____self__135_52 == nil then
|
|
999
|
+
____self__135_52 = false
|
|
1000
|
+
end
|
|
1001
|
+
return ____self__135_52
|
|
1002
|
+
end,
|
|
1003
|
+
set = function(self, turnsIntoGhost)
|
|
1004
|
+
if not turnsIntoGhost and self[135] then
|
|
1005
|
+
self.object:decrementGhostCounter()
|
|
1006
|
+
self[135] = nil
|
|
1007
|
+
elseif turnsIntoGhost and not self[135] then
|
|
1008
|
+
self.object:incrementGhostCounter()
|
|
1009
|
+
self[135] = true
|
|
1010
|
+
end
|
|
1011
|
+
end
|
|
1012
|
+
},
|
|
1013
|
+
true
|
|
1014
|
+
)
|
|
943
1015
|
__TS__SetDescriptor(
|
|
944
1016
|
Buff.prototype,
|
|
945
1017
|
"stuns",
|
|
946
1018
|
{
|
|
947
1019
|
get = function(self)
|
|
948
|
-
local
|
|
949
|
-
if
|
|
950
|
-
|
|
1020
|
+
local ____self__136_53 = self[136]
|
|
1021
|
+
if ____self__136_53 == nil then
|
|
1022
|
+
____self__136_53 = false
|
|
951
1023
|
end
|
|
952
|
-
return
|
|
1024
|
+
return ____self__136_53
|
|
953
1025
|
end,
|
|
954
1026
|
set = function(self, stuns)
|
|
955
|
-
if not stuns and self[
|
|
956
|
-
if self[
|
|
957
|
-
self.object:
|
|
1027
|
+
if not stuns and self[136] then
|
|
1028
|
+
if self[137] then
|
|
1029
|
+
self.object:decrementForceStunCounter()
|
|
958
1030
|
end
|
|
959
1031
|
self.object:decrementStunCounter()
|
|
960
|
-
self[
|
|
961
|
-
elseif stuns and not self[
|
|
962
|
-
if self[
|
|
963
|
-
self.object:
|
|
1032
|
+
self[136] = nil
|
|
1033
|
+
elseif stuns and not self[136] then
|
|
1034
|
+
if self[137] then
|
|
1035
|
+
self.object:incrementForceStunCounter()
|
|
964
1036
|
end
|
|
965
1037
|
self.object:incrementStunCounter()
|
|
966
|
-
self[
|
|
1038
|
+
self[136] = true
|
|
967
1039
|
end
|
|
968
1040
|
end
|
|
969
1041
|
},
|
|
@@ -974,23 +1046,23 @@ __TS__SetDescriptor(
|
|
|
974
1046
|
"ignoresStunImmunity",
|
|
975
1047
|
{
|
|
976
1048
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
1049
|
+
local ____self__137_54 = self[137]
|
|
1050
|
+
if ____self__137_54 == nil then
|
|
1051
|
+
____self__137_54 = false
|
|
980
1052
|
end
|
|
981
|
-
return
|
|
1053
|
+
return ____self__137_54
|
|
982
1054
|
end,
|
|
983
1055
|
set = function(self, ignoresStunImmunity)
|
|
984
|
-
if not ignoresStunImmunity and self[
|
|
985
|
-
if self[
|
|
986
|
-
self.object:
|
|
1056
|
+
if not ignoresStunImmunity and self[137] then
|
|
1057
|
+
if self[136] then
|
|
1058
|
+
self.object:decrementForceStunCounter()
|
|
987
1059
|
end
|
|
988
|
-
self[
|
|
989
|
-
elseif ignoresStunImmunity and not self[
|
|
990
|
-
if self[
|
|
991
|
-
self.object:
|
|
1060
|
+
self[137] = nil
|
|
1061
|
+
elseif ignoresStunImmunity and not self[137] then
|
|
1062
|
+
if self[136] then
|
|
1063
|
+
self.object:incrementForceStunCounter()
|
|
992
1064
|
end
|
|
993
|
-
self[
|
|
1065
|
+
self[137] = true
|
|
994
1066
|
end
|
|
995
1067
|
end
|
|
996
1068
|
},
|
|
@@ -1001,19 +1073,19 @@ __TS__SetDescriptor(
|
|
|
1001
1073
|
"disablesAutoAttack",
|
|
1002
1074
|
{
|
|
1003
1075
|
get = function(self)
|
|
1004
|
-
local
|
|
1005
|
-
if
|
|
1006
|
-
|
|
1076
|
+
local ____self__138_55 = self[138]
|
|
1077
|
+
if ____self__138_55 == nil then
|
|
1078
|
+
____self__138_55 = false
|
|
1007
1079
|
end
|
|
1008
|
-
return
|
|
1080
|
+
return ____self__138_55
|
|
1009
1081
|
end,
|
|
1010
1082
|
set = function(self, disablesAutoAttack)
|
|
1011
|
-
if not disablesAutoAttack and self[
|
|
1083
|
+
if not disablesAutoAttack and self[138] then
|
|
1012
1084
|
self.object:decrementDisableAutoAttackCounter()
|
|
1013
|
-
self[
|
|
1014
|
-
elseif disablesAutoAttack and not self[
|
|
1085
|
+
self[138] = nil
|
|
1086
|
+
elseif disablesAutoAttack and not self[138] then
|
|
1015
1087
|
self.object:incrementDisableAutoAttackCounter()
|
|
1016
|
-
self[
|
|
1088
|
+
self[138] = true
|
|
1017
1089
|
end
|
|
1018
1090
|
end
|
|
1019
1091
|
},
|
|
@@ -1024,19 +1096,19 @@ __TS__SetDescriptor(
|
|
|
1024
1096
|
"providesInvulnerability",
|
|
1025
1097
|
{
|
|
1026
1098
|
get = function(self)
|
|
1027
|
-
local
|
|
1028
|
-
if
|
|
1029
|
-
|
|
1099
|
+
local ____self__139_56 = self[139]
|
|
1100
|
+
if ____self__139_56 == nil then
|
|
1101
|
+
____self__139_56 = false
|
|
1030
1102
|
end
|
|
1031
|
-
return
|
|
1103
|
+
return ____self__139_56
|
|
1032
1104
|
end,
|
|
1033
1105
|
set = function(self, providesInvulnerability)
|
|
1034
|
-
if not providesInvulnerability and self[
|
|
1106
|
+
if not providesInvulnerability and self[139] then
|
|
1035
1107
|
self.object:decrementInvulnerabilityCounter()
|
|
1036
|
-
self[
|
|
1037
|
-
elseif providesInvulnerability and not self[
|
|
1108
|
+
self[139] = nil
|
|
1109
|
+
elseif providesInvulnerability and not self[139] then
|
|
1038
1110
|
self.object:incrementInvulnerabilityCounter()
|
|
1039
|
-
self[
|
|
1111
|
+
self[139] = true
|
|
1040
1112
|
end
|
|
1041
1113
|
end
|
|
1042
1114
|
},
|
|
@@ -1047,17 +1119,17 @@ __TS__SetDescriptor(
|
|
|
1047
1119
|
"killsOnExpiration",
|
|
1048
1120
|
{
|
|
1049
1121
|
get = function(self)
|
|
1050
|
-
local
|
|
1051
|
-
if
|
|
1052
|
-
|
|
1122
|
+
local ____self__140_57 = self[140]
|
|
1123
|
+
if ____self__140_57 == nil then
|
|
1124
|
+
____self__140_57 = false
|
|
1053
1125
|
end
|
|
1054
|
-
return
|
|
1126
|
+
return ____self__140_57
|
|
1055
1127
|
end,
|
|
1056
1128
|
set = function(self, killsOnExpiration)
|
|
1057
|
-
if not killsOnExpiration and self[
|
|
1058
|
-
self[
|
|
1059
|
-
elseif killsOnExpiration and not self[
|
|
1060
|
-
self[
|
|
1129
|
+
if not killsOnExpiration and self[140] then
|
|
1130
|
+
self[140] = nil
|
|
1131
|
+
elseif killsOnExpiration and not self[140] then
|
|
1132
|
+
self[140] = true
|
|
1061
1133
|
end
|
|
1062
1134
|
end
|
|
1063
1135
|
},
|
|
@@ -1068,17 +1140,17 @@ __TS__SetDescriptor(
|
|
|
1068
1140
|
"explodesOnExpiration",
|
|
1069
1141
|
{
|
|
1070
1142
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1143
|
+
local ____self__141_58 = self[141]
|
|
1144
|
+
if ____self__141_58 == nil then
|
|
1145
|
+
____self__141_58 = false
|
|
1074
1146
|
end
|
|
1075
|
-
return
|
|
1147
|
+
return ____self__141_58
|
|
1076
1148
|
end,
|
|
1077
1149
|
set = function(self, killsOnExpiration)
|
|
1078
|
-
if not killsOnExpiration and self[
|
|
1079
|
-
self[
|
|
1080
|
-
elseif killsOnExpiration and not self[
|
|
1081
|
-
self[
|
|
1150
|
+
if not killsOnExpiration and self[141] then
|
|
1151
|
+
self[141] = nil
|
|
1152
|
+
elseif killsOnExpiration and not self[141] then
|
|
1153
|
+
self[141] = true
|
|
1082
1154
|
end
|
|
1083
1155
|
end
|
|
1084
1156
|
},
|
|
@@ -1089,13 +1161,13 @@ __TS__SetDescriptor(
|
|
|
1089
1161
|
"maximumDamageDealtEventCount",
|
|
1090
1162
|
{
|
|
1091
1163
|
get = function(self)
|
|
1092
|
-
return self[
|
|
1164
|
+
return self[132] or 0
|
|
1093
1165
|
end,
|
|
1094
1166
|
set = function(self, maximumDamageDealtEventCount)
|
|
1095
1167
|
if maximumDamageDealtEventCount == 0 then
|
|
1096
|
-
self[
|
|
1168
|
+
self[132] = nil
|
|
1097
1169
|
else
|
|
1098
|
-
self[
|
|
1170
|
+
self[132] = maximumDamageDealtEventCount
|
|
1099
1171
|
end
|
|
1100
1172
|
end
|
|
1101
1173
|
},
|
|
@@ -1106,13 +1178,13 @@ __TS__SetDescriptor(
|
|
|
1106
1178
|
"maximumDamageReceivedEventCount",
|
|
1107
1179
|
{
|
|
1108
1180
|
get = function(self)
|
|
1109
|
-
return self[
|
|
1181
|
+
return self[134] or 0
|
|
1110
1182
|
end,
|
|
1111
1183
|
set = function(self, maximumDamageReceivedEventCount)
|
|
1112
1184
|
if maximumDamageReceivedEventCount == 0 then
|
|
1113
|
-
self[
|
|
1185
|
+
self[134] = nil
|
|
1114
1186
|
else
|
|
1115
|
-
self[
|
|
1187
|
+
self[134] = maximumDamageReceivedEventCount
|
|
1116
1188
|
end
|
|
1117
1189
|
end
|
|
1118
1190
|
},
|
|
@@ -1123,13 +1195,13 @@ __TS__SetDescriptor(
|
|
|
1123
1195
|
"maximumAutoAttackCount",
|
|
1124
1196
|
{
|
|
1125
1197
|
get = function(self)
|
|
1126
|
-
return self[
|
|
1198
|
+
return self[130] or 0
|
|
1127
1199
|
end,
|
|
1128
1200
|
set = function(self, maximumAutoAttackCount)
|
|
1129
1201
|
if maximumAutoAttackCount == 0 then
|
|
1130
|
-
self[
|
|
1202
|
+
self[130] = nil
|
|
1131
1203
|
else
|
|
1132
|
-
self[
|
|
1204
|
+
self[130] = maximumAutoAttackCount
|
|
1133
1205
|
end
|
|
1134
1206
|
end
|
|
1135
1207
|
},
|
|
@@ -1140,10 +1212,10 @@ __TS__SetDescriptor(
|
|
|
1140
1212
|
"durationIncreaseOnAutoAttack",
|
|
1141
1213
|
{
|
|
1142
1214
|
get = function(self)
|
|
1143
|
-
return self[
|
|
1215
|
+
return self[107] or 0
|
|
1144
1216
|
end,
|
|
1145
1217
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1146
|
-
self[
|
|
1218
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
1147
1219
|
end
|
|
1148
1220
|
},
|
|
1149
1221
|
true
|
|
@@ -1174,11 +1246,37 @@ __TS__SetDescriptor(
|
|
|
1174
1246
|
},
|
|
1175
1247
|
true
|
|
1176
1248
|
)
|
|
1249
|
+
__TS__SetDescriptor(
|
|
1250
|
+
Buff.prototype,
|
|
1251
|
+
"evasionProbability",
|
|
1252
|
+
{
|
|
1253
|
+
get = function(self)
|
|
1254
|
+
return self:getUnitBonus(UnitBonusType.EVASION_PROBABILITY)
|
|
1255
|
+
end,
|
|
1256
|
+
set = function(self, evasionProbability)
|
|
1257
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.EVASION_PROBABILITY, evasionProbability)
|
|
1258
|
+
end
|
|
1259
|
+
},
|
|
1260
|
+
true
|
|
1261
|
+
)
|
|
1262
|
+
__TS__SetDescriptor(
|
|
1263
|
+
Buff.prototype,
|
|
1264
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1265
|
+
{
|
|
1266
|
+
get = function(self)
|
|
1267
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1268
|
+
end,
|
|
1269
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1270
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1271
|
+
end
|
|
1272
|
+
},
|
|
1273
|
+
true
|
|
1274
|
+
)
|
|
1177
1275
|
__TS__SetDescriptor(
|
|
1178
1276
|
Buff.prototype,
|
|
1179
1277
|
"duration",
|
|
1180
1278
|
{get = function(self)
|
|
1181
|
-
return self[
|
|
1279
|
+
return self[103]
|
|
1182
1280
|
end},
|
|
1183
1281
|
true
|
|
1184
1282
|
)
|
|
@@ -1187,15 +1285,15 @@ __TS__SetDescriptor(
|
|
|
1187
1285
|
"remainingDuration",
|
|
1188
1286
|
{
|
|
1189
1287
|
get = function(self)
|
|
1190
|
-
local
|
|
1191
|
-
return
|
|
1288
|
+
local ____opt_59 = self._timer
|
|
1289
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1192
1290
|
end,
|
|
1193
1291
|
set = function(self, remainingDuration)
|
|
1194
|
-
local
|
|
1195
|
-
local
|
|
1196
|
-
local remainingDurationDelta =
|
|
1292
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1293
|
+
local ____opt_61 = self._timer
|
|
1294
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1197
1295
|
if remainingDurationDelta ~= 0 then
|
|
1198
|
-
self[
|
|
1296
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1199
1297
|
if remainingDuration <= 0 then
|
|
1200
1298
|
Timer:run(destroyBuff, self)
|
|
1201
1299
|
else
|
|
@@ -1207,7 +1305,8 @@ __TS__SetDescriptor(
|
|
|
1207
1305
|
self._level,
|
|
1208
1306
|
remainingDuration,
|
|
1209
1307
|
self._spellStealPriority,
|
|
1210
|
-
self._learnLevelMinimum
|
|
1308
|
+
self._learnLevelMinimum,
|
|
1309
|
+
self[142]
|
|
1211
1310
|
) then
|
|
1212
1311
|
local timer = self._timer
|
|
1213
1312
|
if timer == nil then
|
|
@@ -1221,10 +1320,38 @@ __TS__SetDescriptor(
|
|
|
1221
1320
|
end
|
|
1222
1321
|
},
|
|
1223
1322
|
true
|
|
1224
|
-
)
|
|
1323
|
+
)
|
|
1324
|
+
__TS__SetDescriptor(
|
|
1325
|
+
Buff.prototype,
|
|
1326
|
+
"abilityCooldownFactor",
|
|
1327
|
+
{
|
|
1328
|
+
get = function(self)
|
|
1329
|
+
return self[143] or 1
|
|
1330
|
+
end,
|
|
1331
|
+
set = function(self, abilityCooldownFactor)
|
|
1332
|
+
local previousAbilityCooldownModifier = self[144]
|
|
1333
|
+
if previousAbilityCooldownModifier then
|
|
1334
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1335
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1336
|
+
end
|
|
1337
|
+
end
|
|
1338
|
+
local function modifier(ability, level, cooldown)
|
|
1339
|
+
return cooldown * abilityCooldownFactor
|
|
1340
|
+
end
|
|
1341
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1342
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1343
|
+
end
|
|
1344
|
+
self[144] = modifier
|
|
1345
|
+
self[143] = abilityCooldownFactor
|
|
1346
|
+
end
|
|
1347
|
+
},
|
|
1348
|
+
true
|
|
1349
|
+
)
|
|
1350
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1351
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1225
1352
|
(function(self)
|
|
1226
1353
|
local function destroyBuffIfNeeded(buff)
|
|
1227
|
-
if getUnitAbility(buff[
|
|
1354
|
+
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
1228
1355
|
buff:destroy()
|
|
1229
1356
|
end
|
|
1230
1357
|
end
|
|
@@ -1275,5 +1402,11 @@ __TS__SetDescriptor(
|
|
|
1275
1402
|
____exports.checkBuffs(target)
|
|
1276
1403
|
end
|
|
1277
1404
|
)
|
|
1405
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1406
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1407
|
+
end)
|
|
1408
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1409
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1410
|
+
end)
|
|
1278
1411
|
end)(Buff)
|
|
1279
1412
|
return ____exports
|