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