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