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