warscript 0.0.1-dev.d30161d → 0.0.1-dev.d3265a5
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 +5 -0
- package/attributes.lua +8 -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 +91 -1
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +6 -7
- package/core/types/timer.lua +18 -21
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/native.d.ts +840 -786
- package/engine/behavior.d.ts +2 -2
- package/engine/behavior.lua +6 -6
- 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 +42 -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.d.ts +20 -4
- package/engine/behaviour/ability.lua +112 -39
- package/engine/behaviour/unit.d.ts +22 -0
- package/engine/behaviour/unit.lua +134 -4
- package/engine/buff.d.ts +84 -43
- package/engine/buff.lua +385 -226
- package/engine/internal/ability.d.ts +20 -13
- package/engine/internal/ability.lua +97 -76
- package/engine/internal/item/ability.lua +112 -4
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/item.d.ts +7 -4
- package/engine/internal/item.lua +131 -28
- 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/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 +15 -1
- package/engine/internal/unit/ability.lua +50 -14
- 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 +2 -2
- 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 +25 -6
- package/engine/internal/unit.d.ts +52 -13
- package/engine/internal/unit.lua +344 -116
- 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/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 +89 -33
- 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 +10 -3
- package/engine/object-data/entry/unit-type.lua +155 -92
- 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 +26 -3
- package/engine/object-field/ability.lua +54 -1
- package/engine/object-field/unit.d.ts +50 -3
- package/engine/object-field/unit.lua +186 -7
- package/engine/object-field.d.ts +17 -6
- package/engine/object-field.lua +187 -89
- 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 +3 -0
- package/engine/standard/fields/unit.lua +5 -0
- package/engine/text-tag.d.ts +12 -1
- package/engine/text-tag.lua +44 -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 +2 -3
- 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/utility/arrays.d.ts +9 -1
- package/utility/arrays.lua +37 -3
- package/utility/functions.d.ts +1 -0
- package/utility/functions.lua +1 -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 +8 -2
- package/utility/lua-maps.d.ts +4 -0
- package/utility/lua-maps.lua +20 -0
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +1 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/buff.lua
CHANGED
|
@@ -35,6 +35,7 @@ local UnitBonusType = ____bonus.UnitBonusType
|
|
|
35
35
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
36
|
local damageArea = ____area_2Ddamage.damageArea
|
|
37
37
|
local ____preconditions = require("utility.preconditions")
|
|
38
|
+
local check = ____preconditions.check
|
|
38
39
|
local checkNotNull = ____preconditions.checkNotNull
|
|
39
40
|
local ____effect = require("core.types.effect")
|
|
40
41
|
local Effect = ____effect.Effect
|
|
@@ -44,8 +45,14 @@ local ____unit = require("engine.behaviour.unit")
|
|
|
44
45
|
local UnitBehavior = ____unit.UnitBehavior
|
|
45
46
|
local ____arrays = require("utility.arrays")
|
|
46
47
|
local forEach = ____arrays.forEach
|
|
48
|
+
local ____event = require("event")
|
|
49
|
+
local Event = ____event.Event
|
|
47
50
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
51
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
52
|
+
local ____item = require("engine.internal.item")
|
|
53
|
+
local Item = ____item.Item
|
|
54
|
+
local ____destructable = require("core.types.destructable")
|
|
55
|
+
local Destructable = ____destructable.Destructable
|
|
49
56
|
local getUnitAbility = BlzGetUnitAbility
|
|
50
57
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
51
58
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -94,11 +101,15 @@ local buffParametersKeys = {
|
|
|
94
101
|
armorIncreaseFactor = true,
|
|
95
102
|
attackSpeedIncreaseFactor = true,
|
|
96
103
|
movementSpeedIncreaseFactor = true,
|
|
104
|
+
evasionProbability = true,
|
|
105
|
+
missProbability = true,
|
|
106
|
+
damageFactor = true,
|
|
97
107
|
receivedDamageFactor = true,
|
|
98
108
|
receivedMagicDamageFactor = true,
|
|
99
109
|
durationIncreaseOnAutoAttack = true,
|
|
100
110
|
maximumDuration = true,
|
|
101
111
|
maximumRemainingDuration = true,
|
|
112
|
+
turnsIntoGhost = true,
|
|
102
113
|
stuns = true,
|
|
103
114
|
ignoresStunImmunity = true,
|
|
104
115
|
providesStunImmunity = true,
|
|
@@ -107,12 +118,26 @@ local buffParametersKeys = {
|
|
|
107
118
|
disablesAutoAttack = true,
|
|
108
119
|
destroysOnDamage = true,
|
|
109
120
|
maximumAutoAttackCount = true,
|
|
121
|
+
maximumDamageDealtEventCount = true,
|
|
122
|
+
maximumDamageReceivedEventCount = true,
|
|
110
123
|
uniqueGroup = true,
|
|
111
124
|
damageOnExpiration = true,
|
|
112
125
|
healingOnExpiration = true,
|
|
113
126
|
killsOnExpiration = true,
|
|
114
127
|
explodesOnExpiration = true
|
|
115
128
|
}
|
|
129
|
+
local function resolveEnumValue(ability, level, value)
|
|
130
|
+
if value == nil or type(value) == "number" then
|
|
131
|
+
return value
|
|
132
|
+
end
|
|
133
|
+
if ability == nil then
|
|
134
|
+
error(
|
|
135
|
+
__TS__New(IllegalArgumentException),
|
|
136
|
+
0
|
|
137
|
+
)
|
|
138
|
+
end
|
|
139
|
+
return value:getValue(ability, level or ability.level)
|
|
140
|
+
end
|
|
116
141
|
local function resolveNumberValue(ability, level, value)
|
|
117
142
|
if value == nil or type(value) == "number" then
|
|
118
143
|
return value
|
|
@@ -150,6 +175,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
150
175
|
end
|
|
151
176
|
end
|
|
152
177
|
local buffBooleanParameters = {
|
|
178
|
+
"turnsIntoGhost",
|
|
153
179
|
"stuns",
|
|
154
180
|
"ignoresStunImmunity",
|
|
155
181
|
"disablesAutoAttack",
|
|
@@ -161,9 +187,13 @@ local buffNumberParameters = {
|
|
|
161
187
|
"durationIncreaseOnAutoAttack",
|
|
162
188
|
"attackSpeedIncreaseFactor",
|
|
163
189
|
"movementSpeedIncreaseFactor",
|
|
190
|
+
"evasionProbability",
|
|
164
191
|
"armorIncrease",
|
|
192
|
+
"damageFactor",
|
|
165
193
|
"receivedDamageFactor",
|
|
166
194
|
"maximumAutoAttackCount",
|
|
195
|
+
"maximumDamageDealtEventCount",
|
|
196
|
+
"maximumDamageReceivedEventCount",
|
|
167
197
|
"damageInterval",
|
|
168
198
|
"damagePerInterval",
|
|
169
199
|
"damageOverDuration",
|
|
@@ -198,7 +228,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
198
228
|
return checkNotNull(firstNativeBuffTypeId)
|
|
199
229
|
end
|
|
200
230
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
201
|
-
if buff[
|
|
231
|
+
if buff[104] == uniqueGroup then
|
|
202
232
|
buff:destroy()
|
|
203
233
|
end
|
|
204
234
|
end
|
|
@@ -206,17 +236,17 @@ local function destroyBuff(buff)
|
|
|
206
236
|
buff:destroy()
|
|
207
237
|
end
|
|
208
238
|
local function expireBuff(buff)
|
|
209
|
-
local remainingDamageOverDuration = buff[
|
|
210
|
-
local remainingHealingOverDuration = buff[
|
|
239
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
240
|
+
local remainingHealingOverDuration = buff[113] or 0
|
|
211
241
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
212
242
|
buff:flashSpecialEffect()
|
|
213
243
|
if remainingDamageOverDuration ~= 0 then
|
|
214
|
-
(buff[
|
|
215
|
-
buff[
|
|
244
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
245
|
+
buff[113] = nil
|
|
216
246
|
end
|
|
217
247
|
if remainingHealingOverDuration ~= 0 then
|
|
218
|
-
(buff[
|
|
219
|
-
buff[
|
|
248
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
249
|
+
buff[118] = nil
|
|
220
250
|
end
|
|
221
251
|
end
|
|
222
252
|
Timer:run(destroyBuff, buff)
|
|
@@ -224,56 +254,57 @@ local function expireBuff(buff)
|
|
|
224
254
|
end
|
|
225
255
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
226
256
|
buffDamageIntervalTimerCallback(buff)
|
|
227
|
-
local timer = buff[
|
|
228
|
-
local damageInterval = buff[
|
|
257
|
+
local timer = buff[114]
|
|
258
|
+
local damageInterval = buff[112]
|
|
229
259
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
230
260
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
231
261
|
end
|
|
232
262
|
end
|
|
233
263
|
buffDamageIntervalTimerCallback = function(buff)
|
|
234
264
|
buff:flashSpecialEffect()
|
|
235
|
-
local source = buff[
|
|
236
|
-
local remainingDamageOverDuration = buff[
|
|
265
|
+
local source = buff[102] or buff[101]
|
|
266
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
237
267
|
if remainingDamageOverDuration ~= 0 then
|
|
238
|
-
local damageInterval = buff[
|
|
268
|
+
local damageInterval = buff[112] or 0
|
|
239
269
|
if damageInterval ~= 0 then
|
|
240
270
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
241
|
-
source:damageTarget(buff[
|
|
242
|
-
buff[
|
|
271
|
+
source:damageTarget(buff[101], damage)
|
|
272
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
243
273
|
end
|
|
244
274
|
end
|
|
245
|
-
local damagePerInterval = buff[
|
|
275
|
+
local damagePerInterval = buff[111] or 0
|
|
246
276
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
247
|
-
source:damageTarget(buff[
|
|
277
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
248
278
|
end
|
|
249
279
|
end
|
|
250
280
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
251
281
|
buffHealingIntervalTimerCallback(buff)
|
|
252
|
-
local timer = buff[
|
|
253
|
-
local healingInterval = buff[
|
|
282
|
+
local timer = buff[119]
|
|
283
|
+
local healingInterval = buff[117]
|
|
254
284
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
255
285
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
256
286
|
end
|
|
257
287
|
end
|
|
258
288
|
buffHealingIntervalTimerCallback = function(buff)
|
|
259
|
-
if buff[
|
|
289
|
+
if buff[117] ~= buff[112] then
|
|
260
290
|
buff:flashSpecialEffect()
|
|
261
291
|
end
|
|
262
|
-
local source = buff[
|
|
263
|
-
local remainingHealingOverDuration = buff[
|
|
292
|
+
local source = buff[102] or buff[101]
|
|
293
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
264
294
|
if remainingHealingOverDuration ~= 0 then
|
|
265
|
-
local healingInterval = buff[
|
|
295
|
+
local healingInterval = buff[117] or 0
|
|
266
296
|
if healingInterval ~= 0 then
|
|
267
297
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
268
|
-
source:healTarget(buff[
|
|
269
|
-
buff[
|
|
298
|
+
source:healTarget(buff[101], healing)
|
|
299
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
270
300
|
end
|
|
271
301
|
end
|
|
272
|
-
local healingPerInterval = buff[
|
|
302
|
+
local healingPerInterval = buff[116] or 0
|
|
273
303
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
274
|
-
source:healTarget(buff[
|
|
304
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
275
305
|
end
|
|
276
306
|
end
|
|
307
|
+
local buffDestroyEvent = __TS__New(Event)
|
|
277
308
|
____exports.Buff = __TS__Class()
|
|
278
309
|
local Buff = ____exports.Buff
|
|
279
310
|
Buff.name = "Buff"
|
|
@@ -282,7 +313,8 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
282
313
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
283
314
|
self._unit = _unit
|
|
284
315
|
self.parameters = nil
|
|
285
|
-
self[100] =
|
|
316
|
+
self[100] = 0
|
|
317
|
+
self[101] = _unit
|
|
286
318
|
local typeId
|
|
287
319
|
local polarity
|
|
288
320
|
local resistanceType
|
|
@@ -291,7 +323,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
291
323
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
292
324
|
polarity = resistanceTypeOrPolarity
|
|
293
325
|
resistanceType = abilityOrParametersOrResistanceType
|
|
294
|
-
if __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
326
|
+
if __TS__InstanceOf(parametersOrAbility, Ability) or parametersOrAbility == nil then
|
|
295
327
|
ability = parametersOrAbility
|
|
296
328
|
else
|
|
297
329
|
ability = nil
|
|
@@ -301,7 +333,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
301
333
|
typeId = typeIdOrTypeIds
|
|
302
334
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
303
335
|
resistanceType = resistanceTypeOrPolarity
|
|
304
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
336
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) or abilityOrParametersOrResistanceType == nil then
|
|
305
337
|
ability = abilityOrParametersOrResistanceType
|
|
306
338
|
parameters = parametersOrAbility
|
|
307
339
|
else
|
|
@@ -310,9 +342,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
310
342
|
end
|
|
311
343
|
end
|
|
312
344
|
self.typeId = typeId
|
|
313
|
-
|
|
314
|
-
self.resistanceType = resistanceType
|
|
315
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
345
|
+
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
316
346
|
parameters = ability
|
|
317
347
|
ability = nil
|
|
318
348
|
end
|
|
@@ -338,14 +368,21 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
338
368
|
learnLevelMinimum = learnLevelMinimum or ability:getField(ABILITY_IF_REQUIRED_LEVEL)
|
|
339
369
|
duration = duration or getAbilityDuration(ability, _unit)
|
|
340
370
|
end
|
|
371
|
+
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
372
|
+
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
373
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
374
|
+
if missProbability ~= nil then
|
|
375
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
376
|
+
self[142] = missProbability
|
|
377
|
+
end
|
|
341
378
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
342
379
|
if buffByTypeId == nil then
|
|
343
380
|
buffByTypeId = {}
|
|
344
381
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
345
382
|
end
|
|
346
|
-
local
|
|
347
|
-
if
|
|
348
|
-
|
|
383
|
+
local ____opt_15 = buffByTypeId[typeId]
|
|
384
|
+
if ____opt_15 ~= nil then
|
|
385
|
+
____opt_15:destroy()
|
|
349
386
|
end
|
|
350
387
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
351
388
|
if uniqueGroup ~= nil then
|
|
@@ -354,18 +391,21 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
354
391
|
if not internalApplyBuff(
|
|
355
392
|
_unit,
|
|
356
393
|
typeId,
|
|
357
|
-
polarity,
|
|
358
|
-
resistanceType,
|
|
394
|
+
self.polarity,
|
|
395
|
+
self.resistanceType,
|
|
359
396
|
level,
|
|
360
397
|
duration,
|
|
361
398
|
spellStealPriority,
|
|
362
|
-
learnLevelMinimum
|
|
399
|
+
learnLevelMinimum,
|
|
400
|
+
missProbability
|
|
363
401
|
) then
|
|
402
|
+
self[100] = 1
|
|
364
403
|
UnitBehavior.prototype.destroy(self)
|
|
365
404
|
error(unsuccessfulApplicationMarker, 0)
|
|
366
405
|
end
|
|
367
406
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
368
407
|
if handle == nil then
|
|
408
|
+
self[100] = 1
|
|
369
409
|
UnitBehavior.prototype.destroy(self)
|
|
370
410
|
error(unsuccessfulApplicationMarker, 0)
|
|
371
411
|
end
|
|
@@ -374,20 +414,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
374
414
|
self._level = level
|
|
375
415
|
self._spellStealPriority = spellStealPriority
|
|
376
416
|
self._learnLevelMinimum = learnLevelMinimum
|
|
377
|
-
self[
|
|
378
|
-
self[
|
|
379
|
-
self[
|
|
380
|
-
self[
|
|
381
|
-
self[
|
|
417
|
+
self[102] = source
|
|
418
|
+
self[103] = duration or 0
|
|
419
|
+
self[104] = uniqueGroup
|
|
420
|
+
self[105] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
421
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
382
422
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
383
423
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
384
|
-
local
|
|
385
|
-
local
|
|
386
|
-
local
|
|
387
|
-
if
|
|
388
|
-
|
|
424
|
+
local ____ability_24 = ability
|
|
425
|
+
local ____level_25 = level
|
|
426
|
+
local ____temp_23 = parameters and parameters[buffBooleanParameter]
|
|
427
|
+
if ____temp_23 == nil then
|
|
428
|
+
____temp_23 = defaultParameters[buffBooleanParameter]
|
|
389
429
|
end
|
|
390
|
-
if resolveBooleanValue(
|
|
430
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
391
431
|
self[buffBooleanParameter] = true
|
|
392
432
|
end
|
|
393
433
|
end
|
|
@@ -403,11 +443,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
403
443
|
end
|
|
404
444
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
405
445
|
if maximumDuration ~= nil then
|
|
406
|
-
self[
|
|
446
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
407
447
|
end
|
|
408
448
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
409
449
|
if maximumRemainingDuration ~= nil then
|
|
410
|
-
self[
|
|
450
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
411
451
|
end
|
|
412
452
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
413
453
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -464,10 +504,12 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
464
504
|
timer:start(duration, false, expireBuff, self)
|
|
465
505
|
self._timer = timer
|
|
466
506
|
end
|
|
507
|
+
self:onCreate()
|
|
508
|
+
self[100] = 1
|
|
467
509
|
end
|
|
468
510
|
function Buff.prototype.getUnitBonus(self, bonusType)
|
|
469
|
-
local
|
|
470
|
-
local bonusId =
|
|
511
|
+
local ____opt_38 = self._bonusIdByBonusType
|
|
512
|
+
local bonusId = ____opt_38 and ____opt_38[bonusType]
|
|
471
513
|
return bonusId == nil and 0 or getUnitBonus(self._unit, bonusType, bonusId)
|
|
472
514
|
end
|
|
473
515
|
function Buff.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
|
|
@@ -478,63 +520,71 @@ function Buff.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
|
|
|
478
520
|
end
|
|
479
521
|
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
480
522
|
end
|
|
481
|
-
function Buff.prototype.flashEffect(self,
|
|
482
|
-
|
|
483
|
-
|
|
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
|
|
523
|
+
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
524
|
+
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
525
|
+
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
493
526
|
else
|
|
494
|
-
|
|
527
|
+
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
528
|
+
local ____Effect_42 = Effect
|
|
529
|
+
local ____Effect_flash_43 = Effect.flash
|
|
530
|
+
local ____array_41 = __TS__SparseArrayNew(
|
|
531
|
+
self[105],
|
|
532
|
+
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
533
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
534
|
+
)
|
|
535
|
+
local ____isWidgetProvided_40
|
|
536
|
+
if isWidgetProvided then
|
|
537
|
+
____isWidgetProvided_40 = yOrParametersOrDuration
|
|
538
|
+
else
|
|
539
|
+
____isWidgetProvided_40 = widgetOrXOrParametersOrDuration
|
|
540
|
+
end
|
|
541
|
+
__TS__SparseArrayPush(____array_41, ____isWidgetProvided_40)
|
|
542
|
+
____Effect_flash_43(
|
|
543
|
+
____Effect_42,
|
|
544
|
+
__TS__SparseArraySpread(____array_41)
|
|
545
|
+
)
|
|
495
546
|
end
|
|
496
|
-
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
497
|
-
____Effect_flash_41(
|
|
498
|
-
____Effect_40,
|
|
499
|
-
__TS__SparseArraySpread(____array_39)
|
|
500
|
-
)
|
|
501
547
|
end
|
|
502
548
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
503
549
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
504
|
-
local
|
|
505
|
-
local
|
|
506
|
-
local
|
|
507
|
-
self[
|
|
550
|
+
local ____Effect_46 = Effect
|
|
551
|
+
local ____Effect_flash_47 = Effect.flash
|
|
552
|
+
local ____array_45 = __TS__SparseArrayNew(
|
|
553
|
+
self[106],
|
|
508
554
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
509
555
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
510
556
|
)
|
|
511
|
-
local
|
|
557
|
+
local ____isWidgetProvided_44
|
|
512
558
|
if isWidgetProvided then
|
|
513
|
-
|
|
559
|
+
____isWidgetProvided_44 = duration
|
|
514
560
|
else
|
|
515
|
-
|
|
561
|
+
____isWidgetProvided_44 = widgetOrDuration
|
|
516
562
|
end
|
|
517
|
-
__TS__SparseArrayPush(
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
__TS__SparseArraySpread(
|
|
563
|
+
__TS__SparseArrayPush(____array_45, ____isWidgetProvided_44)
|
|
564
|
+
____Effect_flash_47(
|
|
565
|
+
____Effect_46,
|
|
566
|
+
__TS__SparseArraySpread(____array_45)
|
|
521
567
|
)
|
|
522
568
|
end
|
|
569
|
+
function Buff.prototype.onCreate(self)
|
|
570
|
+
end
|
|
523
571
|
function Buff.prototype.onDestroy(self)
|
|
572
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
573
|
+
self[100] = 2
|
|
524
574
|
local unit = self._unit
|
|
525
575
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
526
576
|
removeBuff(unit.handle, self.typeId)
|
|
527
577
|
end
|
|
528
578
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
529
|
-
local healingIntervalTimer = self[
|
|
579
|
+
local healingIntervalTimer = self[119]
|
|
530
580
|
if healingIntervalTimer ~= nil then
|
|
531
581
|
healingIntervalTimer:destroy()
|
|
532
|
-
self[
|
|
582
|
+
self[119] = nil
|
|
533
583
|
end
|
|
534
|
-
local damageIntervalTimer = self[
|
|
584
|
+
local damageIntervalTimer = self[114]
|
|
535
585
|
if damageIntervalTimer ~= nil then
|
|
536
586
|
damageIntervalTimer:destroy()
|
|
537
|
-
self[
|
|
587
|
+
self[114] = nil
|
|
538
588
|
end
|
|
539
589
|
if self._timer ~= nil then
|
|
540
590
|
self._timer:destroy()
|
|
@@ -544,15 +594,21 @@ function Buff.prototype.onDestroy(self)
|
|
|
544
594
|
behavior:destroy()
|
|
545
595
|
end
|
|
546
596
|
end
|
|
547
|
-
if self[
|
|
597
|
+
if self[139] then
|
|
598
|
+
unit:decrementInvulnerabilityCounter()
|
|
599
|
+
end
|
|
600
|
+
if self[138] then
|
|
548
601
|
unit:decrementDisableAutoAttackCounter()
|
|
549
602
|
end
|
|
550
|
-
if self[
|
|
551
|
-
if self[
|
|
603
|
+
if self[136] then
|
|
604
|
+
if self[137] then
|
|
552
605
|
unit:decrementStunCounter()
|
|
553
606
|
end
|
|
554
607
|
unit:decrementStunCounter()
|
|
555
608
|
end
|
|
609
|
+
if self[135] then
|
|
610
|
+
unit:decrementGhostCounter()
|
|
611
|
+
end
|
|
556
612
|
if self._abilityTypeIds ~= nil then
|
|
557
613
|
for abilityTypeId in pairs(self._abilityTypeIds) do
|
|
558
614
|
unit:removeAbility(abilityTypeId)
|
|
@@ -563,6 +619,8 @@ function Buff.prototype.onDestroy(self)
|
|
|
563
619
|
removeUnitBonus(unit, bonusType, bonusId)
|
|
564
620
|
end
|
|
565
621
|
end
|
|
622
|
+
Event.invoke(buffDestroyEvent, self)
|
|
623
|
+
self[100] = 3
|
|
566
624
|
return UnitBehavior.prototype.onDestroy(self)
|
|
567
625
|
end
|
|
568
626
|
function Buff.apply(self, ...)
|
|
@@ -590,8 +648,8 @@ function Buff.apply(self, ...)
|
|
|
590
648
|
end
|
|
591
649
|
end
|
|
592
650
|
function Buff.getByTypeId(self, unit, typeId)
|
|
593
|
-
local
|
|
594
|
-
local buff =
|
|
651
|
+
local ____opt_48 = buffByTypeIdByUnit[unit]
|
|
652
|
+
local buff = ____opt_48 and ____opt_48[typeId]
|
|
595
653
|
if __TS__InstanceOf(buff, self) then
|
|
596
654
|
return buff
|
|
597
655
|
end
|
|
@@ -599,56 +657,72 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
599
657
|
end
|
|
600
658
|
function Buff.prototype.onExpiration(self)
|
|
601
659
|
local unit = self.unit
|
|
602
|
-
if self[119] ~= nil then
|
|
603
|
-
(self[101] or unit):damageTarget(unit, self[119] or 0)
|
|
604
|
-
end
|
|
605
660
|
if self[120] ~= nil then
|
|
606
|
-
(self[
|
|
661
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
607
662
|
end
|
|
608
|
-
if self[
|
|
663
|
+
if self[121] ~= nil then
|
|
664
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
665
|
+
end
|
|
666
|
+
if self[141] then
|
|
609
667
|
unit:explode()
|
|
610
|
-
elseif self[
|
|
668
|
+
elseif self[140] then
|
|
611
669
|
unit:kill()
|
|
612
670
|
end
|
|
613
671
|
end
|
|
614
672
|
function Buff.prototype.onDeath(self, source)
|
|
615
673
|
local unit = self.unit
|
|
616
|
-
if self[
|
|
674
|
+
if self[122] ~= nil then
|
|
617
675
|
damageArea(
|
|
618
|
-
self[
|
|
619
|
-
self[
|
|
676
|
+
self[102] or unit,
|
|
677
|
+
self[122],
|
|
620
678
|
unit.x,
|
|
621
679
|
unit.y,
|
|
680
|
+
self[124] or 0,
|
|
622
681
|
self[123] or 0,
|
|
623
|
-
self[
|
|
682
|
+
self[126] or 0,
|
|
624
683
|
self[125] or 0,
|
|
625
|
-
self[
|
|
626
|
-
self[127] or 0
|
|
627
|
-
self[126] or 0
|
|
684
|
+
self[128] or 0,
|
|
685
|
+
self[127] or 0
|
|
628
686
|
)
|
|
629
687
|
end
|
|
630
688
|
end
|
|
631
689
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
632
690
|
if event.isAttack then
|
|
633
|
-
if self[
|
|
634
|
-
local durationIncrease = self[
|
|
635
|
-
local maximumDuration = self[
|
|
691
|
+
if self[107] ~= nil then
|
|
692
|
+
local durationIncrease = self[107]
|
|
693
|
+
local maximumDuration = self[108] or 0
|
|
636
694
|
if maximumDuration > 0 then
|
|
637
695
|
durationIncrease = min(
|
|
638
696
|
durationIncrease,
|
|
639
|
-
max(0, maximumDuration - self[
|
|
697
|
+
max(0, maximumDuration - self[103])
|
|
640
698
|
)
|
|
641
699
|
end
|
|
642
700
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
643
|
-
local maximumRemainingDuration = self[
|
|
701
|
+
local maximumRemainingDuration = self[109] or 0
|
|
644
702
|
if maximumRemainingDuration > 0 then
|
|
645
703
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
646
704
|
end
|
|
647
705
|
self.remainingDuration = remainingDuration
|
|
648
706
|
end
|
|
649
|
-
local autoAttackCount = (self[
|
|
650
|
-
self[
|
|
651
|
-
if autoAttackCount == self[
|
|
707
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
708
|
+
self[129] = autoAttackCount
|
|
709
|
+
if autoAttackCount == self[130] then
|
|
710
|
+
self:destroy()
|
|
711
|
+
end
|
|
712
|
+
end
|
|
713
|
+
if event.originalAmount ~= 0 then
|
|
714
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
715
|
+
self[131] = damageDealtEventCount
|
|
716
|
+
if damageDealtEventCount == self[132] then
|
|
717
|
+
self:destroy()
|
|
718
|
+
end
|
|
719
|
+
end
|
|
720
|
+
end
|
|
721
|
+
function Buff.prototype.onDamageReceived(self, source, event)
|
|
722
|
+
if event.originalAmount ~= 0 then
|
|
723
|
+
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
724
|
+
self[133] = damageReceivedEventCount
|
|
725
|
+
if damageReceivedEventCount == self[134] then
|
|
652
726
|
self:destroy()
|
|
653
727
|
end
|
|
654
728
|
end
|
|
@@ -658,7 +732,7 @@ __TS__SetDescriptor(
|
|
|
658
732
|
Buff.prototype,
|
|
659
733
|
"source",
|
|
660
734
|
{get = function(self)
|
|
661
|
-
return self[
|
|
735
|
+
return self[102] or self._unit
|
|
662
736
|
end},
|
|
663
737
|
true
|
|
664
738
|
)
|
|
@@ -675,13 +749,13 @@ __TS__SetDescriptor(
|
|
|
675
749
|
"remainingDamageOverDuration",
|
|
676
750
|
{
|
|
677
751
|
get = function(self)
|
|
678
|
-
return self[
|
|
752
|
+
return self[113] or 0
|
|
679
753
|
end,
|
|
680
754
|
set = function(self, remainingDamageOverDuration)
|
|
681
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
682
|
-
self[
|
|
683
|
-
local damageOverDuration = (self[
|
|
684
|
-
self[
|
|
755
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[113] or 0)
|
|
756
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
757
|
+
local damageOverDuration = (self[110] or 0) + remainingDamageOverDurationDelta
|
|
758
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
685
759
|
end
|
|
686
760
|
},
|
|
687
761
|
true
|
|
@@ -691,13 +765,13 @@ __TS__SetDescriptor(
|
|
|
691
765
|
"damageOverDuration",
|
|
692
766
|
{
|
|
693
767
|
get = function(self)
|
|
694
|
-
return self[
|
|
768
|
+
return self[110] or 0
|
|
695
769
|
end,
|
|
696
770
|
set = function(self, damageOverDuration)
|
|
697
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
698
|
-
self[
|
|
699
|
-
local remainingDamageOverDuration = (self[
|
|
700
|
-
self[
|
|
771
|
+
local damageOverDurationDelta = damageOverDuration - (self[110] or 0)
|
|
772
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
773
|
+
local remainingDamageOverDuration = (self[113] or 0) + damageOverDurationDelta
|
|
774
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
701
775
|
end
|
|
702
776
|
},
|
|
703
777
|
true
|
|
@@ -707,10 +781,10 @@ __TS__SetDescriptor(
|
|
|
707
781
|
"damagePerInterval",
|
|
708
782
|
{
|
|
709
783
|
get = function(self)
|
|
710
|
-
return self[
|
|
784
|
+
return self[111] or 0
|
|
711
785
|
end,
|
|
712
786
|
set = function(self, damagePerInterval)
|
|
713
|
-
self[
|
|
787
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
714
788
|
end
|
|
715
789
|
},
|
|
716
790
|
true
|
|
@@ -720,25 +794,25 @@ __TS__SetDescriptor(
|
|
|
720
794
|
"damageInterval",
|
|
721
795
|
{
|
|
722
796
|
get = function(self)
|
|
723
|
-
return self[
|
|
797
|
+
return self[112] or 0
|
|
724
798
|
end,
|
|
725
799
|
set = function(self, damageInterval)
|
|
726
800
|
if damageInterval <= 0 then
|
|
727
|
-
self[
|
|
728
|
-
local timer = self[
|
|
801
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
802
|
+
local timer = self[114]
|
|
729
803
|
if timer ~= nil then
|
|
730
804
|
timer:destroy()
|
|
731
|
-
self[
|
|
805
|
+
self[114] = nil
|
|
732
806
|
end
|
|
733
807
|
return
|
|
734
808
|
end
|
|
735
|
-
self[
|
|
736
|
-
local
|
|
737
|
-
local elapsed =
|
|
738
|
-
local timer = self[
|
|
809
|
+
self[112] = damageInterval
|
|
810
|
+
local ____opt_50 = self._timer
|
|
811
|
+
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
812
|
+
local timer = self[114]
|
|
739
813
|
if timer == nil then
|
|
740
814
|
timer = Timer:create()
|
|
741
|
-
self[
|
|
815
|
+
self[114] = timer
|
|
742
816
|
end
|
|
743
817
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
744
818
|
if initialDelay == damageInterval then
|
|
@@ -755,13 +829,13 @@ __TS__SetDescriptor(
|
|
|
755
829
|
"remainingHealingOverDuration",
|
|
756
830
|
{
|
|
757
831
|
get = function(self)
|
|
758
|
-
return self[
|
|
832
|
+
return self[118] or 0
|
|
759
833
|
end,
|
|
760
834
|
set = function(self, remainingHealingOverDuration)
|
|
761
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
762
|
-
self[
|
|
763
|
-
local healingOverDuration = (self[
|
|
764
|
-
self[
|
|
835
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[118] or 0)
|
|
836
|
+
self[113] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
837
|
+
local healingOverDuration = (self[115] or 0) + remainingHealingOverDurationDelta
|
|
838
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
765
839
|
end
|
|
766
840
|
},
|
|
767
841
|
true
|
|
@@ -771,13 +845,13 @@ __TS__SetDescriptor(
|
|
|
771
845
|
"healingOverDuration",
|
|
772
846
|
{
|
|
773
847
|
get = function(self)
|
|
774
|
-
return self[
|
|
848
|
+
return self[115] or 0
|
|
775
849
|
end,
|
|
776
850
|
set = function(self, healingOverDuration)
|
|
777
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
778
|
-
self[
|
|
779
|
-
local remainingHealingOverDuration = (self[
|
|
780
|
-
self[
|
|
851
|
+
local healingOverDurationDelta = healingOverDuration - (self[115] or 0)
|
|
852
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
853
|
+
local remainingHealingOverDuration = (self[118] or 0) + healingOverDurationDelta
|
|
854
|
+
self[118] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
781
855
|
end
|
|
782
856
|
},
|
|
783
857
|
true
|
|
@@ -787,10 +861,10 @@ __TS__SetDescriptor(
|
|
|
787
861
|
"healingPerInterval",
|
|
788
862
|
{
|
|
789
863
|
get = function(self)
|
|
790
|
-
return self[
|
|
864
|
+
return self[116] or 0
|
|
791
865
|
end,
|
|
792
866
|
set = function(self, healingPerInterval)
|
|
793
|
-
self[
|
|
867
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
794
868
|
end
|
|
795
869
|
},
|
|
796
870
|
true
|
|
@@ -800,25 +874,25 @@ __TS__SetDescriptor(
|
|
|
800
874
|
"healingInterval",
|
|
801
875
|
{
|
|
802
876
|
get = function(self)
|
|
803
|
-
return self[
|
|
877
|
+
return self[117] or 0
|
|
804
878
|
end,
|
|
805
879
|
set = function(self, healingInterval)
|
|
806
880
|
if healingInterval <= 0 then
|
|
807
|
-
self[
|
|
808
|
-
local timer = self[
|
|
881
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
882
|
+
local timer = self[119]
|
|
809
883
|
if timer ~= nil then
|
|
810
884
|
timer:destroy()
|
|
811
|
-
self[
|
|
885
|
+
self[119] = nil
|
|
812
886
|
end
|
|
813
887
|
return
|
|
814
888
|
end
|
|
815
|
-
self[
|
|
816
|
-
local
|
|
817
|
-
local elapsed =
|
|
818
|
-
local timer = self[
|
|
889
|
+
self[117] = healingInterval
|
|
890
|
+
local ____opt_52 = self._timer
|
|
891
|
+
local elapsed = ____opt_52 and ____opt_52.elapsed or 0
|
|
892
|
+
local timer = self[119]
|
|
819
893
|
if timer == nil then
|
|
820
894
|
timer = Timer:create()
|
|
821
|
-
self[
|
|
895
|
+
self[119] = timer
|
|
822
896
|
end
|
|
823
897
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
824
898
|
if initialDelay == healingInterval then
|
|
@@ -835,10 +909,10 @@ __TS__SetDescriptor(
|
|
|
835
909
|
"damageOnExpiration",
|
|
836
910
|
{
|
|
837
911
|
get = function(self)
|
|
838
|
-
return self[
|
|
912
|
+
return self[120] or 0
|
|
839
913
|
end,
|
|
840
914
|
set = function(self, damageOnExpiration)
|
|
841
|
-
self[
|
|
915
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
842
916
|
end
|
|
843
917
|
},
|
|
844
918
|
true
|
|
@@ -848,10 +922,23 @@ __TS__SetDescriptor(
|
|
|
848
922
|
"healingOnExpiration",
|
|
849
923
|
{
|
|
850
924
|
get = function(self)
|
|
851
|
-
return self[
|
|
925
|
+
return self[121] or 0
|
|
852
926
|
end,
|
|
853
927
|
set = function(self, healingOnExpiration)
|
|
854
|
-
self[
|
|
928
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
929
|
+
end
|
|
930
|
+
},
|
|
931
|
+
true
|
|
932
|
+
)
|
|
933
|
+
__TS__SetDescriptor(
|
|
934
|
+
Buff.prototype,
|
|
935
|
+
"damageFactor",
|
|
936
|
+
{
|
|
937
|
+
get = function(self)
|
|
938
|
+
return self:getUnitBonus(UnitBonusType.DAMAGE_FACTOR)
|
|
939
|
+
end,
|
|
940
|
+
set = function(self, damageFactor)
|
|
941
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.DAMAGE_FACTOR, damageFactor)
|
|
855
942
|
end
|
|
856
943
|
},
|
|
857
944
|
true
|
|
@@ -882,30 +969,53 @@ __TS__SetDescriptor(
|
|
|
882
969
|
},
|
|
883
970
|
true
|
|
884
971
|
)
|
|
972
|
+
__TS__SetDescriptor(
|
|
973
|
+
Buff.prototype,
|
|
974
|
+
"turnsIntoGhost",
|
|
975
|
+
{
|
|
976
|
+
get = function(self)
|
|
977
|
+
local ____self__135_54 = self[135]
|
|
978
|
+
if ____self__135_54 == nil then
|
|
979
|
+
____self__135_54 = false
|
|
980
|
+
end
|
|
981
|
+
return ____self__135_54
|
|
982
|
+
end,
|
|
983
|
+
set = function(self, turnsIntoGhost)
|
|
984
|
+
if not turnsIntoGhost and self[135] then
|
|
985
|
+
self.object:decrementGhostCounter()
|
|
986
|
+
self[135] = nil
|
|
987
|
+
elseif turnsIntoGhost and not self[135] then
|
|
988
|
+
self.object:incrementGhostCounter()
|
|
989
|
+
self[135] = true
|
|
990
|
+
end
|
|
991
|
+
end
|
|
992
|
+
},
|
|
993
|
+
true
|
|
994
|
+
)
|
|
885
995
|
__TS__SetDescriptor(
|
|
886
996
|
Buff.prototype,
|
|
887
997
|
"stuns",
|
|
888
998
|
{
|
|
889
999
|
get = function(self)
|
|
890
|
-
local
|
|
891
|
-
if
|
|
892
|
-
|
|
1000
|
+
local ____self__136_55 = self[136]
|
|
1001
|
+
if ____self__136_55 == nil then
|
|
1002
|
+
____self__136_55 = false
|
|
893
1003
|
end
|
|
894
|
-
return
|
|
1004
|
+
return ____self__136_55
|
|
895
1005
|
end,
|
|
896
1006
|
set = function(self, stuns)
|
|
897
|
-
if not stuns and self[
|
|
898
|
-
if self[
|
|
1007
|
+
if not stuns and self[136] then
|
|
1008
|
+
if self[137] then
|
|
899
1009
|
self.object:decrementStunCounter()
|
|
900
1010
|
end
|
|
901
1011
|
self.object:decrementStunCounter()
|
|
902
|
-
self[
|
|
903
|
-
elseif stuns and not self[
|
|
904
|
-
if self[
|
|
1012
|
+
self[136] = nil
|
|
1013
|
+
elseif stuns and not self[136] then
|
|
1014
|
+
if self[137] then
|
|
905
1015
|
self.object:incrementStunCounter()
|
|
906
1016
|
end
|
|
907
1017
|
self.object:incrementStunCounter()
|
|
908
|
-
self[
|
|
1018
|
+
self[136] = true
|
|
909
1019
|
end
|
|
910
1020
|
end
|
|
911
1021
|
},
|
|
@@ -916,23 +1026,23 @@ __TS__SetDescriptor(
|
|
|
916
1026
|
"ignoresStunImmunity",
|
|
917
1027
|
{
|
|
918
1028
|
get = function(self)
|
|
919
|
-
local
|
|
920
|
-
if
|
|
921
|
-
|
|
1029
|
+
local ____self__137_56 = self[137]
|
|
1030
|
+
if ____self__137_56 == nil then
|
|
1031
|
+
____self__137_56 = false
|
|
922
1032
|
end
|
|
923
|
-
return
|
|
1033
|
+
return ____self__137_56
|
|
924
1034
|
end,
|
|
925
1035
|
set = function(self, ignoresStunImmunity)
|
|
926
|
-
if not ignoresStunImmunity and self[
|
|
927
|
-
if self[
|
|
1036
|
+
if not ignoresStunImmunity and self[137] then
|
|
1037
|
+
if self[136] then
|
|
928
1038
|
self.object:decrementStunCounter()
|
|
929
1039
|
end
|
|
930
|
-
self[
|
|
931
|
-
elseif ignoresStunImmunity and not self[
|
|
932
|
-
if self[
|
|
1040
|
+
self[137] = nil
|
|
1041
|
+
elseif ignoresStunImmunity and not self[137] then
|
|
1042
|
+
if self[136] then
|
|
933
1043
|
self.object:incrementStunCounter()
|
|
934
1044
|
end
|
|
935
|
-
self[
|
|
1045
|
+
self[137] = true
|
|
936
1046
|
end
|
|
937
1047
|
end
|
|
938
1048
|
},
|
|
@@ -943,19 +1053,19 @@ __TS__SetDescriptor(
|
|
|
943
1053
|
"disablesAutoAttack",
|
|
944
1054
|
{
|
|
945
1055
|
get = function(self)
|
|
946
|
-
local
|
|
947
|
-
if
|
|
948
|
-
|
|
1056
|
+
local ____self__138_57 = self[138]
|
|
1057
|
+
if ____self__138_57 == nil then
|
|
1058
|
+
____self__138_57 = false
|
|
949
1059
|
end
|
|
950
|
-
return
|
|
1060
|
+
return ____self__138_57
|
|
951
1061
|
end,
|
|
952
1062
|
set = function(self, disablesAutoAttack)
|
|
953
|
-
if not disablesAutoAttack and self[
|
|
1063
|
+
if not disablesAutoAttack and self[138] then
|
|
954
1064
|
self.object:decrementDisableAutoAttackCounter()
|
|
955
|
-
self[
|
|
956
|
-
elseif disablesAutoAttack and not self[
|
|
1065
|
+
self[138] = nil
|
|
1066
|
+
elseif disablesAutoAttack and not self[138] then
|
|
957
1067
|
self.object:incrementDisableAutoAttackCounter()
|
|
958
|
-
self[
|
|
1068
|
+
self[138] = true
|
|
959
1069
|
end
|
|
960
1070
|
end
|
|
961
1071
|
},
|
|
@@ -966,19 +1076,19 @@ __TS__SetDescriptor(
|
|
|
966
1076
|
"providesInvulnerability",
|
|
967
1077
|
{
|
|
968
1078
|
get = function(self)
|
|
969
|
-
local
|
|
970
|
-
if
|
|
971
|
-
|
|
1079
|
+
local ____self__139_58 = self[139]
|
|
1080
|
+
if ____self__139_58 == nil then
|
|
1081
|
+
____self__139_58 = false
|
|
972
1082
|
end
|
|
973
|
-
return
|
|
1083
|
+
return ____self__139_58
|
|
974
1084
|
end,
|
|
975
1085
|
set = function(self, providesInvulnerability)
|
|
976
|
-
if not providesInvulnerability and self[
|
|
1086
|
+
if not providesInvulnerability and self[139] then
|
|
977
1087
|
self.object:decrementInvulnerabilityCounter()
|
|
978
|
-
self[
|
|
979
|
-
elseif providesInvulnerability and not self[
|
|
1088
|
+
self[139] = nil
|
|
1089
|
+
elseif providesInvulnerability and not self[139] then
|
|
980
1090
|
self.object:incrementInvulnerabilityCounter()
|
|
981
|
-
self[
|
|
1091
|
+
self[139] = true
|
|
982
1092
|
end
|
|
983
1093
|
end
|
|
984
1094
|
},
|
|
@@ -989,17 +1099,17 @@ __TS__SetDescriptor(
|
|
|
989
1099
|
"killsOnExpiration",
|
|
990
1100
|
{
|
|
991
1101
|
get = function(self)
|
|
992
|
-
local
|
|
993
|
-
if
|
|
994
|
-
|
|
1102
|
+
local ____self__140_59 = self[140]
|
|
1103
|
+
if ____self__140_59 == nil then
|
|
1104
|
+
____self__140_59 = false
|
|
995
1105
|
end
|
|
996
|
-
return
|
|
1106
|
+
return ____self__140_59
|
|
997
1107
|
end,
|
|
998
1108
|
set = function(self, killsOnExpiration)
|
|
999
|
-
if not killsOnExpiration and self[
|
|
1000
|
-
self[
|
|
1001
|
-
elseif killsOnExpiration and not self[
|
|
1002
|
-
self[
|
|
1109
|
+
if not killsOnExpiration and self[140] then
|
|
1110
|
+
self[140] = nil
|
|
1111
|
+
elseif killsOnExpiration and not self[140] then
|
|
1112
|
+
self[140] = true
|
|
1003
1113
|
end
|
|
1004
1114
|
end
|
|
1005
1115
|
},
|
|
@@ -1010,17 +1120,51 @@ __TS__SetDescriptor(
|
|
|
1010
1120
|
"explodesOnExpiration",
|
|
1011
1121
|
{
|
|
1012
1122
|
get = function(self)
|
|
1013
|
-
local
|
|
1014
|
-
if
|
|
1015
|
-
|
|
1123
|
+
local ____self__141_60 = self[141]
|
|
1124
|
+
if ____self__141_60 == nil then
|
|
1125
|
+
____self__141_60 = false
|
|
1016
1126
|
end
|
|
1017
|
-
return
|
|
1127
|
+
return ____self__141_60
|
|
1018
1128
|
end,
|
|
1019
1129
|
set = function(self, killsOnExpiration)
|
|
1020
|
-
if not killsOnExpiration and self[
|
|
1021
|
-
self[
|
|
1022
|
-
elseif killsOnExpiration and not self[
|
|
1023
|
-
self[
|
|
1130
|
+
if not killsOnExpiration and self[141] then
|
|
1131
|
+
self[141] = nil
|
|
1132
|
+
elseif killsOnExpiration and not self[141] then
|
|
1133
|
+
self[141] = true
|
|
1134
|
+
end
|
|
1135
|
+
end
|
|
1136
|
+
},
|
|
1137
|
+
true
|
|
1138
|
+
)
|
|
1139
|
+
__TS__SetDescriptor(
|
|
1140
|
+
Buff.prototype,
|
|
1141
|
+
"maximumDamageDealtEventCount",
|
|
1142
|
+
{
|
|
1143
|
+
get = function(self)
|
|
1144
|
+
return self[132] or 0
|
|
1145
|
+
end,
|
|
1146
|
+
set = function(self, maximumDamageDealtEventCount)
|
|
1147
|
+
if maximumDamageDealtEventCount == 0 then
|
|
1148
|
+
self[132] = nil
|
|
1149
|
+
else
|
|
1150
|
+
self[132] = maximumDamageDealtEventCount
|
|
1151
|
+
end
|
|
1152
|
+
end
|
|
1153
|
+
},
|
|
1154
|
+
true
|
|
1155
|
+
)
|
|
1156
|
+
__TS__SetDescriptor(
|
|
1157
|
+
Buff.prototype,
|
|
1158
|
+
"maximumDamageReceivedEventCount",
|
|
1159
|
+
{
|
|
1160
|
+
get = function(self)
|
|
1161
|
+
return self[134] or 0
|
|
1162
|
+
end,
|
|
1163
|
+
set = function(self, maximumDamageReceivedEventCount)
|
|
1164
|
+
if maximumDamageReceivedEventCount == 0 then
|
|
1165
|
+
self[134] = nil
|
|
1166
|
+
else
|
|
1167
|
+
self[134] = maximumDamageReceivedEventCount
|
|
1024
1168
|
end
|
|
1025
1169
|
end
|
|
1026
1170
|
},
|
|
@@ -1031,13 +1175,13 @@ __TS__SetDescriptor(
|
|
|
1031
1175
|
"maximumAutoAttackCount",
|
|
1032
1176
|
{
|
|
1033
1177
|
get = function(self)
|
|
1034
|
-
return self[
|
|
1178
|
+
return self[130] or 0
|
|
1035
1179
|
end,
|
|
1036
1180
|
set = function(self, maximumAutoAttackCount)
|
|
1037
1181
|
if maximumAutoAttackCount == 0 then
|
|
1038
|
-
self[
|
|
1182
|
+
self[130] = nil
|
|
1039
1183
|
else
|
|
1040
|
-
self[
|
|
1184
|
+
self[130] = maximumAutoAttackCount
|
|
1041
1185
|
end
|
|
1042
1186
|
end
|
|
1043
1187
|
},
|
|
@@ -1048,10 +1192,10 @@ __TS__SetDescriptor(
|
|
|
1048
1192
|
"durationIncreaseOnAutoAttack",
|
|
1049
1193
|
{
|
|
1050
1194
|
get = function(self)
|
|
1051
|
-
return self[
|
|
1195
|
+
return self[107] or 0
|
|
1052
1196
|
end,
|
|
1053
1197
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1054
|
-
self[
|
|
1198
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
1055
1199
|
end
|
|
1056
1200
|
},
|
|
1057
1201
|
true
|
|
@@ -1082,11 +1226,24 @@ __TS__SetDescriptor(
|
|
|
1082
1226
|
},
|
|
1083
1227
|
true
|
|
1084
1228
|
)
|
|
1229
|
+
__TS__SetDescriptor(
|
|
1230
|
+
Buff.prototype,
|
|
1231
|
+
"evasionProbability",
|
|
1232
|
+
{
|
|
1233
|
+
get = function(self)
|
|
1234
|
+
return self:getUnitBonus(UnitBonusType.EVASION_PROBABILITY)
|
|
1235
|
+
end,
|
|
1236
|
+
set = function(self, evasionProbability)
|
|
1237
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.EVASION_PROBABILITY, evasionProbability)
|
|
1238
|
+
end
|
|
1239
|
+
},
|
|
1240
|
+
true
|
|
1241
|
+
)
|
|
1085
1242
|
__TS__SetDescriptor(
|
|
1086
1243
|
Buff.prototype,
|
|
1087
1244
|
"duration",
|
|
1088
1245
|
{get = function(self)
|
|
1089
|
-
return self[
|
|
1246
|
+
return self[103]
|
|
1090
1247
|
end},
|
|
1091
1248
|
true
|
|
1092
1249
|
)
|
|
@@ -1095,15 +1252,15 @@ __TS__SetDescriptor(
|
|
|
1095
1252
|
"remainingDuration",
|
|
1096
1253
|
{
|
|
1097
1254
|
get = function(self)
|
|
1098
|
-
local
|
|
1099
|
-
return
|
|
1255
|
+
local ____opt_61 = self._timer
|
|
1256
|
+
return ____opt_61 and ____opt_61.remaining or 0
|
|
1100
1257
|
end,
|
|
1101
1258
|
set = function(self, remainingDuration)
|
|
1102
|
-
local
|
|
1103
|
-
local
|
|
1104
|
-
local remainingDurationDelta =
|
|
1259
|
+
local ____remainingDuration_65 = remainingDuration
|
|
1260
|
+
local ____opt_63 = self._timer
|
|
1261
|
+
local remainingDurationDelta = ____remainingDuration_65 - (____opt_63 and ____opt_63.remaining or 0)
|
|
1105
1262
|
if remainingDurationDelta ~= 0 then
|
|
1106
|
-
self[
|
|
1263
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1107
1264
|
if remainingDuration <= 0 then
|
|
1108
1265
|
Timer:run(destroyBuff, self)
|
|
1109
1266
|
else
|
|
@@ -1115,7 +1272,8 @@ __TS__SetDescriptor(
|
|
|
1115
1272
|
self._level,
|
|
1116
1273
|
remainingDuration,
|
|
1117
1274
|
self._spellStealPriority,
|
|
1118
|
-
self._learnLevelMinimum
|
|
1275
|
+
self._learnLevelMinimum,
|
|
1276
|
+
self[142]
|
|
1119
1277
|
) then
|
|
1120
1278
|
local timer = self._timer
|
|
1121
1279
|
if timer == nil then
|
|
@@ -1129,10 +1287,11 @@ __TS__SetDescriptor(
|
|
|
1129
1287
|
end
|
|
1130
1288
|
},
|
|
1131
1289
|
true
|
|
1132
|
-
)
|
|
1290
|
+
)
|
|
1291
|
+
Buff.destroyEvent = buffDestroyEvent;
|
|
1133
1292
|
(function(self)
|
|
1134
1293
|
local function destroyBuffIfNeeded(buff)
|
|
1135
|
-
if getUnitAbility(buff[
|
|
1294
|
+
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
1136
1295
|
buff:destroy()
|
|
1137
1296
|
end
|
|
1138
1297
|
end
|