warscript 0.0.1-dev.ec4cf89 → 0.0.1-dev.eda504c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +6 -0
- package/core/types/frame.lua +115 -22
- package/core/types/player.lua +3 -1
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/tileCell.d.ts +9 -0
- package/core/types/tileCell.lua +92 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/native.d.ts +846 -790
- package/engine/behavior.d.ts +7 -2
- package/engine/behavior.lua +112 -33
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -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 +20 -4
- package/engine/behaviour/ability.lua +111 -47
- package/engine/behaviour/unit/stun-immunity.d.ts +7 -3
- package/engine/behaviour/unit/stun-immunity.lua +52 -27
- package/engine/behaviour/unit.d.ts +39 -0
- package/engine/behaviour/unit.lua +210 -4
- package/engine/buff.d.ts +85 -46
- package/engine/buff.lua +373 -229
- package/engine/internal/ability.d.ts +23 -14
- package/engine/internal/ability.lua +129 -85
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +20 -19
- package/engine/internal/item.lua +191 -74
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +128 -17
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/bonus.d.ts +6 -2
- package/engine/internal/unit/bonus.lua +23 -1
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit+ability.lua +12 -3
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +60 -13
- package/engine/internal/unit.d.ts +58 -18
- package/engine/internal/unit.lua +399 -161
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -17
- package/engine/object-data/entry/ability-type.lua +93 -36
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.d.ts +15 -1
- package/engine/object-data/entry/item-type.lua +93 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +21 -5
- package/engine/object-data/entry/unit-type.lua +214 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +28 -5
- package/engine/object-field/ability.lua +59 -5
- package/engine/object-field/unit.d.ts +57 -3
- package/engine/object-field/unit.lua +207 -7
- package/engine/object-field.d.ts +17 -6
- package/engine/object-field.lua +190 -90
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- package/engine/standard/fields/unit.d.ts +4 -0
- package/engine/standard/fields/unit.lua +7 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +249 -10
- package/engine/unit.d.ts +4 -0
- package/engine/unit.lua +4 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/buff.lua +3 -4
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +10 -1
- package/utility/arrays.lua +45 -3
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +12 -2
- package/utility/linked-set.lua +10 -3
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +4 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/buff.lua
CHANGED
|
@@ -28,13 +28,11 @@ local ____math = require("math")
|
|
|
28
28
|
local max = ____math.max
|
|
29
29
|
local min = ____math.min
|
|
30
30
|
local ____bonus = require("engine.internal.unit.bonus")
|
|
31
|
-
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
32
|
-
local getUnitBonus = ____bonus.getUnitBonus
|
|
33
|
-
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
34
31
|
local UnitBonusType = ____bonus.UnitBonusType
|
|
35
32
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
33
|
local damageArea = ____area_2Ddamage.damageArea
|
|
37
34
|
local ____preconditions = require("utility.preconditions")
|
|
35
|
+
local check = ____preconditions.check
|
|
38
36
|
local checkNotNull = ____preconditions.checkNotNull
|
|
39
37
|
local ____effect = require("core.types.effect")
|
|
40
38
|
local Effect = ____effect.Effect
|
|
@@ -44,8 +42,14 @@ local ____unit = require("engine.behaviour.unit")
|
|
|
44
42
|
local UnitBehavior = ____unit.UnitBehavior
|
|
45
43
|
local ____arrays = require("utility.arrays")
|
|
46
44
|
local forEach = ____arrays.forEach
|
|
45
|
+
local ____event = require("event")
|
|
46
|
+
local Event = ____event.Event
|
|
47
47
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
48
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
49
|
+
local ____item = require("engine.internal.item")
|
|
50
|
+
local Item = ____item.Item
|
|
51
|
+
local ____destructable = require("core.types.destructable")
|
|
52
|
+
local Destructable = ____destructable.Destructable
|
|
49
53
|
local getUnitAbility = BlzGetUnitAbility
|
|
50
54
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
51
55
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -94,11 +98,15 @@ local buffParametersKeys = {
|
|
|
94
98
|
armorIncreaseFactor = true,
|
|
95
99
|
attackSpeedIncreaseFactor = true,
|
|
96
100
|
movementSpeedIncreaseFactor = true,
|
|
101
|
+
evasionProbability = true,
|
|
102
|
+
missProbability = true,
|
|
103
|
+
damageFactor = true,
|
|
97
104
|
receivedDamageFactor = true,
|
|
98
105
|
receivedMagicDamageFactor = true,
|
|
99
106
|
durationIncreaseOnAutoAttack = true,
|
|
100
107
|
maximumDuration = true,
|
|
101
108
|
maximumRemainingDuration = true,
|
|
109
|
+
turnsIntoGhost = true,
|
|
102
110
|
stuns = true,
|
|
103
111
|
ignoresStunImmunity = true,
|
|
104
112
|
providesStunImmunity = true,
|
|
@@ -107,12 +115,26 @@ local buffParametersKeys = {
|
|
|
107
115
|
disablesAutoAttack = true,
|
|
108
116
|
destroysOnDamage = true,
|
|
109
117
|
maximumAutoAttackCount = true,
|
|
118
|
+
maximumDamageDealtEventCount = true,
|
|
119
|
+
maximumDamageReceivedEventCount = true,
|
|
110
120
|
uniqueGroup = true,
|
|
111
121
|
damageOnExpiration = true,
|
|
112
122
|
healingOnExpiration = true,
|
|
113
123
|
killsOnExpiration = true,
|
|
114
124
|
explodesOnExpiration = true
|
|
115
125
|
}
|
|
126
|
+
local function resolveEnumValue(ability, level, value)
|
|
127
|
+
if value == nil or type(value) == "number" then
|
|
128
|
+
return value
|
|
129
|
+
end
|
|
130
|
+
if ability == nil then
|
|
131
|
+
error(
|
|
132
|
+
__TS__New(IllegalArgumentException),
|
|
133
|
+
0
|
|
134
|
+
)
|
|
135
|
+
end
|
|
136
|
+
return value:getValue(ability, level or ability.level)
|
|
137
|
+
end
|
|
116
138
|
local function resolveNumberValue(ability, level, value)
|
|
117
139
|
if value == nil or type(value) == "number" then
|
|
118
140
|
return value
|
|
@@ -150,6 +172,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
150
172
|
end
|
|
151
173
|
end
|
|
152
174
|
local buffBooleanParameters = {
|
|
175
|
+
"turnsIntoGhost",
|
|
153
176
|
"stuns",
|
|
154
177
|
"ignoresStunImmunity",
|
|
155
178
|
"disablesAutoAttack",
|
|
@@ -161,9 +184,13 @@ local buffNumberParameters = {
|
|
|
161
184
|
"durationIncreaseOnAutoAttack",
|
|
162
185
|
"attackSpeedIncreaseFactor",
|
|
163
186
|
"movementSpeedIncreaseFactor",
|
|
187
|
+
"evasionProbability",
|
|
164
188
|
"armorIncrease",
|
|
189
|
+
"damageFactor",
|
|
165
190
|
"receivedDamageFactor",
|
|
166
191
|
"maximumAutoAttackCount",
|
|
192
|
+
"maximumDamageDealtEventCount",
|
|
193
|
+
"maximumDamageReceivedEventCount",
|
|
167
194
|
"damageInterval",
|
|
168
195
|
"damagePerInterval",
|
|
169
196
|
"damageOverDuration",
|
|
@@ -198,7 +225,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
198
225
|
return checkNotNull(firstNativeBuffTypeId)
|
|
199
226
|
end
|
|
200
227
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
201
|
-
if buff[
|
|
228
|
+
if buff[104] == uniqueGroup then
|
|
202
229
|
buff:destroy()
|
|
203
230
|
end
|
|
204
231
|
end
|
|
@@ -206,17 +233,17 @@ local function destroyBuff(buff)
|
|
|
206
233
|
buff:destroy()
|
|
207
234
|
end
|
|
208
235
|
local function expireBuff(buff)
|
|
209
|
-
local remainingDamageOverDuration = buff[
|
|
210
|
-
local remainingHealingOverDuration = buff[
|
|
236
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
237
|
+
local remainingHealingOverDuration = buff[113] or 0
|
|
211
238
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
212
239
|
buff:flashSpecialEffect()
|
|
213
240
|
if remainingDamageOverDuration ~= 0 then
|
|
214
|
-
(buff[
|
|
215
|
-
buff[
|
|
241
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
242
|
+
buff[113] = nil
|
|
216
243
|
end
|
|
217
244
|
if remainingHealingOverDuration ~= 0 then
|
|
218
|
-
(buff[
|
|
219
|
-
buff[
|
|
245
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
246
|
+
buff[118] = nil
|
|
220
247
|
end
|
|
221
248
|
end
|
|
222
249
|
Timer:run(destroyBuff, buff)
|
|
@@ -224,56 +251,58 @@ local function expireBuff(buff)
|
|
|
224
251
|
end
|
|
225
252
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
226
253
|
buffDamageIntervalTimerCallback(buff)
|
|
227
|
-
local timer = buff[
|
|
228
|
-
local damageInterval = buff[
|
|
254
|
+
local timer = buff[114]
|
|
255
|
+
local damageInterval = buff[112]
|
|
229
256
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
230
257
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
231
258
|
end
|
|
232
259
|
end
|
|
233
260
|
buffDamageIntervalTimerCallback = function(buff)
|
|
234
261
|
buff:flashSpecialEffect()
|
|
235
|
-
local source = buff[
|
|
236
|
-
local remainingDamageOverDuration = buff[
|
|
262
|
+
local source = buff[102] or buff[101]
|
|
263
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
237
264
|
if remainingDamageOverDuration ~= 0 then
|
|
238
|
-
local damageInterval = buff[
|
|
265
|
+
local damageInterval = buff[112] or 0
|
|
239
266
|
if damageInterval ~= 0 then
|
|
240
267
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
241
|
-
source:damageTarget(buff[
|
|
242
|
-
buff[
|
|
268
|
+
source:damageTarget(buff[101], damage)
|
|
269
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
243
270
|
end
|
|
244
271
|
end
|
|
245
|
-
local damagePerInterval = buff[
|
|
272
|
+
local damagePerInterval = buff[111] or 0
|
|
246
273
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
247
|
-
source:damageTarget(buff[
|
|
274
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
248
275
|
end
|
|
249
276
|
end
|
|
250
277
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
251
278
|
buffHealingIntervalTimerCallback(buff)
|
|
252
|
-
local timer = buff[
|
|
253
|
-
local healingInterval = buff[
|
|
279
|
+
local timer = buff[119]
|
|
280
|
+
local healingInterval = buff[117]
|
|
254
281
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
255
282
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
256
283
|
end
|
|
257
284
|
end
|
|
258
285
|
buffHealingIntervalTimerCallback = function(buff)
|
|
259
|
-
if buff[
|
|
286
|
+
if buff[117] ~= buff[112] then
|
|
260
287
|
buff:flashSpecialEffect()
|
|
261
288
|
end
|
|
262
|
-
local source = buff[
|
|
263
|
-
local remainingHealingOverDuration = buff[
|
|
289
|
+
local source = buff[102] or buff[101]
|
|
290
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
264
291
|
if remainingHealingOverDuration ~= 0 then
|
|
265
|
-
local healingInterval = buff[
|
|
292
|
+
local healingInterval = buff[117] or 0
|
|
266
293
|
if healingInterval ~= 0 then
|
|
267
294
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
268
|
-
source:healTarget(buff[
|
|
269
|
-
buff[
|
|
295
|
+
source:healTarget(buff[101], healing)
|
|
296
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
270
297
|
end
|
|
271
298
|
end
|
|
272
|
-
local healingPerInterval = buff[
|
|
299
|
+
local healingPerInterval = buff[116] or 0
|
|
273
300
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
274
|
-
source:healTarget(buff[
|
|
301
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
275
302
|
end
|
|
276
303
|
end
|
|
304
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
305
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
277
306
|
____exports.Buff = __TS__Class()
|
|
278
307
|
local Buff = ____exports.Buff
|
|
279
308
|
Buff.name = "Buff"
|
|
@@ -282,7 +311,8 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
282
311
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
283
312
|
self._unit = _unit
|
|
284
313
|
self.parameters = nil
|
|
285
|
-
self[100] =
|
|
314
|
+
self[100] = 0
|
|
315
|
+
self[101] = _unit
|
|
286
316
|
local typeId
|
|
287
317
|
local polarity
|
|
288
318
|
local resistanceType
|
|
@@ -291,7 +321,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
291
321
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
292
322
|
polarity = resistanceTypeOrPolarity
|
|
293
323
|
resistanceType = abilityOrParametersOrResistanceType
|
|
294
|
-
if __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
324
|
+
if __TS__InstanceOf(parametersOrAbility, Ability) or parametersOrAbility == nil then
|
|
295
325
|
ability = parametersOrAbility
|
|
296
326
|
else
|
|
297
327
|
ability = nil
|
|
@@ -301,7 +331,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
301
331
|
typeId = typeIdOrTypeIds
|
|
302
332
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
303
333
|
resistanceType = resistanceTypeOrPolarity
|
|
304
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
334
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) or abilityOrParametersOrResistanceType == nil then
|
|
305
335
|
ability = abilityOrParametersOrResistanceType
|
|
306
336
|
parameters = parametersOrAbility
|
|
307
337
|
else
|
|
@@ -310,9 +340,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
310
340
|
end
|
|
311
341
|
end
|
|
312
342
|
self.typeId = typeId
|
|
313
|
-
|
|
314
|
-
self.resistanceType = resistanceType
|
|
315
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
343
|
+
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
316
344
|
parameters = ability
|
|
317
345
|
ability = nil
|
|
318
346
|
end
|
|
@@ -338,14 +366,21 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
338
366
|
learnLevelMinimum = learnLevelMinimum or ability:getField(ABILITY_IF_REQUIRED_LEVEL)
|
|
339
367
|
duration = duration or getAbilityDuration(ability, _unit)
|
|
340
368
|
end
|
|
369
|
+
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
370
|
+
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
371
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
372
|
+
if missProbability ~= nil then
|
|
373
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
374
|
+
self[142] = missProbability
|
|
375
|
+
end
|
|
341
376
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
342
377
|
if buffByTypeId == nil then
|
|
343
378
|
buffByTypeId = {}
|
|
344
379
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
345
380
|
end
|
|
346
|
-
local
|
|
347
|
-
if
|
|
348
|
-
|
|
381
|
+
local ____opt_15 = buffByTypeId[typeId]
|
|
382
|
+
if ____opt_15 ~= nil then
|
|
383
|
+
____opt_15:destroy()
|
|
349
384
|
end
|
|
350
385
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
351
386
|
if uniqueGroup ~= nil then
|
|
@@ -354,18 +389,21 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
354
389
|
if not internalApplyBuff(
|
|
355
390
|
_unit,
|
|
356
391
|
typeId,
|
|
357
|
-
polarity,
|
|
358
|
-
resistanceType,
|
|
392
|
+
self.polarity,
|
|
393
|
+
self.resistanceType,
|
|
359
394
|
level,
|
|
360
395
|
duration,
|
|
361
396
|
spellStealPriority,
|
|
362
|
-
learnLevelMinimum
|
|
397
|
+
learnLevelMinimum,
|
|
398
|
+
missProbability
|
|
363
399
|
) then
|
|
400
|
+
self[100] = 1
|
|
364
401
|
UnitBehavior.prototype.destroy(self)
|
|
365
402
|
error(unsuccessfulApplicationMarker, 0)
|
|
366
403
|
end
|
|
367
404
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
368
405
|
if handle == nil then
|
|
406
|
+
self[100] = 1
|
|
369
407
|
UnitBehavior.prototype.destroy(self)
|
|
370
408
|
error(unsuccessfulApplicationMarker, 0)
|
|
371
409
|
end
|
|
@@ -374,20 +412,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
374
412
|
self._level = level
|
|
375
413
|
self._spellStealPriority = spellStealPriority
|
|
376
414
|
self._learnLevelMinimum = learnLevelMinimum
|
|
377
|
-
self[
|
|
378
|
-
self[
|
|
379
|
-
self[
|
|
380
|
-
self[
|
|
381
|
-
self[
|
|
415
|
+
self[102] = source
|
|
416
|
+
self[103] = duration or 0
|
|
417
|
+
self[104] = uniqueGroup
|
|
418
|
+
self[105] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
419
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
382
420
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
383
421
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
384
|
-
local
|
|
385
|
-
local
|
|
386
|
-
local
|
|
387
|
-
if
|
|
388
|
-
|
|
422
|
+
local ____ability_24 = ability
|
|
423
|
+
local ____level_25 = level
|
|
424
|
+
local ____temp_23 = parameters and parameters[buffBooleanParameter]
|
|
425
|
+
if ____temp_23 == nil then
|
|
426
|
+
____temp_23 = defaultParameters[buffBooleanParameter]
|
|
389
427
|
end
|
|
390
|
-
if resolveBooleanValue(
|
|
428
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
391
429
|
self[buffBooleanParameter] = true
|
|
392
430
|
end
|
|
393
431
|
end
|
|
@@ -403,11 +441,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
403
441
|
end
|
|
404
442
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
405
443
|
if maximumDuration ~= nil then
|
|
406
|
-
self[
|
|
444
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
407
445
|
end
|
|
408
446
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
409
447
|
if maximumRemainingDuration ~= nil then
|
|
410
|
-
self[
|
|
448
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
411
449
|
end
|
|
412
450
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
413
451
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -464,47 +502,41 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
464
502
|
timer:start(duration, false, expireBuff, self)
|
|
465
503
|
self._timer = timer
|
|
466
504
|
end
|
|
505
|
+
self:onCreate()
|
|
506
|
+
self[100] = 1
|
|
507
|
+
Event.invoke(buffCreatedEvent, self)
|
|
467
508
|
end
|
|
468
|
-
function Buff.prototype.
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
return bonusId == nil and 0 or getUnitBonus(self._unit, bonusType, bonusId)
|
|
472
|
-
end
|
|
473
|
-
function Buff.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
|
|
474
|
-
local bonusIdByBonusType = self._bonusIdByBonusType
|
|
475
|
-
if bonusIdByBonusType == nil then
|
|
476
|
-
bonusIdByBonusType = {}
|
|
477
|
-
self._bonusIdByBonusType = bonusIdByBonusType
|
|
478
|
-
end
|
|
479
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
480
|
-
end
|
|
481
|
-
function Buff.prototype.flashEffect(self, widgetOrDuration, duration)
|
|
482
|
-
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
483
|
-
local ____Effect_40 = Effect
|
|
484
|
-
local ____Effect_flash_41 = Effect.flash
|
|
485
|
-
local ____array_39 = __TS__SparseArrayNew(
|
|
486
|
-
self[104],
|
|
487
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
488
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
489
|
-
)
|
|
490
|
-
local ____isWidgetProvided_38
|
|
491
|
-
if isWidgetProvided then
|
|
492
|
-
____isWidgetProvided_38 = duration
|
|
509
|
+
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
510
|
+
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
511
|
+
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
493
512
|
else
|
|
494
|
-
|
|
513
|
+
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
514
|
+
local ____Effect_40 = Effect
|
|
515
|
+
local ____Effect_flash_41 = Effect.flash
|
|
516
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
517
|
+
self[105],
|
|
518
|
+
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
519
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
520
|
+
)
|
|
521
|
+
local ____isWidgetProvided_38
|
|
522
|
+
if isWidgetProvided then
|
|
523
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
524
|
+
else
|
|
525
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
526
|
+
end
|
|
527
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
528
|
+
____Effect_flash_41(
|
|
529
|
+
____Effect_40,
|
|
530
|
+
__TS__SparseArraySpread(____array_39)
|
|
531
|
+
)
|
|
495
532
|
end
|
|
496
|
-
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
497
|
-
____Effect_flash_41(
|
|
498
|
-
____Effect_40,
|
|
499
|
-
__TS__SparseArraySpread(____array_39)
|
|
500
|
-
)
|
|
501
533
|
end
|
|
502
534
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
503
535
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
504
536
|
local ____Effect_44 = Effect
|
|
505
537
|
local ____Effect_flash_45 = Effect.flash
|
|
506
538
|
local ____array_43 = __TS__SparseArrayNew(
|
|
507
|
-
self[
|
|
539
|
+
self[106],
|
|
508
540
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
509
541
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
510
542
|
)
|
|
@@ -520,21 +552,25 @@ function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
|
520
552
|
__TS__SparseArraySpread(____array_43)
|
|
521
553
|
)
|
|
522
554
|
end
|
|
555
|
+
function Buff.prototype.onCreate(self)
|
|
556
|
+
end
|
|
523
557
|
function Buff.prototype.onDestroy(self)
|
|
558
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
559
|
+
self[100] = 2
|
|
524
560
|
local unit = self._unit
|
|
525
561
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
526
562
|
removeBuff(unit.handle, self.typeId)
|
|
527
563
|
end
|
|
528
564
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
529
|
-
local healingIntervalTimer = self[
|
|
565
|
+
local healingIntervalTimer = self[119]
|
|
530
566
|
if healingIntervalTimer ~= nil then
|
|
531
567
|
healingIntervalTimer:destroy()
|
|
532
|
-
self[
|
|
568
|
+
self[119] = nil
|
|
533
569
|
end
|
|
534
|
-
local damageIntervalTimer = self[
|
|
570
|
+
local damageIntervalTimer = self[114]
|
|
535
571
|
if damageIntervalTimer ~= nil then
|
|
536
572
|
damageIntervalTimer:destroy()
|
|
537
|
-
self[
|
|
573
|
+
self[114] = nil
|
|
538
574
|
end
|
|
539
575
|
if self._timer ~= nil then
|
|
540
576
|
self._timer:destroy()
|
|
@@ -544,25 +580,28 @@ function Buff.prototype.onDestroy(self)
|
|
|
544
580
|
behavior:destroy()
|
|
545
581
|
end
|
|
546
582
|
end
|
|
547
|
-
if self[
|
|
583
|
+
if self[139] then
|
|
584
|
+
unit:decrementInvulnerabilityCounter()
|
|
585
|
+
end
|
|
586
|
+
if self[138] then
|
|
548
587
|
unit:decrementDisableAutoAttackCounter()
|
|
549
588
|
end
|
|
550
|
-
if self[
|
|
551
|
-
if self[
|
|
589
|
+
if self[136] then
|
|
590
|
+
if self[137] then
|
|
552
591
|
unit:decrementStunCounter()
|
|
553
592
|
end
|
|
554
593
|
unit:decrementStunCounter()
|
|
555
594
|
end
|
|
595
|
+
if self[135] then
|
|
596
|
+
unit:decrementGhostCounter()
|
|
597
|
+
end
|
|
556
598
|
if self._abilityTypeIds ~= nil then
|
|
557
599
|
for abilityTypeId in pairs(self._abilityTypeIds) do
|
|
558
600
|
unit:removeAbility(abilityTypeId)
|
|
559
601
|
end
|
|
560
602
|
end
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
564
|
-
end
|
|
565
|
-
end
|
|
603
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
604
|
+
self[100] = 3
|
|
566
605
|
return UnitBehavior.prototype.onDestroy(self)
|
|
567
606
|
end
|
|
568
607
|
function Buff.apply(self, ...)
|
|
@@ -599,56 +638,72 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
599
638
|
end
|
|
600
639
|
function Buff.prototype.onExpiration(self)
|
|
601
640
|
local unit = self.unit
|
|
602
|
-
if self[119] ~= nil then
|
|
603
|
-
(self[101] or unit):damageTarget(unit, self[119] or 0)
|
|
604
|
-
end
|
|
605
641
|
if self[120] ~= nil then
|
|
606
|
-
(self[
|
|
642
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
607
643
|
end
|
|
608
|
-
if self[
|
|
644
|
+
if self[121] ~= nil then
|
|
645
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
646
|
+
end
|
|
647
|
+
if self[141] then
|
|
609
648
|
unit:explode()
|
|
610
|
-
elseif self[
|
|
649
|
+
elseif self[140] then
|
|
611
650
|
unit:kill()
|
|
612
651
|
end
|
|
613
652
|
end
|
|
614
653
|
function Buff.prototype.onDeath(self, source)
|
|
615
654
|
local unit = self.unit
|
|
616
|
-
if self[
|
|
655
|
+
if self[122] ~= nil then
|
|
617
656
|
damageArea(
|
|
618
|
-
self[
|
|
619
|
-
self[
|
|
657
|
+
self[102] or unit,
|
|
658
|
+
self[122],
|
|
620
659
|
unit.x,
|
|
621
660
|
unit.y,
|
|
661
|
+
self[124] or 0,
|
|
622
662
|
self[123] or 0,
|
|
623
|
-
self[
|
|
663
|
+
self[126] or 0,
|
|
624
664
|
self[125] or 0,
|
|
625
|
-
self[
|
|
626
|
-
self[127] or 0
|
|
627
|
-
self[126] or 0
|
|
665
|
+
self[128] or 0,
|
|
666
|
+
self[127] or 0
|
|
628
667
|
)
|
|
629
668
|
end
|
|
630
669
|
end
|
|
631
670
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
632
671
|
if event.isAttack then
|
|
633
|
-
if self[
|
|
634
|
-
local durationIncrease = self[
|
|
635
|
-
local maximumDuration = self[
|
|
672
|
+
if self[107] ~= nil then
|
|
673
|
+
local durationIncrease = self[107]
|
|
674
|
+
local maximumDuration = self[108] or 0
|
|
636
675
|
if maximumDuration > 0 then
|
|
637
676
|
durationIncrease = min(
|
|
638
677
|
durationIncrease,
|
|
639
|
-
max(0, maximumDuration - self[
|
|
678
|
+
max(0, maximumDuration - self[103])
|
|
640
679
|
)
|
|
641
680
|
end
|
|
642
681
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
643
|
-
local maximumRemainingDuration = self[
|
|
682
|
+
local maximumRemainingDuration = self[109] or 0
|
|
644
683
|
if maximumRemainingDuration > 0 then
|
|
645
684
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
646
685
|
end
|
|
647
686
|
self.remainingDuration = remainingDuration
|
|
648
687
|
end
|
|
649
|
-
local autoAttackCount = (self[
|
|
650
|
-
self[
|
|
651
|
-
if autoAttackCount == self[
|
|
688
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
689
|
+
self[129] = autoAttackCount
|
|
690
|
+
if autoAttackCount == self[130] then
|
|
691
|
+
self:destroy()
|
|
692
|
+
end
|
|
693
|
+
end
|
|
694
|
+
if event.originalAmount ~= 0 then
|
|
695
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
696
|
+
self[131] = damageDealtEventCount
|
|
697
|
+
if damageDealtEventCount == self[132] then
|
|
698
|
+
self:destroy()
|
|
699
|
+
end
|
|
700
|
+
end
|
|
701
|
+
end
|
|
702
|
+
function Buff.prototype.onDamageReceived(self, source, event)
|
|
703
|
+
if event.originalAmount ~= 0 then
|
|
704
|
+
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
705
|
+
self[133] = damageReceivedEventCount
|
|
706
|
+
if damageReceivedEventCount == self[134] then
|
|
652
707
|
self:destroy()
|
|
653
708
|
end
|
|
654
709
|
end
|
|
@@ -658,7 +713,7 @@ __TS__SetDescriptor(
|
|
|
658
713
|
Buff.prototype,
|
|
659
714
|
"source",
|
|
660
715
|
{get = function(self)
|
|
661
|
-
return self[
|
|
716
|
+
return self[102] or self._unit
|
|
662
717
|
end},
|
|
663
718
|
true
|
|
664
719
|
)
|
|
@@ -675,13 +730,13 @@ __TS__SetDescriptor(
|
|
|
675
730
|
"remainingDamageOverDuration",
|
|
676
731
|
{
|
|
677
732
|
get = function(self)
|
|
678
|
-
return self[
|
|
733
|
+
return self[113] or 0
|
|
679
734
|
end,
|
|
680
735
|
set = function(self, remainingDamageOverDuration)
|
|
681
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
682
|
-
self[
|
|
683
|
-
local damageOverDuration = (self[
|
|
684
|
-
self[
|
|
736
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[113] or 0)
|
|
737
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
738
|
+
local damageOverDuration = (self[110] or 0) + remainingDamageOverDurationDelta
|
|
739
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
685
740
|
end
|
|
686
741
|
},
|
|
687
742
|
true
|
|
@@ -691,13 +746,13 @@ __TS__SetDescriptor(
|
|
|
691
746
|
"damageOverDuration",
|
|
692
747
|
{
|
|
693
748
|
get = function(self)
|
|
694
|
-
return self[
|
|
749
|
+
return self[110] or 0
|
|
695
750
|
end,
|
|
696
751
|
set = function(self, damageOverDuration)
|
|
697
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
698
|
-
self[
|
|
699
|
-
local remainingDamageOverDuration = (self[
|
|
700
|
-
self[
|
|
752
|
+
local damageOverDurationDelta = damageOverDuration - (self[110] or 0)
|
|
753
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
754
|
+
local remainingDamageOverDuration = (self[113] or 0) + damageOverDurationDelta
|
|
755
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
701
756
|
end
|
|
702
757
|
},
|
|
703
758
|
true
|
|
@@ -707,10 +762,10 @@ __TS__SetDescriptor(
|
|
|
707
762
|
"damagePerInterval",
|
|
708
763
|
{
|
|
709
764
|
get = function(self)
|
|
710
|
-
return self[
|
|
765
|
+
return self[111] or 0
|
|
711
766
|
end,
|
|
712
767
|
set = function(self, damagePerInterval)
|
|
713
|
-
self[
|
|
768
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
714
769
|
end
|
|
715
770
|
},
|
|
716
771
|
true
|
|
@@ -720,25 +775,25 @@ __TS__SetDescriptor(
|
|
|
720
775
|
"damageInterval",
|
|
721
776
|
{
|
|
722
777
|
get = function(self)
|
|
723
|
-
return self[
|
|
778
|
+
return self[112] or 0
|
|
724
779
|
end,
|
|
725
780
|
set = function(self, damageInterval)
|
|
726
781
|
if damageInterval <= 0 then
|
|
727
|
-
self[
|
|
728
|
-
local timer = self[
|
|
782
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
783
|
+
local timer = self[114]
|
|
729
784
|
if timer ~= nil then
|
|
730
785
|
timer:destroy()
|
|
731
|
-
self[
|
|
786
|
+
self[114] = nil
|
|
732
787
|
end
|
|
733
788
|
return
|
|
734
789
|
end
|
|
735
|
-
self[
|
|
790
|
+
self[112] = damageInterval
|
|
736
791
|
local ____opt_48 = self._timer
|
|
737
792
|
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
738
|
-
local timer = self[
|
|
793
|
+
local timer = self[114]
|
|
739
794
|
if timer == nil then
|
|
740
795
|
timer = Timer:create()
|
|
741
|
-
self[
|
|
796
|
+
self[114] = timer
|
|
742
797
|
end
|
|
743
798
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
744
799
|
if initialDelay == damageInterval then
|
|
@@ -755,13 +810,13 @@ __TS__SetDescriptor(
|
|
|
755
810
|
"remainingHealingOverDuration",
|
|
756
811
|
{
|
|
757
812
|
get = function(self)
|
|
758
|
-
return self[
|
|
813
|
+
return self[118] or 0
|
|
759
814
|
end,
|
|
760
815
|
set = function(self, remainingHealingOverDuration)
|
|
761
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
762
|
-
self[
|
|
763
|
-
local healingOverDuration = (self[
|
|
764
|
-
self[
|
|
816
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[118] or 0)
|
|
817
|
+
self[113] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
818
|
+
local healingOverDuration = (self[115] or 0) + remainingHealingOverDurationDelta
|
|
819
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
765
820
|
end
|
|
766
821
|
},
|
|
767
822
|
true
|
|
@@ -771,13 +826,13 @@ __TS__SetDescriptor(
|
|
|
771
826
|
"healingOverDuration",
|
|
772
827
|
{
|
|
773
828
|
get = function(self)
|
|
774
|
-
return self[
|
|
829
|
+
return self[115] or 0
|
|
775
830
|
end,
|
|
776
831
|
set = function(self, healingOverDuration)
|
|
777
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
778
|
-
self[
|
|
779
|
-
local remainingHealingOverDuration = (self[
|
|
780
|
-
self[
|
|
832
|
+
local healingOverDurationDelta = healingOverDuration - (self[115] or 0)
|
|
833
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
834
|
+
local remainingHealingOverDuration = (self[118] or 0) + healingOverDurationDelta
|
|
835
|
+
self[118] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
781
836
|
end
|
|
782
837
|
},
|
|
783
838
|
true
|
|
@@ -787,10 +842,10 @@ __TS__SetDescriptor(
|
|
|
787
842
|
"healingPerInterval",
|
|
788
843
|
{
|
|
789
844
|
get = function(self)
|
|
790
|
-
return self[
|
|
845
|
+
return self[116] or 0
|
|
791
846
|
end,
|
|
792
847
|
set = function(self, healingPerInterval)
|
|
793
|
-
self[
|
|
848
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
794
849
|
end
|
|
795
850
|
},
|
|
796
851
|
true
|
|
@@ -800,25 +855,25 @@ __TS__SetDescriptor(
|
|
|
800
855
|
"healingInterval",
|
|
801
856
|
{
|
|
802
857
|
get = function(self)
|
|
803
|
-
return self[
|
|
858
|
+
return self[117] or 0
|
|
804
859
|
end,
|
|
805
860
|
set = function(self, healingInterval)
|
|
806
861
|
if healingInterval <= 0 then
|
|
807
|
-
self[
|
|
808
|
-
local timer = self[
|
|
862
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
863
|
+
local timer = self[119]
|
|
809
864
|
if timer ~= nil then
|
|
810
865
|
timer:destroy()
|
|
811
|
-
self[
|
|
866
|
+
self[119] = nil
|
|
812
867
|
end
|
|
813
868
|
return
|
|
814
869
|
end
|
|
815
|
-
self[
|
|
870
|
+
self[117] = healingInterval
|
|
816
871
|
local ____opt_50 = self._timer
|
|
817
872
|
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
818
|
-
local timer = self[
|
|
873
|
+
local timer = self[119]
|
|
819
874
|
if timer == nil then
|
|
820
875
|
timer = Timer:create()
|
|
821
|
-
self[
|
|
876
|
+
self[119] = timer
|
|
822
877
|
end
|
|
823
878
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
824
879
|
if initialDelay == healingInterval then
|
|
@@ -835,10 +890,10 @@ __TS__SetDescriptor(
|
|
|
835
890
|
"damageOnExpiration",
|
|
836
891
|
{
|
|
837
892
|
get = function(self)
|
|
838
|
-
return self[
|
|
893
|
+
return self[120] or 0
|
|
839
894
|
end,
|
|
840
895
|
set = function(self, damageOnExpiration)
|
|
841
|
-
self[
|
|
896
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
842
897
|
end
|
|
843
898
|
},
|
|
844
899
|
true
|
|
@@ -848,10 +903,23 @@ __TS__SetDescriptor(
|
|
|
848
903
|
"healingOnExpiration",
|
|
849
904
|
{
|
|
850
905
|
get = function(self)
|
|
851
|
-
return self[
|
|
906
|
+
return self[121] or 0
|
|
852
907
|
end,
|
|
853
908
|
set = function(self, healingOnExpiration)
|
|
854
|
-
self[
|
|
909
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
910
|
+
end
|
|
911
|
+
},
|
|
912
|
+
true
|
|
913
|
+
)
|
|
914
|
+
__TS__SetDescriptor(
|
|
915
|
+
Buff.prototype,
|
|
916
|
+
"damageFactor",
|
|
917
|
+
{
|
|
918
|
+
get = function(self)
|
|
919
|
+
return self:getUnitBonus(UnitBonusType.DAMAGE_FACTOR)
|
|
920
|
+
end,
|
|
921
|
+
set = function(self, damageFactor)
|
|
922
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.DAMAGE_FACTOR, damageFactor)
|
|
855
923
|
end
|
|
856
924
|
},
|
|
857
925
|
true
|
|
@@ -882,30 +950,53 @@ __TS__SetDescriptor(
|
|
|
882
950
|
},
|
|
883
951
|
true
|
|
884
952
|
)
|
|
953
|
+
__TS__SetDescriptor(
|
|
954
|
+
Buff.prototype,
|
|
955
|
+
"turnsIntoGhost",
|
|
956
|
+
{
|
|
957
|
+
get = function(self)
|
|
958
|
+
local ____self__135_52 = self[135]
|
|
959
|
+
if ____self__135_52 == nil then
|
|
960
|
+
____self__135_52 = false
|
|
961
|
+
end
|
|
962
|
+
return ____self__135_52
|
|
963
|
+
end,
|
|
964
|
+
set = function(self, turnsIntoGhost)
|
|
965
|
+
if not turnsIntoGhost and self[135] then
|
|
966
|
+
self.object:decrementGhostCounter()
|
|
967
|
+
self[135] = nil
|
|
968
|
+
elseif turnsIntoGhost and not self[135] then
|
|
969
|
+
self.object:incrementGhostCounter()
|
|
970
|
+
self[135] = true
|
|
971
|
+
end
|
|
972
|
+
end
|
|
973
|
+
},
|
|
974
|
+
true
|
|
975
|
+
)
|
|
885
976
|
__TS__SetDescriptor(
|
|
886
977
|
Buff.prototype,
|
|
887
978
|
"stuns",
|
|
888
979
|
{
|
|
889
980
|
get = function(self)
|
|
890
|
-
local
|
|
891
|
-
if
|
|
892
|
-
|
|
981
|
+
local ____self__136_53 = self[136]
|
|
982
|
+
if ____self__136_53 == nil then
|
|
983
|
+
____self__136_53 = false
|
|
893
984
|
end
|
|
894
|
-
return
|
|
985
|
+
return ____self__136_53
|
|
895
986
|
end,
|
|
896
987
|
set = function(self, stuns)
|
|
897
|
-
if not stuns and self[
|
|
898
|
-
if self[
|
|
988
|
+
if not stuns and self[136] then
|
|
989
|
+
if self[137] then
|
|
899
990
|
self.object:decrementStunCounter()
|
|
900
991
|
end
|
|
901
992
|
self.object:decrementStunCounter()
|
|
902
|
-
self[
|
|
903
|
-
elseif stuns and not self[
|
|
904
|
-
if self[
|
|
993
|
+
self[136] = nil
|
|
994
|
+
elseif stuns and not self[136] then
|
|
995
|
+
if self[137] then
|
|
905
996
|
self.object:incrementStunCounter()
|
|
906
997
|
end
|
|
907
998
|
self.object:incrementStunCounter()
|
|
908
|
-
self[
|
|
999
|
+
self[136] = true
|
|
909
1000
|
end
|
|
910
1001
|
end
|
|
911
1002
|
},
|
|
@@ -916,23 +1007,23 @@ __TS__SetDescriptor(
|
|
|
916
1007
|
"ignoresStunImmunity",
|
|
917
1008
|
{
|
|
918
1009
|
get = function(self)
|
|
919
|
-
local
|
|
920
|
-
if
|
|
921
|
-
|
|
1010
|
+
local ____self__137_54 = self[137]
|
|
1011
|
+
if ____self__137_54 == nil then
|
|
1012
|
+
____self__137_54 = false
|
|
922
1013
|
end
|
|
923
|
-
return
|
|
1014
|
+
return ____self__137_54
|
|
924
1015
|
end,
|
|
925
1016
|
set = function(self, ignoresStunImmunity)
|
|
926
|
-
if not ignoresStunImmunity and self[
|
|
927
|
-
if self[
|
|
1017
|
+
if not ignoresStunImmunity and self[137] then
|
|
1018
|
+
if self[136] then
|
|
928
1019
|
self.object:decrementStunCounter()
|
|
929
1020
|
end
|
|
930
|
-
self[
|
|
931
|
-
elseif ignoresStunImmunity and not self[
|
|
932
|
-
if self[
|
|
1021
|
+
self[137] = nil
|
|
1022
|
+
elseif ignoresStunImmunity and not self[137] then
|
|
1023
|
+
if self[136] then
|
|
933
1024
|
self.object:incrementStunCounter()
|
|
934
1025
|
end
|
|
935
|
-
self[
|
|
1026
|
+
self[137] = true
|
|
936
1027
|
end
|
|
937
1028
|
end
|
|
938
1029
|
},
|
|
@@ -943,19 +1034,19 @@ __TS__SetDescriptor(
|
|
|
943
1034
|
"disablesAutoAttack",
|
|
944
1035
|
{
|
|
945
1036
|
get = function(self)
|
|
946
|
-
local
|
|
947
|
-
if
|
|
948
|
-
|
|
1037
|
+
local ____self__138_55 = self[138]
|
|
1038
|
+
if ____self__138_55 == nil then
|
|
1039
|
+
____self__138_55 = false
|
|
949
1040
|
end
|
|
950
|
-
return
|
|
1041
|
+
return ____self__138_55
|
|
951
1042
|
end,
|
|
952
1043
|
set = function(self, disablesAutoAttack)
|
|
953
|
-
if not disablesAutoAttack and self[
|
|
1044
|
+
if not disablesAutoAttack and self[138] then
|
|
954
1045
|
self.object:decrementDisableAutoAttackCounter()
|
|
955
|
-
self[
|
|
956
|
-
elseif disablesAutoAttack and not self[
|
|
1046
|
+
self[138] = nil
|
|
1047
|
+
elseif disablesAutoAttack and not self[138] then
|
|
957
1048
|
self.object:incrementDisableAutoAttackCounter()
|
|
958
|
-
self[
|
|
1049
|
+
self[138] = true
|
|
959
1050
|
end
|
|
960
1051
|
end
|
|
961
1052
|
},
|
|
@@ -966,19 +1057,19 @@ __TS__SetDescriptor(
|
|
|
966
1057
|
"providesInvulnerability",
|
|
967
1058
|
{
|
|
968
1059
|
get = function(self)
|
|
969
|
-
local
|
|
970
|
-
if
|
|
971
|
-
|
|
1060
|
+
local ____self__139_56 = self[139]
|
|
1061
|
+
if ____self__139_56 == nil then
|
|
1062
|
+
____self__139_56 = false
|
|
972
1063
|
end
|
|
973
|
-
return
|
|
1064
|
+
return ____self__139_56
|
|
974
1065
|
end,
|
|
975
1066
|
set = function(self, providesInvulnerability)
|
|
976
|
-
if not providesInvulnerability and self[
|
|
1067
|
+
if not providesInvulnerability and self[139] then
|
|
977
1068
|
self.object:decrementInvulnerabilityCounter()
|
|
978
|
-
self[
|
|
979
|
-
elseif providesInvulnerability and not self[
|
|
1069
|
+
self[139] = nil
|
|
1070
|
+
elseif providesInvulnerability and not self[139] then
|
|
980
1071
|
self.object:incrementInvulnerabilityCounter()
|
|
981
|
-
self[
|
|
1072
|
+
self[139] = true
|
|
982
1073
|
end
|
|
983
1074
|
end
|
|
984
1075
|
},
|
|
@@ -989,17 +1080,17 @@ __TS__SetDescriptor(
|
|
|
989
1080
|
"killsOnExpiration",
|
|
990
1081
|
{
|
|
991
1082
|
get = function(self)
|
|
992
|
-
local
|
|
993
|
-
if
|
|
994
|
-
|
|
1083
|
+
local ____self__140_57 = self[140]
|
|
1084
|
+
if ____self__140_57 == nil then
|
|
1085
|
+
____self__140_57 = false
|
|
995
1086
|
end
|
|
996
|
-
return
|
|
1087
|
+
return ____self__140_57
|
|
997
1088
|
end,
|
|
998
1089
|
set = function(self, killsOnExpiration)
|
|
999
|
-
if not killsOnExpiration and self[
|
|
1000
|
-
self[
|
|
1001
|
-
elseif killsOnExpiration and not self[
|
|
1002
|
-
self[
|
|
1090
|
+
if not killsOnExpiration and self[140] then
|
|
1091
|
+
self[140] = nil
|
|
1092
|
+
elseif killsOnExpiration and not self[140] then
|
|
1093
|
+
self[140] = true
|
|
1003
1094
|
end
|
|
1004
1095
|
end
|
|
1005
1096
|
},
|
|
@@ -1010,17 +1101,51 @@ __TS__SetDescriptor(
|
|
|
1010
1101
|
"explodesOnExpiration",
|
|
1011
1102
|
{
|
|
1012
1103
|
get = function(self)
|
|
1013
|
-
local
|
|
1014
|
-
if
|
|
1015
|
-
|
|
1104
|
+
local ____self__141_58 = self[141]
|
|
1105
|
+
if ____self__141_58 == nil then
|
|
1106
|
+
____self__141_58 = false
|
|
1016
1107
|
end
|
|
1017
|
-
return
|
|
1108
|
+
return ____self__141_58
|
|
1018
1109
|
end,
|
|
1019
1110
|
set = function(self, killsOnExpiration)
|
|
1020
|
-
if not killsOnExpiration and self[
|
|
1021
|
-
self[
|
|
1022
|
-
elseif killsOnExpiration and not self[
|
|
1023
|
-
self[
|
|
1111
|
+
if not killsOnExpiration and self[141] then
|
|
1112
|
+
self[141] = nil
|
|
1113
|
+
elseif killsOnExpiration and not self[141] then
|
|
1114
|
+
self[141] = true
|
|
1115
|
+
end
|
|
1116
|
+
end
|
|
1117
|
+
},
|
|
1118
|
+
true
|
|
1119
|
+
)
|
|
1120
|
+
__TS__SetDescriptor(
|
|
1121
|
+
Buff.prototype,
|
|
1122
|
+
"maximumDamageDealtEventCount",
|
|
1123
|
+
{
|
|
1124
|
+
get = function(self)
|
|
1125
|
+
return self[132] or 0
|
|
1126
|
+
end,
|
|
1127
|
+
set = function(self, maximumDamageDealtEventCount)
|
|
1128
|
+
if maximumDamageDealtEventCount == 0 then
|
|
1129
|
+
self[132] = nil
|
|
1130
|
+
else
|
|
1131
|
+
self[132] = maximumDamageDealtEventCount
|
|
1132
|
+
end
|
|
1133
|
+
end
|
|
1134
|
+
},
|
|
1135
|
+
true
|
|
1136
|
+
)
|
|
1137
|
+
__TS__SetDescriptor(
|
|
1138
|
+
Buff.prototype,
|
|
1139
|
+
"maximumDamageReceivedEventCount",
|
|
1140
|
+
{
|
|
1141
|
+
get = function(self)
|
|
1142
|
+
return self[134] or 0
|
|
1143
|
+
end,
|
|
1144
|
+
set = function(self, maximumDamageReceivedEventCount)
|
|
1145
|
+
if maximumDamageReceivedEventCount == 0 then
|
|
1146
|
+
self[134] = nil
|
|
1147
|
+
else
|
|
1148
|
+
self[134] = maximumDamageReceivedEventCount
|
|
1024
1149
|
end
|
|
1025
1150
|
end
|
|
1026
1151
|
},
|
|
@@ -1031,13 +1156,13 @@ __TS__SetDescriptor(
|
|
|
1031
1156
|
"maximumAutoAttackCount",
|
|
1032
1157
|
{
|
|
1033
1158
|
get = function(self)
|
|
1034
|
-
return self[
|
|
1159
|
+
return self[130] or 0
|
|
1035
1160
|
end,
|
|
1036
1161
|
set = function(self, maximumAutoAttackCount)
|
|
1037
1162
|
if maximumAutoAttackCount == 0 then
|
|
1038
|
-
self[
|
|
1163
|
+
self[130] = nil
|
|
1039
1164
|
else
|
|
1040
|
-
self[
|
|
1165
|
+
self[130] = maximumAutoAttackCount
|
|
1041
1166
|
end
|
|
1042
1167
|
end
|
|
1043
1168
|
},
|
|
@@ -1048,10 +1173,10 @@ __TS__SetDescriptor(
|
|
|
1048
1173
|
"durationIncreaseOnAutoAttack",
|
|
1049
1174
|
{
|
|
1050
1175
|
get = function(self)
|
|
1051
|
-
return self[
|
|
1176
|
+
return self[107] or 0
|
|
1052
1177
|
end,
|
|
1053
1178
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1054
|
-
self[
|
|
1179
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
1055
1180
|
end
|
|
1056
1181
|
},
|
|
1057
1182
|
true
|
|
@@ -1082,11 +1207,24 @@ __TS__SetDescriptor(
|
|
|
1082
1207
|
},
|
|
1083
1208
|
true
|
|
1084
1209
|
)
|
|
1210
|
+
__TS__SetDescriptor(
|
|
1211
|
+
Buff.prototype,
|
|
1212
|
+
"evasionProbability",
|
|
1213
|
+
{
|
|
1214
|
+
get = function(self)
|
|
1215
|
+
return self:getUnitBonus(UnitBonusType.EVASION_PROBABILITY)
|
|
1216
|
+
end,
|
|
1217
|
+
set = function(self, evasionProbability)
|
|
1218
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.EVASION_PROBABILITY, evasionProbability)
|
|
1219
|
+
end
|
|
1220
|
+
},
|
|
1221
|
+
true
|
|
1222
|
+
)
|
|
1085
1223
|
__TS__SetDescriptor(
|
|
1086
1224
|
Buff.prototype,
|
|
1087
1225
|
"duration",
|
|
1088
1226
|
{get = function(self)
|
|
1089
|
-
return self[
|
|
1227
|
+
return self[103]
|
|
1090
1228
|
end},
|
|
1091
1229
|
true
|
|
1092
1230
|
)
|
|
@@ -1095,15 +1233,15 @@ __TS__SetDescriptor(
|
|
|
1095
1233
|
"remainingDuration",
|
|
1096
1234
|
{
|
|
1097
1235
|
get = function(self)
|
|
1098
|
-
local
|
|
1099
|
-
return
|
|
1236
|
+
local ____opt_59 = self._timer
|
|
1237
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1100
1238
|
end,
|
|
1101
1239
|
set = function(self, remainingDuration)
|
|
1102
|
-
local
|
|
1103
|
-
local
|
|
1104
|
-
local remainingDurationDelta =
|
|
1240
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1241
|
+
local ____opt_61 = self._timer
|
|
1242
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1105
1243
|
if remainingDurationDelta ~= 0 then
|
|
1106
|
-
self[
|
|
1244
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1107
1245
|
if remainingDuration <= 0 then
|
|
1108
1246
|
Timer:run(destroyBuff, self)
|
|
1109
1247
|
else
|
|
@@ -1115,7 +1253,8 @@ __TS__SetDescriptor(
|
|
|
1115
1253
|
self._level,
|
|
1116
1254
|
remainingDuration,
|
|
1117
1255
|
self._spellStealPriority,
|
|
1118
|
-
self._learnLevelMinimum
|
|
1256
|
+
self._learnLevelMinimum,
|
|
1257
|
+
self[142]
|
|
1119
1258
|
) then
|
|
1120
1259
|
local timer = self._timer
|
|
1121
1260
|
if timer == nil then
|
|
@@ -1129,10 +1268,12 @@ __TS__SetDescriptor(
|
|
|
1129
1268
|
end
|
|
1130
1269
|
},
|
|
1131
1270
|
true
|
|
1132
|
-
)
|
|
1271
|
+
)
|
|
1272
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1273
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1133
1274
|
(function(self)
|
|
1134
1275
|
local function destroyBuffIfNeeded(buff)
|
|
1135
|
-
if getUnitAbility(buff[
|
|
1276
|
+
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
1136
1277
|
buff:destroy()
|
|
1137
1278
|
end
|
|
1138
1279
|
end
|
|
@@ -1183,5 +1324,8 @@ __TS__SetDescriptor(
|
|
|
1183
1324
|
____exports.checkBuffs(target)
|
|
1184
1325
|
end
|
|
1185
1326
|
)
|
|
1327
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1328
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1329
|
+
end)
|
|
1186
1330
|
end)(Buff)
|
|
1187
1331
|
return ____exports
|