warscript 0.0.1-dev.7821093 → 0.0.1-dev.78e14b3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- package/core/types/frame.lua +71 -22
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- 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 +100 -25
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.lua +6 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +12 -3
- package/engine/behaviour/ability/damage.lua +33 -39
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -3
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +15 -6
- package/engine/behaviour/ability.lua +56 -21
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +109 -54
- package/engine/buff.lua +526 -290
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +49 -9
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +14 -17
- package/engine/internal/item.lua +118 -69
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/damage-metadata-by-target.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/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- package/engine/internal/unit/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 +6 -0
- package/engine/internal/unit/bonus.lua +33 -3
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+bonus.lua +3 -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 +52 -14
- package/engine/internal/unit.d.ts +43 -25
- package/engine/internal/unit.lua +384 -260
- package/engine/lightning.d.ts +4 -3
- package/engine/lightning.lua +21 -12
- package/engine/local-client.d.ts +7 -0
- package/engine/local-client.lua +86 -1
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- 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/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +21 -17
- package/engine/object-data/entry/ability-type.lua +169 -28
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +28 -2
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/item-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.lua +4 -4
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +25 -5
- package/engine/object-data/entry/unit-type.lua +258 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +360 -119
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +6 -0
- package/engine/unit.lua +6 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/objutil/object.lua +1 -1
- package/objutil/unit.lua +8 -0
- package/operation.lua +1 -4
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-map.d.ts +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +43 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/records.lua +20 -1
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
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,6 +42,7 @@ 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
47
|
local ____event = require("event")
|
|
48
48
|
local Event = ____event.Event
|
|
@@ -52,6 +52,12 @@ local ____item = require("engine.internal.item")
|
|
|
52
52
|
local Item = ____item.Item
|
|
53
53
|
local ____destructable = require("core.types.destructable")
|
|
54
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
|
|
55
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
56
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
57
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -97,16 +103,20 @@ local buffParametersKeys = {
|
|
|
97
103
|
damageIncrease = true,
|
|
98
104
|
damageIncreaseFactor = true,
|
|
99
105
|
armorIncrease = true,
|
|
100
|
-
|
|
106
|
+
maxHealthIncrease = true,
|
|
107
|
+
maxManaIncrease = true,
|
|
101
108
|
attackSpeedIncreaseFactor = true,
|
|
102
109
|
movementSpeedIncreaseFactor = true,
|
|
110
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
103
111
|
evasionProbability = true,
|
|
112
|
+
missProbability = true,
|
|
104
113
|
damageFactor = true,
|
|
105
114
|
receivedDamageFactor = true,
|
|
106
115
|
receivedMagicDamageFactor = true,
|
|
107
116
|
durationIncreaseOnAutoAttack = true,
|
|
108
117
|
maximumDuration = true,
|
|
109
118
|
maximumRemainingDuration = true,
|
|
119
|
+
turnsIntoGhost = true,
|
|
110
120
|
stuns = true,
|
|
111
121
|
ignoresStunImmunity = true,
|
|
112
122
|
providesStunImmunity = true,
|
|
@@ -117,11 +127,15 @@ local buffParametersKeys = {
|
|
|
117
127
|
maximumAutoAttackCount = true,
|
|
118
128
|
maximumDamageDealtEventCount = true,
|
|
119
129
|
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
120
133
|
uniqueGroup = true,
|
|
121
134
|
damageOnExpiration = true,
|
|
122
135
|
healingOnExpiration = true,
|
|
123
136
|
killsOnExpiration = true,
|
|
124
|
-
explodesOnExpiration = true
|
|
137
|
+
explodesOnExpiration = true,
|
|
138
|
+
abilityCooldownFactor = true
|
|
125
139
|
}
|
|
126
140
|
local function resolveEnumValue(ability, level, value)
|
|
127
141
|
if value == nil or type(value) == "number" then
|
|
@@ -172,6 +186,8 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
172
186
|
end
|
|
173
187
|
end
|
|
174
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
190
|
+
"turnsIntoGhost",
|
|
175
191
|
"stuns",
|
|
176
192
|
"ignoresStunImmunity",
|
|
177
193
|
"disablesAutoAttack",
|
|
@@ -183,8 +199,11 @@ local buffNumberParameters = {
|
|
|
183
199
|
"durationIncreaseOnAutoAttack",
|
|
184
200
|
"attackSpeedIncreaseFactor",
|
|
185
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
186
203
|
"evasionProbability",
|
|
187
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
188
207
|
"damageFactor",
|
|
189
208
|
"receivedDamageFactor",
|
|
190
209
|
"maximumAutoAttackCount",
|
|
@@ -197,7 +216,10 @@ local buffNumberParameters = {
|
|
|
197
216
|
"healingPerInterval",
|
|
198
217
|
"healingOverDuration",
|
|
199
218
|
"damageOnExpiration",
|
|
200
|
-
"healingOnExpiration"
|
|
219
|
+
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
222
|
+
"abilityCooldownFactor"
|
|
201
223
|
}
|
|
202
224
|
local unsuccessfulApplicationMarker = {}
|
|
203
225
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -224,7 +246,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
224
246
|
return checkNotNull(firstNativeBuffTypeId)
|
|
225
247
|
end
|
|
226
248
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
227
|
-
if buff[
|
|
249
|
+
if buff[104] == uniqueGroup then
|
|
228
250
|
buff:destroy()
|
|
229
251
|
end
|
|
230
252
|
end
|
|
@@ -232,17 +254,17 @@ local function destroyBuff(buff)
|
|
|
232
254
|
buff:destroy()
|
|
233
255
|
end
|
|
234
256
|
local function expireBuff(buff)
|
|
235
|
-
local remainingDamageOverDuration = buff[
|
|
236
|
-
local remainingHealingOverDuration = buff[
|
|
257
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
258
|
+
local remainingHealingOverDuration = buff[113] or 0
|
|
237
259
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
238
260
|
buff:flashSpecialEffect()
|
|
239
261
|
if remainingDamageOverDuration ~= 0 then
|
|
240
|
-
(buff[
|
|
241
|
-
buff[
|
|
262
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
263
|
+
buff[113] = nil
|
|
242
264
|
end
|
|
243
265
|
if remainingHealingOverDuration ~= 0 then
|
|
244
|
-
(buff[
|
|
245
|
-
buff[
|
|
266
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
267
|
+
buff[118] = nil
|
|
246
268
|
end
|
|
247
269
|
end
|
|
248
270
|
Timer:run(destroyBuff, buff)
|
|
@@ -250,57 +272,58 @@ local function expireBuff(buff)
|
|
|
250
272
|
end
|
|
251
273
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
252
274
|
buffDamageIntervalTimerCallback(buff)
|
|
253
|
-
local timer = buff[
|
|
254
|
-
local damageInterval = buff[
|
|
275
|
+
local timer = buff[114]
|
|
276
|
+
local damageInterval = buff[112]
|
|
255
277
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
256
278
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
257
279
|
end
|
|
258
280
|
end
|
|
259
281
|
buffDamageIntervalTimerCallback = function(buff)
|
|
260
282
|
buff:flashSpecialEffect()
|
|
261
|
-
local source = buff[
|
|
262
|
-
local remainingDamageOverDuration = buff[
|
|
283
|
+
local source = buff[102] or buff[101]
|
|
284
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
263
285
|
if remainingDamageOverDuration ~= 0 then
|
|
264
|
-
local damageInterval = buff[
|
|
286
|
+
local damageInterval = buff[112] or 0
|
|
265
287
|
if damageInterval ~= 0 then
|
|
266
288
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
267
|
-
source:damageTarget(buff[
|
|
268
|
-
buff[
|
|
289
|
+
source:damageTarget(buff[101], damage)
|
|
290
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
269
291
|
end
|
|
270
292
|
end
|
|
271
|
-
local damagePerInterval = buff[
|
|
293
|
+
local damagePerInterval = buff[111] or 0
|
|
272
294
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
273
|
-
source:damageTarget(buff[
|
|
295
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
274
296
|
end
|
|
275
297
|
end
|
|
276
298
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
277
299
|
buffHealingIntervalTimerCallback(buff)
|
|
278
|
-
local timer = buff[
|
|
279
|
-
local healingInterval = buff[
|
|
300
|
+
local timer = buff[119]
|
|
301
|
+
local healingInterval = buff[117]
|
|
280
302
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
281
303
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
282
304
|
end
|
|
283
305
|
end
|
|
284
306
|
buffHealingIntervalTimerCallback = function(buff)
|
|
285
|
-
if buff[
|
|
307
|
+
if buff[117] ~= buff[112] then
|
|
286
308
|
buff:flashSpecialEffect()
|
|
287
309
|
end
|
|
288
|
-
local source = buff[
|
|
289
|
-
local remainingHealingOverDuration = buff[
|
|
310
|
+
local source = buff[102] or buff[101]
|
|
311
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
290
312
|
if remainingHealingOverDuration ~= 0 then
|
|
291
|
-
local healingInterval = buff[
|
|
313
|
+
local healingInterval = buff[117] or 0
|
|
292
314
|
if healingInterval ~= 0 then
|
|
293
315
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
294
|
-
source:healTarget(buff[
|
|
295
|
-
buff[
|
|
316
|
+
source:healTarget(buff[101], healing)
|
|
317
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
296
318
|
end
|
|
297
319
|
end
|
|
298
|
-
local healingPerInterval = buff[
|
|
320
|
+
local healingPerInterval = buff[116] or 0
|
|
299
321
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
300
|
-
source:healTarget(buff[
|
|
322
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
301
323
|
end
|
|
302
324
|
end
|
|
303
|
-
local
|
|
325
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
326
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
304
327
|
____exports.Buff = __TS__Class()
|
|
305
328
|
local Buff = ____exports.Buff
|
|
306
329
|
Buff.name = "Buff"
|
|
@@ -309,38 +332,44 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
309
332
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
310
333
|
self._unit = _unit
|
|
311
334
|
self.parameters = nil
|
|
312
|
-
self[100] =
|
|
335
|
+
self[100] = 0
|
|
336
|
+
self[101] = _unit
|
|
313
337
|
local typeId
|
|
314
338
|
local polarity
|
|
315
339
|
local resistanceType
|
|
316
340
|
local ability
|
|
341
|
+
local abilityBehavior
|
|
317
342
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
318
343
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
319
344
|
polarity = resistanceTypeOrPolarity
|
|
320
345
|
resistanceType = abilityOrParametersOrResistanceType
|
|
321
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
346
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
347
|
+
abilityBehavior = parametersOrAbility
|
|
348
|
+
ability = abilityBehavior.ability
|
|
349
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
322
350
|
ability = parametersOrAbility
|
|
323
|
-
|
|
324
|
-
ability = nil
|
|
351
|
+
elseif parametersOrAbility ~= nil then
|
|
325
352
|
parameters = parametersOrAbility
|
|
326
353
|
end
|
|
327
354
|
else
|
|
328
355
|
typeId = typeIdOrTypeIds
|
|
329
356
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
330
357
|
resistanceType = resistanceTypeOrPolarity
|
|
331
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
358
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
359
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
360
|
+
ability = abilityBehavior.ability
|
|
361
|
+
parameters = parametersOrAbility
|
|
362
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
332
363
|
ability = abilityOrParametersOrResistanceType
|
|
333
364
|
parameters = parametersOrAbility
|
|
334
|
-
|
|
335
|
-
ability = nil
|
|
365
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
336
366
|
parameters = abilityOrParametersOrResistanceType
|
|
367
|
+
else
|
|
368
|
+
parameters = parametersOrAbility
|
|
337
369
|
end
|
|
338
370
|
end
|
|
371
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
339
372
|
self.typeId = typeId
|
|
340
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
341
|
-
parameters = ability
|
|
342
|
-
ability = nil
|
|
343
|
-
end
|
|
344
373
|
local defaultParameters = self.constructor.defaultParameters
|
|
345
374
|
local level = parameters and parameters.level or defaultParameters.level
|
|
346
375
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -365,14 +394,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
365
394
|
end
|
|
366
395
|
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
367
396
|
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
397
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
398
|
+
if missProbability ~= nil then
|
|
399
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
400
|
+
self[146] = missProbability
|
|
401
|
+
end
|
|
368
402
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
369
403
|
if buffByTypeId == nil then
|
|
370
404
|
buffByTypeId = {}
|
|
371
405
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
372
406
|
end
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
407
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
408
|
+
local ____opt_15 = self.previousBuff
|
|
409
|
+
if ____opt_15 ~= nil then
|
|
410
|
+
____opt_15:destroy()
|
|
376
411
|
end
|
|
377
412
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
378
413
|
if uniqueGroup ~= nil then
|
|
@@ -386,13 +421,16 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
386
421
|
level,
|
|
387
422
|
duration,
|
|
388
423
|
spellStealPriority,
|
|
389
|
-
learnLevelMinimum
|
|
424
|
+
learnLevelMinimum,
|
|
425
|
+
missProbability
|
|
390
426
|
) then
|
|
427
|
+
self[100] = 1
|
|
391
428
|
UnitBehavior.prototype.destroy(self)
|
|
392
429
|
error(unsuccessfulApplicationMarker, 0)
|
|
393
430
|
end
|
|
394
431
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
395
432
|
if handle == nil then
|
|
433
|
+
self[100] = 1
|
|
396
434
|
UnitBehavior.prototype.destroy(self)
|
|
397
435
|
error(unsuccessfulApplicationMarker, 0)
|
|
398
436
|
end
|
|
@@ -401,20 +439,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
401
439
|
self._level = level
|
|
402
440
|
self._spellStealPriority = spellStealPriority
|
|
403
441
|
self._learnLevelMinimum = learnLevelMinimum
|
|
404
|
-
self[
|
|
405
|
-
self[
|
|
406
|
-
self[
|
|
407
|
-
self[
|
|
408
|
-
self[
|
|
442
|
+
self[102] = source
|
|
443
|
+
self[103] = duration or 0
|
|
444
|
+
self[104] = uniqueGroup
|
|
445
|
+
self[105] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
446
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
409
447
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
410
448
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
411
|
-
local
|
|
412
|
-
local
|
|
413
|
-
local
|
|
414
|
-
if
|
|
415
|
-
|
|
449
|
+
local ____ability_24 = ability
|
|
450
|
+
local ____level_25 = level
|
|
451
|
+
local ____temp_23 = parameters and parameters[buffBooleanParameter]
|
|
452
|
+
if ____temp_23 == nil then
|
|
453
|
+
____temp_23 = defaultParameters[buffBooleanParameter]
|
|
416
454
|
end
|
|
417
|
-
if resolveBooleanValue(
|
|
455
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
418
456
|
self[buffBooleanParameter] = true
|
|
419
457
|
end
|
|
420
458
|
end
|
|
@@ -430,11 +468,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
430
468
|
end
|
|
431
469
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
432
470
|
if maximumDuration ~= nil then
|
|
433
|
-
self[
|
|
471
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
434
472
|
end
|
|
435
473
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
436
474
|
if maximumRemainingDuration ~= nil then
|
|
437
|
-
self[
|
|
475
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
438
476
|
end
|
|
439
477
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
440
478
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -443,24 +481,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
443
481
|
abilityTypeIds = {}
|
|
444
482
|
self._abilityTypeIds = abilityTypeIds
|
|
445
483
|
end
|
|
446
|
-
for
|
|
484
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
485
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
447
486
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
448
487
|
if addedAbility ~= nil then
|
|
449
488
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
450
489
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
454
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
455
|
-
end
|
|
456
|
-
elseif abilityParameterKey ~= "level" then
|
|
457
|
-
abilityParameterKey:setValue(
|
|
458
|
-
addedAbility,
|
|
459
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
460
|
-
)
|
|
461
|
-
end
|
|
490
|
+
if abilityParameters.isButtonVisible == false then
|
|
491
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
462
492
|
end
|
|
463
|
-
|
|
493
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
494
|
+
field[1]:setValue(
|
|
495
|
+
addedAbility,
|
|
496
|
+
resolveNumberValue(ability, level, field[2])
|
|
497
|
+
)
|
|
498
|
+
end
|
|
499
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
464
500
|
end
|
|
465
501
|
end
|
|
466
502
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -472,18 +508,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
472
508
|
self._behaviors = behaviors
|
|
473
509
|
end
|
|
474
510
|
end
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
if
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
511
|
+
if parameters ~= nil then
|
|
512
|
+
local additionalParameters = {}
|
|
513
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
514
|
+
if not buffParametersKeys[key] then
|
|
515
|
+
if ability then
|
|
516
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
517
|
+
else
|
|
518
|
+
additionalParameters[key] = parameters[key]
|
|
519
|
+
end
|
|
482
520
|
end
|
|
483
521
|
end
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
522
|
+
if (next(additionalParameters)) ~= nil then
|
|
523
|
+
self.parameters = additionalParameters
|
|
524
|
+
end
|
|
487
525
|
end
|
|
488
526
|
end
|
|
489
527
|
if duration ~= nil and duration > 0 then
|
|
@@ -492,32 +530,51 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
492
530
|
self._timer = timer
|
|
493
531
|
end
|
|
494
532
|
self:onCreate()
|
|
533
|
+
self[100] = 1
|
|
534
|
+
Event.invoke(buffCreatedEvent, self)
|
|
495
535
|
end
|
|
496
|
-
function Buff.prototype.
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
536
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
537
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
538
|
+
local abilityCooldownModifier = self[148]
|
|
539
|
+
if abilityCooldownModifier then
|
|
540
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
541
|
+
end
|
|
542
|
+
end
|
|
500
543
|
end
|
|
501
|
-
function Buff.prototype.
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
544
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
545
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
546
|
+
local abilityCooldownModifier = self[148]
|
|
547
|
+
if abilityCooldownModifier then
|
|
548
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
549
|
+
end
|
|
506
550
|
end
|
|
507
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
508
551
|
end
|
|
509
552
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
553
|
+
self:flash(
|
|
554
|
+
self[105],
|
|
555
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin",
|
|
556
|
+
widgetOrXOrParametersOrDuration,
|
|
557
|
+
yOrParametersOrDuration,
|
|
558
|
+
parametersOrDuration
|
|
559
|
+
)
|
|
560
|
+
end
|
|
561
|
+
function Buff.prototype.flashSpecialEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
562
|
+
self:flash(
|
|
563
|
+
self[106],
|
|
564
|
+
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin",
|
|
565
|
+
widgetOrXOrParametersOrDuration,
|
|
566
|
+
yOrParametersOrDuration,
|
|
567
|
+
parametersOrDuration
|
|
568
|
+
)
|
|
569
|
+
end
|
|
570
|
+
function Buff.prototype.flash(self, modelPath, attachmentPoint, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
510
571
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
511
|
-
Effect:flash(
|
|
572
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
512
573
|
else
|
|
513
574
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
514
575
|
local ____Effect_40 = Effect
|
|
515
576
|
local ____Effect_flash_41 = Effect.flash
|
|
516
|
-
local ____array_39 = __TS__SparseArrayNew(
|
|
517
|
-
self[104],
|
|
518
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
519
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
520
|
-
)
|
|
577
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
521
578
|
local ____isWidgetProvided_38
|
|
522
579
|
if isWidgetProvided then
|
|
523
580
|
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
@@ -531,44 +588,28 @@ function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrPa
|
|
|
531
588
|
)
|
|
532
589
|
end
|
|
533
590
|
end
|
|
534
|
-
function Buff.prototype.
|
|
535
|
-
|
|
536
|
-
local ____Effect_44 = Effect
|
|
537
|
-
local ____Effect_flash_45 = Effect.flash
|
|
538
|
-
local ____array_43 = __TS__SparseArrayNew(
|
|
539
|
-
self[105],
|
|
540
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
541
|
-
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
542
|
-
)
|
|
543
|
-
local ____isWidgetProvided_42
|
|
544
|
-
if isWidgetProvided then
|
|
545
|
-
____isWidgetProvided_42 = duration
|
|
546
|
-
else
|
|
547
|
-
____isWidgetProvided_42 = widgetOrDuration
|
|
548
|
-
end
|
|
549
|
-
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
550
|
-
____Effect_flash_45(
|
|
551
|
-
____Effect_44,
|
|
552
|
-
__TS__SparseArraySpread(____array_43)
|
|
553
|
-
)
|
|
591
|
+
function Buff.prototype.expire(self)
|
|
592
|
+
expireBuff(self)
|
|
554
593
|
end
|
|
555
594
|
function Buff.prototype.onCreate(self)
|
|
556
595
|
end
|
|
557
596
|
function Buff.prototype.onDestroy(self)
|
|
597
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
598
|
+
self[100] = 2
|
|
558
599
|
local unit = self._unit
|
|
559
600
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
560
601
|
removeBuff(unit.handle, self.typeId)
|
|
561
602
|
end
|
|
562
603
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
563
|
-
local healingIntervalTimer = self[
|
|
604
|
+
local healingIntervalTimer = self[119]
|
|
564
605
|
if healingIntervalTimer ~= nil then
|
|
565
606
|
healingIntervalTimer:destroy()
|
|
566
|
-
self[
|
|
607
|
+
self[119] = nil
|
|
567
608
|
end
|
|
568
|
-
local damageIntervalTimer = self[
|
|
609
|
+
local damageIntervalTimer = self[114]
|
|
569
610
|
if damageIntervalTimer ~= nil then
|
|
570
611
|
damageIntervalTimer:destroy()
|
|
571
|
-
self[
|
|
612
|
+
self[114] = nil
|
|
572
613
|
end
|
|
573
614
|
if self._timer ~= nil then
|
|
574
615
|
self._timer:destroy()
|
|
@@ -578,26 +619,34 @@ function Buff.prototype.onDestroy(self)
|
|
|
578
619
|
behavior:destroy()
|
|
579
620
|
end
|
|
580
621
|
end
|
|
581
|
-
|
|
622
|
+
local previousAbilityCooldownModifier = self[148]
|
|
623
|
+
if previousAbilityCooldownModifier then
|
|
624
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
625
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
626
|
+
end
|
|
627
|
+
end
|
|
628
|
+
if self[143] then
|
|
629
|
+
unit:decrementInvulnerabilityCounter()
|
|
630
|
+
end
|
|
631
|
+
if self[142] then
|
|
582
632
|
unit:decrementDisableAutoAttackCounter()
|
|
583
633
|
end
|
|
584
|
-
if self[
|
|
585
|
-
if self[
|
|
586
|
-
unit:
|
|
634
|
+
if self[140] then
|
|
635
|
+
if self[141] then
|
|
636
|
+
unit:decrementForceStunCounter()
|
|
587
637
|
end
|
|
588
638
|
unit:decrementStunCounter()
|
|
589
639
|
end
|
|
640
|
+
if self[139] then
|
|
641
|
+
unit:decrementGhostCounter()
|
|
642
|
+
end
|
|
590
643
|
if self._abilityTypeIds ~= nil then
|
|
591
|
-
for abilityTypeId in
|
|
644
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
592
645
|
unit:removeAbility(abilityTypeId)
|
|
593
646
|
end
|
|
594
647
|
end
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
598
|
-
end
|
|
599
|
-
end
|
|
600
|
-
Event.invoke(buffDestroyEvent, self)
|
|
648
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
649
|
+
self[100] = 3
|
|
601
650
|
return UnitBehavior.prototype.onDestroy(self)
|
|
602
651
|
end
|
|
603
652
|
function Buff.apply(self, ...)
|
|
@@ -625,8 +674,8 @@ function Buff.apply(self, ...)
|
|
|
625
674
|
end
|
|
626
675
|
end
|
|
627
676
|
function Buff.getByTypeId(self, unit, typeId)
|
|
628
|
-
local
|
|
629
|
-
local buff =
|
|
677
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
678
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
630
679
|
if __TS__InstanceOf(buff, self) then
|
|
631
680
|
return buff
|
|
632
681
|
end
|
|
@@ -634,72 +683,84 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
634
683
|
end
|
|
635
684
|
function Buff.prototype.onExpiration(self)
|
|
636
685
|
local unit = self.unit
|
|
637
|
-
if self[119] ~= nil then
|
|
638
|
-
(self[101] or unit):damageTarget(unit, self[119] or 0)
|
|
639
|
-
end
|
|
640
686
|
if self[120] ~= nil then
|
|
641
|
-
(self[
|
|
687
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
642
688
|
end
|
|
643
|
-
if self[
|
|
689
|
+
if self[121] ~= nil then
|
|
690
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
691
|
+
end
|
|
692
|
+
if self[145] then
|
|
644
693
|
unit:explode()
|
|
645
|
-
elseif self[
|
|
694
|
+
elseif self[144] then
|
|
646
695
|
unit:kill()
|
|
647
696
|
end
|
|
648
697
|
end
|
|
649
698
|
function Buff.prototype.onDeath(self, source)
|
|
650
699
|
local unit = self.unit
|
|
651
|
-
if self[
|
|
700
|
+
if self[122] ~= nil then
|
|
652
701
|
damageArea(
|
|
653
|
-
self[
|
|
654
|
-
self[
|
|
702
|
+
self[102] or unit,
|
|
703
|
+
self[122],
|
|
655
704
|
unit.x,
|
|
656
705
|
unit.y,
|
|
706
|
+
self[124] or 0,
|
|
657
707
|
self[123] or 0,
|
|
658
|
-
self[
|
|
708
|
+
self[126] or 0,
|
|
659
709
|
self[125] or 0,
|
|
660
|
-
self[
|
|
661
|
-
self[127] or 0
|
|
662
|
-
self[126] or 0
|
|
710
|
+
self[128] or 0,
|
|
711
|
+
self[127] or 0
|
|
663
712
|
)
|
|
664
713
|
end
|
|
665
714
|
end
|
|
666
715
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
667
716
|
if event.isAttack then
|
|
668
|
-
if self[
|
|
669
|
-
local durationIncrease = self[
|
|
670
|
-
local maximumDuration = self[
|
|
717
|
+
if self[107] ~= nil then
|
|
718
|
+
local durationIncrease = self[107]
|
|
719
|
+
local maximumDuration = self[108] or 0
|
|
671
720
|
if maximumDuration > 0 then
|
|
672
721
|
durationIncrease = min(
|
|
673
722
|
durationIncrease,
|
|
674
|
-
max(0, maximumDuration - self[
|
|
723
|
+
max(0, maximumDuration - self[103])
|
|
675
724
|
)
|
|
676
725
|
end
|
|
677
726
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
678
|
-
local maximumRemainingDuration = self[
|
|
727
|
+
local maximumRemainingDuration = self[109] or 0
|
|
679
728
|
if maximumRemainingDuration > 0 then
|
|
680
729
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
681
730
|
end
|
|
682
731
|
self.remainingDuration = remainingDuration
|
|
683
732
|
end
|
|
684
|
-
local autoAttackCount = (self[
|
|
685
|
-
self[
|
|
686
|
-
if autoAttackCount == self[
|
|
733
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
734
|
+
self[129] = autoAttackCount
|
|
735
|
+
if autoAttackCount == self[130] then
|
|
687
736
|
self:destroy()
|
|
688
737
|
end
|
|
689
738
|
end
|
|
690
739
|
if event.originalAmount ~= 0 then
|
|
691
|
-
local damageDealtEventCount = (self[
|
|
692
|
-
self[
|
|
693
|
-
if damageDealtEventCount == self[
|
|
740
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
741
|
+
self[131] = damageDealtEventCount
|
|
742
|
+
if damageDealtEventCount == self[132] then
|
|
694
743
|
self:destroy()
|
|
695
744
|
end
|
|
696
745
|
end
|
|
697
746
|
end
|
|
698
747
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
699
748
|
if event.originalAmount ~= 0 then
|
|
700
|
-
local
|
|
701
|
-
|
|
702
|
-
|
|
749
|
+
local absorbedDamage = min(event.amount * (self[135] or 1), (self[136] or 0) - (self[137] or 0))
|
|
750
|
+
if absorbedDamage > 0 then
|
|
751
|
+
event.amount = event.amount - absorbedDamage
|
|
752
|
+
self[137] = (self[137] or 0) + absorbedDamage
|
|
753
|
+
local ____self__138_44 = self[138]
|
|
754
|
+
if ____self__138_44 == nil then
|
|
755
|
+
____self__138_44 = true
|
|
756
|
+
end
|
|
757
|
+
if ____self__138_44 and self[137] >= (self[136] or 0) then
|
|
758
|
+
self:destroy()
|
|
759
|
+
end
|
|
760
|
+
end
|
|
761
|
+
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
762
|
+
self[133] = damageReceivedEventCount
|
|
763
|
+
if damageReceivedEventCount == self[134] then
|
|
703
764
|
self:destroy()
|
|
704
765
|
end
|
|
705
766
|
end
|
|
@@ -709,7 +770,7 @@ __TS__SetDescriptor(
|
|
|
709
770
|
Buff.prototype,
|
|
710
771
|
"source",
|
|
711
772
|
{get = function(self)
|
|
712
|
-
return self[
|
|
773
|
+
return self[102] or self._unit
|
|
713
774
|
end},
|
|
714
775
|
true
|
|
715
776
|
)
|
|
@@ -726,13 +787,13 @@ __TS__SetDescriptor(
|
|
|
726
787
|
"remainingDamageOverDuration",
|
|
727
788
|
{
|
|
728
789
|
get = function(self)
|
|
729
|
-
return self[
|
|
790
|
+
return self[113] or 0
|
|
730
791
|
end,
|
|
731
792
|
set = function(self, remainingDamageOverDuration)
|
|
732
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
733
|
-
self[
|
|
734
|
-
local damageOverDuration = (self[
|
|
735
|
-
self[
|
|
793
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[113] or 0)
|
|
794
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
795
|
+
local damageOverDuration = (self[110] or 0) + remainingDamageOverDurationDelta
|
|
796
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
736
797
|
end
|
|
737
798
|
},
|
|
738
799
|
true
|
|
@@ -742,13 +803,13 @@ __TS__SetDescriptor(
|
|
|
742
803
|
"damageOverDuration",
|
|
743
804
|
{
|
|
744
805
|
get = function(self)
|
|
745
|
-
return self[
|
|
806
|
+
return self[110] or 0
|
|
746
807
|
end,
|
|
747
808
|
set = function(self, damageOverDuration)
|
|
748
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
749
|
-
self[
|
|
750
|
-
local remainingDamageOverDuration = (self[
|
|
751
|
-
self[
|
|
809
|
+
local damageOverDurationDelta = damageOverDuration - (self[110] or 0)
|
|
810
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
811
|
+
local remainingDamageOverDuration = (self[113] or 0) + damageOverDurationDelta
|
|
812
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
752
813
|
end
|
|
753
814
|
},
|
|
754
815
|
true
|
|
@@ -758,10 +819,10 @@ __TS__SetDescriptor(
|
|
|
758
819
|
"damagePerInterval",
|
|
759
820
|
{
|
|
760
821
|
get = function(self)
|
|
761
|
-
return self[
|
|
822
|
+
return self[111] or 0
|
|
762
823
|
end,
|
|
763
824
|
set = function(self, damagePerInterval)
|
|
764
|
-
self[
|
|
825
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
765
826
|
end
|
|
766
827
|
},
|
|
767
828
|
true
|
|
@@ -771,25 +832,25 @@ __TS__SetDescriptor(
|
|
|
771
832
|
"damageInterval",
|
|
772
833
|
{
|
|
773
834
|
get = function(self)
|
|
774
|
-
return self[
|
|
835
|
+
return self[112] or 0
|
|
775
836
|
end,
|
|
776
837
|
set = function(self, damageInterval)
|
|
777
838
|
if damageInterval <= 0 then
|
|
778
|
-
self[
|
|
779
|
-
local timer = self[
|
|
839
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
840
|
+
local timer = self[114]
|
|
780
841
|
if timer ~= nil then
|
|
781
842
|
timer:destroy()
|
|
782
|
-
self[
|
|
843
|
+
self[114] = nil
|
|
783
844
|
end
|
|
784
845
|
return
|
|
785
846
|
end
|
|
786
|
-
self[
|
|
787
|
-
local
|
|
788
|
-
local elapsed =
|
|
789
|
-
local timer = self[
|
|
847
|
+
self[112] = damageInterval
|
|
848
|
+
local ____opt_45 = self._timer
|
|
849
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
850
|
+
local timer = self[114]
|
|
790
851
|
if timer == nil then
|
|
791
852
|
timer = Timer:create()
|
|
792
|
-
self[
|
|
853
|
+
self[114] = timer
|
|
793
854
|
end
|
|
794
855
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
795
856
|
if initialDelay == damageInterval then
|
|
@@ -806,13 +867,13 @@ __TS__SetDescriptor(
|
|
|
806
867
|
"remainingHealingOverDuration",
|
|
807
868
|
{
|
|
808
869
|
get = function(self)
|
|
809
|
-
return self[
|
|
870
|
+
return self[118] or 0
|
|
810
871
|
end,
|
|
811
872
|
set = function(self, remainingHealingOverDuration)
|
|
812
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
813
|
-
self[
|
|
814
|
-
local healingOverDuration = (self[
|
|
815
|
-
self[
|
|
873
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[118] or 0)
|
|
874
|
+
self[113] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
875
|
+
local healingOverDuration = (self[115] or 0) + remainingHealingOverDurationDelta
|
|
876
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
816
877
|
end
|
|
817
878
|
},
|
|
818
879
|
true
|
|
@@ -822,13 +883,13 @@ __TS__SetDescriptor(
|
|
|
822
883
|
"healingOverDuration",
|
|
823
884
|
{
|
|
824
885
|
get = function(self)
|
|
825
|
-
return self[
|
|
886
|
+
return self[115] or 0
|
|
826
887
|
end,
|
|
827
888
|
set = function(self, healingOverDuration)
|
|
828
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
829
|
-
self[
|
|
830
|
-
local remainingHealingOverDuration = (self[
|
|
831
|
-
self[
|
|
889
|
+
local healingOverDurationDelta = healingOverDuration - (self[115] or 0)
|
|
890
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
891
|
+
local remainingHealingOverDuration = (self[118] or 0) + healingOverDurationDelta
|
|
892
|
+
self[118] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
832
893
|
end
|
|
833
894
|
},
|
|
834
895
|
true
|
|
@@ -838,10 +899,10 @@ __TS__SetDescriptor(
|
|
|
838
899
|
"healingPerInterval",
|
|
839
900
|
{
|
|
840
901
|
get = function(self)
|
|
841
|
-
return self[
|
|
902
|
+
return self[116] or 0
|
|
842
903
|
end,
|
|
843
904
|
set = function(self, healingPerInterval)
|
|
844
|
-
self[
|
|
905
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
845
906
|
end
|
|
846
907
|
},
|
|
847
908
|
true
|
|
@@ -851,25 +912,25 @@ __TS__SetDescriptor(
|
|
|
851
912
|
"healingInterval",
|
|
852
913
|
{
|
|
853
914
|
get = function(self)
|
|
854
|
-
return self[
|
|
915
|
+
return self[117] or 0
|
|
855
916
|
end,
|
|
856
917
|
set = function(self, healingInterval)
|
|
857
918
|
if healingInterval <= 0 then
|
|
858
|
-
self[
|
|
859
|
-
local timer = self[
|
|
919
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
920
|
+
local timer = self[119]
|
|
860
921
|
if timer ~= nil then
|
|
861
922
|
timer:destroy()
|
|
862
|
-
self[
|
|
923
|
+
self[119] = nil
|
|
863
924
|
end
|
|
864
925
|
return
|
|
865
926
|
end
|
|
866
|
-
self[
|
|
867
|
-
local
|
|
868
|
-
local elapsed =
|
|
869
|
-
local timer = self[
|
|
927
|
+
self[117] = healingInterval
|
|
928
|
+
local ____opt_47 = self._timer
|
|
929
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
930
|
+
local timer = self[119]
|
|
870
931
|
if timer == nil then
|
|
871
932
|
timer = Timer:create()
|
|
872
|
-
self[
|
|
933
|
+
self[119] = timer
|
|
873
934
|
end
|
|
874
935
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
875
936
|
if initialDelay == healingInterval then
|
|
@@ -886,10 +947,10 @@ __TS__SetDescriptor(
|
|
|
886
947
|
"damageOnExpiration",
|
|
887
948
|
{
|
|
888
949
|
get = function(self)
|
|
889
|
-
return self[
|
|
950
|
+
return self[120] or 0
|
|
890
951
|
end,
|
|
891
952
|
set = function(self, damageOnExpiration)
|
|
892
|
-
self[
|
|
953
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
893
954
|
end
|
|
894
955
|
},
|
|
895
956
|
true
|
|
@@ -899,10 +960,10 @@ __TS__SetDescriptor(
|
|
|
899
960
|
"healingOnExpiration",
|
|
900
961
|
{
|
|
901
962
|
get = function(self)
|
|
902
|
-
return self[
|
|
963
|
+
return self[121] or 0
|
|
903
964
|
end,
|
|
904
965
|
set = function(self, healingOnExpiration)
|
|
905
|
-
self[
|
|
966
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
906
967
|
end
|
|
907
968
|
},
|
|
908
969
|
true
|
|
@@ -946,30 +1007,79 @@ __TS__SetDescriptor(
|
|
|
946
1007
|
},
|
|
947
1008
|
true
|
|
948
1009
|
)
|
|
1010
|
+
__TS__SetDescriptor(
|
|
1011
|
+
Buff.prototype,
|
|
1012
|
+
"maxHealthIncrease",
|
|
1013
|
+
{
|
|
1014
|
+
get = function(self)
|
|
1015
|
+
return self:getUnitBonus(UnitBonusType.HEALTH)
|
|
1016
|
+
end,
|
|
1017
|
+
set = function(self, maxHealthIncrease)
|
|
1018
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.HEALTH, maxHealthIncrease)
|
|
1019
|
+
end
|
|
1020
|
+
},
|
|
1021
|
+
true
|
|
1022
|
+
)
|
|
1023
|
+
__TS__SetDescriptor(
|
|
1024
|
+
Buff.prototype,
|
|
1025
|
+
"maxManaIncrease",
|
|
1026
|
+
{
|
|
1027
|
+
get = function(self)
|
|
1028
|
+
return self:getUnitBonus(UnitBonusType.MANA)
|
|
1029
|
+
end,
|
|
1030
|
+
set = function(self, maxManaIncrease)
|
|
1031
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA, maxManaIncrease)
|
|
1032
|
+
end
|
|
1033
|
+
},
|
|
1034
|
+
true
|
|
1035
|
+
)
|
|
1036
|
+
__TS__SetDescriptor(
|
|
1037
|
+
Buff.prototype,
|
|
1038
|
+
"turnsIntoGhost",
|
|
1039
|
+
{
|
|
1040
|
+
get = function(self)
|
|
1041
|
+
local ____self__139_49 = self[139]
|
|
1042
|
+
if ____self__139_49 == nil then
|
|
1043
|
+
____self__139_49 = false
|
|
1044
|
+
end
|
|
1045
|
+
return ____self__139_49
|
|
1046
|
+
end,
|
|
1047
|
+
set = function(self, turnsIntoGhost)
|
|
1048
|
+
if not turnsIntoGhost and self[139] then
|
|
1049
|
+
self.object:decrementGhostCounter()
|
|
1050
|
+
self[139] = nil
|
|
1051
|
+
elseif turnsIntoGhost and not self[139] then
|
|
1052
|
+
self.object:incrementGhostCounter()
|
|
1053
|
+
self[139] = true
|
|
1054
|
+
end
|
|
1055
|
+
end
|
|
1056
|
+
},
|
|
1057
|
+
true
|
|
1058
|
+
)
|
|
949
1059
|
__TS__SetDescriptor(
|
|
950
1060
|
Buff.prototype,
|
|
951
1061
|
"stuns",
|
|
952
1062
|
{
|
|
953
1063
|
get = function(self)
|
|
954
|
-
local
|
|
955
|
-
if
|
|
956
|
-
|
|
1064
|
+
local ____self__140_50 = self[140]
|
|
1065
|
+
if ____self__140_50 == nil then
|
|
1066
|
+
____self__140_50 = false
|
|
957
1067
|
end
|
|
958
|
-
return
|
|
1068
|
+
return ____self__140_50
|
|
959
1069
|
end,
|
|
960
1070
|
set = function(self, stuns)
|
|
961
|
-
if not stuns and self[
|
|
962
|
-
if self[
|
|
963
|
-
self.object:
|
|
1071
|
+
if not stuns and self[140] then
|
|
1072
|
+
if self[141] then
|
|
1073
|
+
self.object:decrementForceStunCounter()
|
|
964
1074
|
end
|
|
965
1075
|
self.object:decrementStunCounter()
|
|
966
|
-
self[
|
|
967
|
-
elseif stuns and not self[
|
|
968
|
-
if self[
|
|
969
|
-
self.object:
|
|
1076
|
+
self[140] = nil
|
|
1077
|
+
elseif stuns and not self[140] then
|
|
1078
|
+
if self[141] then
|
|
1079
|
+
self.object:incrementForceStunCounter()
|
|
970
1080
|
end
|
|
971
1081
|
self.object:incrementStunCounter()
|
|
972
|
-
self[
|
|
1082
|
+
self[140] = true
|
|
973
1083
|
end
|
|
974
1084
|
end
|
|
975
1085
|
},
|
|
@@ -980,23 +1090,23 @@ __TS__SetDescriptor(
|
|
|
980
1090
|
"ignoresStunImmunity",
|
|
981
1091
|
{
|
|
982
1092
|
get = function(self)
|
|
983
|
-
local
|
|
984
|
-
if
|
|
985
|
-
|
|
1093
|
+
local ____self__141_51 = self[141]
|
|
1094
|
+
if ____self__141_51 == nil then
|
|
1095
|
+
____self__141_51 = false
|
|
986
1096
|
end
|
|
987
|
-
return
|
|
1097
|
+
return ____self__141_51
|
|
988
1098
|
end,
|
|
989
1099
|
set = function(self, ignoresStunImmunity)
|
|
990
|
-
if not ignoresStunImmunity and self[
|
|
991
|
-
if self[
|
|
992
|
-
self.object:
|
|
1100
|
+
if not ignoresStunImmunity and self[141] then
|
|
1101
|
+
if self[140] then
|
|
1102
|
+
self.object:decrementForceStunCounter()
|
|
993
1103
|
end
|
|
994
|
-
self[
|
|
995
|
-
elseif ignoresStunImmunity and not self[
|
|
996
|
-
if self[
|
|
997
|
-
self.object:
|
|
1104
|
+
self[141] = nil
|
|
1105
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1106
|
+
if self[140] then
|
|
1107
|
+
self.object:incrementForceStunCounter()
|
|
998
1108
|
end
|
|
999
|
-
self[
|
|
1109
|
+
self[141] = true
|
|
1000
1110
|
end
|
|
1001
1111
|
end
|
|
1002
1112
|
},
|
|
@@ -1007,19 +1117,19 @@ __TS__SetDescriptor(
|
|
|
1007
1117
|
"disablesAutoAttack",
|
|
1008
1118
|
{
|
|
1009
1119
|
get = function(self)
|
|
1010
|
-
local
|
|
1011
|
-
if
|
|
1012
|
-
|
|
1120
|
+
local ____self__142_52 = self[142]
|
|
1121
|
+
if ____self__142_52 == nil then
|
|
1122
|
+
____self__142_52 = false
|
|
1013
1123
|
end
|
|
1014
|
-
return
|
|
1124
|
+
return ____self__142_52
|
|
1015
1125
|
end,
|
|
1016
1126
|
set = function(self, disablesAutoAttack)
|
|
1017
|
-
if not disablesAutoAttack and self[
|
|
1127
|
+
if not disablesAutoAttack and self[142] then
|
|
1018
1128
|
self.object:decrementDisableAutoAttackCounter()
|
|
1019
|
-
self[
|
|
1020
|
-
elseif disablesAutoAttack and not self[
|
|
1129
|
+
self[142] = nil
|
|
1130
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1021
1131
|
self.object:incrementDisableAutoAttackCounter()
|
|
1022
|
-
self[
|
|
1132
|
+
self[142] = true
|
|
1023
1133
|
end
|
|
1024
1134
|
end
|
|
1025
1135
|
},
|
|
@@ -1030,19 +1140,19 @@ __TS__SetDescriptor(
|
|
|
1030
1140
|
"providesInvulnerability",
|
|
1031
1141
|
{
|
|
1032
1142
|
get = function(self)
|
|
1033
|
-
local
|
|
1034
|
-
if
|
|
1035
|
-
|
|
1143
|
+
local ____self__143_53 = self[143]
|
|
1144
|
+
if ____self__143_53 == nil then
|
|
1145
|
+
____self__143_53 = false
|
|
1036
1146
|
end
|
|
1037
|
-
return
|
|
1147
|
+
return ____self__143_53
|
|
1038
1148
|
end,
|
|
1039
1149
|
set = function(self, providesInvulnerability)
|
|
1040
|
-
if not providesInvulnerability and self[
|
|
1150
|
+
if not providesInvulnerability and self[143] then
|
|
1041
1151
|
self.object:decrementInvulnerabilityCounter()
|
|
1042
|
-
self[
|
|
1043
|
-
elseif providesInvulnerability and not self[
|
|
1152
|
+
self[143] = nil
|
|
1153
|
+
elseif providesInvulnerability and not self[143] then
|
|
1044
1154
|
self.object:incrementInvulnerabilityCounter()
|
|
1045
|
-
self[
|
|
1155
|
+
self[143] = true
|
|
1046
1156
|
end
|
|
1047
1157
|
end
|
|
1048
1158
|
},
|
|
@@ -1053,17 +1163,17 @@ __TS__SetDescriptor(
|
|
|
1053
1163
|
"killsOnExpiration",
|
|
1054
1164
|
{
|
|
1055
1165
|
get = function(self)
|
|
1056
|
-
local
|
|
1057
|
-
if
|
|
1058
|
-
|
|
1166
|
+
local ____self__144_54 = self[144]
|
|
1167
|
+
if ____self__144_54 == nil then
|
|
1168
|
+
____self__144_54 = false
|
|
1059
1169
|
end
|
|
1060
|
-
return
|
|
1170
|
+
return ____self__144_54
|
|
1061
1171
|
end,
|
|
1062
1172
|
set = function(self, killsOnExpiration)
|
|
1063
|
-
if not killsOnExpiration and self[
|
|
1064
|
-
self[
|
|
1065
|
-
elseif killsOnExpiration and not self[
|
|
1066
|
-
self[
|
|
1173
|
+
if not killsOnExpiration and self[144] then
|
|
1174
|
+
self[144] = nil
|
|
1175
|
+
elseif killsOnExpiration and not self[144] then
|
|
1176
|
+
self[144] = true
|
|
1067
1177
|
end
|
|
1068
1178
|
end
|
|
1069
1179
|
},
|
|
@@ -1074,17 +1184,17 @@ __TS__SetDescriptor(
|
|
|
1074
1184
|
"explodesOnExpiration",
|
|
1075
1185
|
{
|
|
1076
1186
|
get = function(self)
|
|
1077
|
-
local
|
|
1078
|
-
if
|
|
1079
|
-
|
|
1187
|
+
local ____self__145_55 = self[145]
|
|
1188
|
+
if ____self__145_55 == nil then
|
|
1189
|
+
____self__145_55 = false
|
|
1080
1190
|
end
|
|
1081
|
-
return
|
|
1191
|
+
return ____self__145_55
|
|
1082
1192
|
end,
|
|
1083
1193
|
set = function(self, killsOnExpiration)
|
|
1084
|
-
if not killsOnExpiration and self[
|
|
1085
|
-
self[
|
|
1086
|
-
elseif killsOnExpiration and not self[
|
|
1087
|
-
self[
|
|
1194
|
+
if not killsOnExpiration and self[145] then
|
|
1195
|
+
self[145] = nil
|
|
1196
|
+
elseif killsOnExpiration and not self[145] then
|
|
1197
|
+
self[145] = true
|
|
1088
1198
|
end
|
|
1089
1199
|
end
|
|
1090
1200
|
},
|
|
@@ -1095,13 +1205,13 @@ __TS__SetDescriptor(
|
|
|
1095
1205
|
"maximumDamageDealtEventCount",
|
|
1096
1206
|
{
|
|
1097
1207
|
get = function(self)
|
|
1098
|
-
return self[
|
|
1208
|
+
return self[132] or 0
|
|
1099
1209
|
end,
|
|
1100
1210
|
set = function(self, maximumDamageDealtEventCount)
|
|
1101
1211
|
if maximumDamageDealtEventCount == 0 then
|
|
1102
|
-
self[
|
|
1212
|
+
self[132] = nil
|
|
1103
1213
|
else
|
|
1104
|
-
self[
|
|
1214
|
+
self[132] = maximumDamageDealtEventCount
|
|
1105
1215
|
end
|
|
1106
1216
|
end
|
|
1107
1217
|
},
|
|
@@ -1112,13 +1222,13 @@ __TS__SetDescriptor(
|
|
|
1112
1222
|
"maximumDamageReceivedEventCount",
|
|
1113
1223
|
{
|
|
1114
1224
|
get = function(self)
|
|
1115
|
-
return self[
|
|
1225
|
+
return self[134] or 0
|
|
1116
1226
|
end,
|
|
1117
1227
|
set = function(self, maximumDamageReceivedEventCount)
|
|
1118
1228
|
if maximumDamageReceivedEventCount == 0 then
|
|
1119
|
-
self[
|
|
1229
|
+
self[134] = nil
|
|
1120
1230
|
else
|
|
1121
|
-
self[
|
|
1231
|
+
self[134] = maximumDamageReceivedEventCount
|
|
1122
1232
|
end
|
|
1123
1233
|
end
|
|
1124
1234
|
},
|
|
@@ -1129,13 +1239,13 @@ __TS__SetDescriptor(
|
|
|
1129
1239
|
"maximumAutoAttackCount",
|
|
1130
1240
|
{
|
|
1131
1241
|
get = function(self)
|
|
1132
|
-
return self[
|
|
1242
|
+
return self[130] or 0
|
|
1133
1243
|
end,
|
|
1134
1244
|
set = function(self, maximumAutoAttackCount)
|
|
1135
1245
|
if maximumAutoAttackCount == 0 then
|
|
1136
|
-
self[
|
|
1246
|
+
self[130] = nil
|
|
1137
1247
|
else
|
|
1138
|
-
self[
|
|
1248
|
+
self[130] = maximumAutoAttackCount
|
|
1139
1249
|
end
|
|
1140
1250
|
end
|
|
1141
1251
|
},
|
|
@@ -1146,10 +1256,10 @@ __TS__SetDescriptor(
|
|
|
1146
1256
|
"durationIncreaseOnAutoAttack",
|
|
1147
1257
|
{
|
|
1148
1258
|
get = function(self)
|
|
1149
|
-
return self[
|
|
1259
|
+
return self[107] or 0
|
|
1150
1260
|
end,
|
|
1151
1261
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1152
|
-
self[
|
|
1262
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
1153
1263
|
end
|
|
1154
1264
|
},
|
|
1155
1265
|
true
|
|
@@ -1193,12 +1303,39 @@ __TS__SetDescriptor(
|
|
|
1193
1303
|
},
|
|
1194
1304
|
true
|
|
1195
1305
|
)
|
|
1306
|
+
__TS__SetDescriptor(
|
|
1307
|
+
Buff.prototype,
|
|
1308
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1309
|
+
{
|
|
1310
|
+
get = function(self)
|
|
1311
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1312
|
+
end,
|
|
1313
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1314
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1315
|
+
end
|
|
1316
|
+
},
|
|
1317
|
+
true
|
|
1318
|
+
)
|
|
1196
1319
|
__TS__SetDescriptor(
|
|
1197
1320
|
Buff.prototype,
|
|
1198
1321
|
"duration",
|
|
1199
|
-
{
|
|
1200
|
-
|
|
1201
|
-
|
|
1322
|
+
{
|
|
1323
|
+
get = function(self)
|
|
1324
|
+
return self[103]
|
|
1325
|
+
end,
|
|
1326
|
+
set = function(self, duration)
|
|
1327
|
+
if duration <= 0 then
|
|
1328
|
+
local timer = self._timer
|
|
1329
|
+
if timer ~= nil then
|
|
1330
|
+
timer:destroy()
|
|
1331
|
+
self._timer = nil
|
|
1332
|
+
end
|
|
1333
|
+
self[103] = 0
|
|
1334
|
+
else
|
|
1335
|
+
self.remainingDuration = self.remainingDuration + (duration - self[103])
|
|
1336
|
+
end
|
|
1337
|
+
end
|
|
1338
|
+
},
|
|
1202
1339
|
true
|
|
1203
1340
|
)
|
|
1204
1341
|
__TS__SetDescriptor(
|
|
@@ -1206,15 +1343,15 @@ __TS__SetDescriptor(
|
|
|
1206
1343
|
"remainingDuration",
|
|
1207
1344
|
{
|
|
1208
1345
|
get = function(self)
|
|
1209
|
-
local
|
|
1210
|
-
return
|
|
1346
|
+
local ____opt_56 = self._timer
|
|
1347
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1211
1348
|
end,
|
|
1212
1349
|
set = function(self, remainingDuration)
|
|
1213
|
-
local
|
|
1214
|
-
local
|
|
1215
|
-
local remainingDurationDelta =
|
|
1350
|
+
local ____remainingDuration_60 = remainingDuration
|
|
1351
|
+
local ____opt_58 = self._timer
|
|
1352
|
+
local remainingDurationDelta = ____remainingDuration_60 - (____opt_58 and ____opt_58.remaining or 0)
|
|
1216
1353
|
if remainingDurationDelta ~= 0 then
|
|
1217
|
-
self[
|
|
1354
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1218
1355
|
if remainingDuration <= 0 then
|
|
1219
1356
|
Timer:run(destroyBuff, self)
|
|
1220
1357
|
else
|
|
@@ -1226,7 +1363,8 @@ __TS__SetDescriptor(
|
|
|
1226
1363
|
self._level,
|
|
1227
1364
|
remainingDuration,
|
|
1228
1365
|
self._spellStealPriority,
|
|
1229
|
-
self._learnLevelMinimum
|
|
1366
|
+
self._learnLevelMinimum,
|
|
1367
|
+
self[146]
|
|
1230
1368
|
) then
|
|
1231
1369
|
local timer = self._timer
|
|
1232
1370
|
if timer == nil then
|
|
@@ -1241,10 +1379,102 @@ __TS__SetDescriptor(
|
|
|
1241
1379
|
},
|
|
1242
1380
|
true
|
|
1243
1381
|
)
|
|
1244
|
-
|
|
1382
|
+
__TS__SetDescriptor(
|
|
1383
|
+
Buff.prototype,
|
|
1384
|
+
"absorbedDamageFactor",
|
|
1385
|
+
{
|
|
1386
|
+
get = function(self)
|
|
1387
|
+
return self[135] or 1
|
|
1388
|
+
end,
|
|
1389
|
+
set = function(self, absorbedDamageFactor)
|
|
1390
|
+
if absorbedDamageFactor == 1 then
|
|
1391
|
+
self[135] = nil
|
|
1392
|
+
else
|
|
1393
|
+
self[135] = absorbedDamageFactor
|
|
1394
|
+
end
|
|
1395
|
+
end
|
|
1396
|
+
},
|
|
1397
|
+
true
|
|
1398
|
+
)
|
|
1399
|
+
__TS__SetDescriptor(
|
|
1400
|
+
Buff.prototype,
|
|
1401
|
+
"maximumDamageAbsorbed",
|
|
1402
|
+
{
|
|
1403
|
+
get = function(self)
|
|
1404
|
+
return self[136] or 0
|
|
1405
|
+
end,
|
|
1406
|
+
set = function(self, maximumDamageAbsorbed)
|
|
1407
|
+
if maximumDamageAbsorbed == 0 then
|
|
1408
|
+
self[136] = nil
|
|
1409
|
+
else
|
|
1410
|
+
self[136] = maximumDamageAbsorbed
|
|
1411
|
+
end
|
|
1412
|
+
end
|
|
1413
|
+
},
|
|
1414
|
+
true
|
|
1415
|
+
)
|
|
1416
|
+
__TS__SetDescriptor(
|
|
1417
|
+
Buff.prototype,
|
|
1418
|
+
"damageAbsorbed",
|
|
1419
|
+
{get = function(self)
|
|
1420
|
+
return self[137] or 0
|
|
1421
|
+
end},
|
|
1422
|
+
true
|
|
1423
|
+
)
|
|
1424
|
+
__TS__SetDescriptor(
|
|
1425
|
+
Buff.prototype,
|
|
1426
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
1427
|
+
{
|
|
1428
|
+
get = function(self)
|
|
1429
|
+
local ____self__138_61 = self[138]
|
|
1430
|
+
if ____self__138_61 == nil then
|
|
1431
|
+
____self__138_61 = true
|
|
1432
|
+
end
|
|
1433
|
+
return ____self__138_61
|
|
1434
|
+
end,
|
|
1435
|
+
set = function(self, destroysOnMaximumDamageAbsorbed)
|
|
1436
|
+
local ____destroysOnMaximumDamageAbsorbed_62
|
|
1437
|
+
if destroysOnMaximumDamageAbsorbed then
|
|
1438
|
+
____destroysOnMaximumDamageAbsorbed_62 = nil
|
|
1439
|
+
else
|
|
1440
|
+
____destroysOnMaximumDamageAbsorbed_62 = false
|
|
1441
|
+
end
|
|
1442
|
+
self[138] = ____destroysOnMaximumDamageAbsorbed_62
|
|
1443
|
+
end
|
|
1444
|
+
},
|
|
1445
|
+
true
|
|
1446
|
+
)
|
|
1447
|
+
__TS__SetDescriptor(
|
|
1448
|
+
Buff.prototype,
|
|
1449
|
+
"abilityCooldownFactor",
|
|
1450
|
+
{
|
|
1451
|
+
get = function(self)
|
|
1452
|
+
return self[147] or 1
|
|
1453
|
+
end,
|
|
1454
|
+
set = function(self, abilityCooldownFactor)
|
|
1455
|
+
local previousAbilityCooldownModifier = self[148]
|
|
1456
|
+
if previousAbilityCooldownModifier then
|
|
1457
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1458
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1459
|
+
end
|
|
1460
|
+
end
|
|
1461
|
+
local function modifier(ability, level, cooldown)
|
|
1462
|
+
return cooldown * abilityCooldownFactor
|
|
1463
|
+
end
|
|
1464
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1465
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1466
|
+
end
|
|
1467
|
+
self[148] = modifier
|
|
1468
|
+
self[147] = abilityCooldownFactor
|
|
1469
|
+
end
|
|
1470
|
+
},
|
|
1471
|
+
true
|
|
1472
|
+
)
|
|
1473
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1474
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1245
1475
|
(function(self)
|
|
1246
1476
|
local function destroyBuffIfNeeded(buff)
|
|
1247
|
-
if getUnitAbility(buff[
|
|
1477
|
+
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
1248
1478
|
buff:destroy()
|
|
1249
1479
|
end
|
|
1250
1480
|
end
|
|
@@ -1295,5 +1525,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1295
1525
|
____exports.checkBuffs(target)
|
|
1296
1526
|
end
|
|
1297
1527
|
)
|
|
1528
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1529
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1530
|
+
end)
|
|
1531
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1532
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1533
|
+
end)
|
|
1298
1534
|
end)(Buff)
|
|
1299
1535
|
return ____exports
|