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