warscript 0.0.1-dev.70ae346 → 0.0.1-dev.70c1215
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/core/types/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- package/core/types/frame.lua +24 -21
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -25
- package/core/types/sound.lua +91 -46
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.lua +6 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -3
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +11 -2
- package/engine/behaviour/ability.lua +56 -21
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +40 -18
- package/engine/buff.lua +269 -155
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +49 -9
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +18 -17
- package/engine/internal/item.lua +135 -49
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/damage-metadata-by-target.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/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +10 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +43 -25
- package/engine/internal/unit.lua +384 -260
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/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 +0 -9
- 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/curse.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/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/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 +15 -11
- package/engine/object-data/entry/ability-type.lua +153 -13
- package/engine/object-data/entry/buff-type/applicable.lua +5 -0
- package/engine/object-data/entry/buff-type.d.ts +5 -11
- package/engine/object-data/entry/buff-type.lua +11 -27
- package/engine/object-data/entry/destructible-type.d.ts +27 -1
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/sound-preset.d.ts +17 -0
- package/engine/object-data/entry/sound-preset.lua +104 -0
- package/engine/object-data/entry/unit-type.d.ts +17 -4
- package/engine/object-data/entry/unit-type.lua +197 -85
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +25 -6
- package/engine/object-field.lua +357 -118
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +6 -0
- package/engine/unit.lua +6 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/package.json +2 -2
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-map.d.ts +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +43 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/buff.lua
CHANGED
|
@@ -16,6 +16,7 @@ local internalApplyBuff = ____applicable.internalApplyBuff
|
|
|
16
16
|
local removeBuff = ____applicable.removeBuff
|
|
17
17
|
local ____ability = require("engine.internal.ability")
|
|
18
18
|
local Ability = ____ability.Ability
|
|
19
|
+
local UnitAbility = ____ability.UnitAbility
|
|
19
20
|
local ____ability = require("engine.object-field.ability")
|
|
20
21
|
local AbilityBooleanField = ____ability.AbilityBooleanField
|
|
21
22
|
local AbilityNumberField = ____ability.AbilityNumberField
|
|
@@ -28,9 +29,6 @@ local ____math = require("math")
|
|
|
28
29
|
local max = ____math.max
|
|
29
30
|
local min = ____math.min
|
|
30
31
|
local ____bonus = require("engine.internal.unit.bonus")
|
|
31
|
-
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
32
|
-
local getUnitBonus = ____bonus.getUnitBonus
|
|
33
|
-
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
34
32
|
local UnitBonusType = ____bonus.UnitBonusType
|
|
35
33
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
34
|
local damageArea = ____area_2Ddamage.damageArea
|
|
@@ -44,6 +42,7 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
44
42
|
local ____unit = require("engine.behaviour.unit")
|
|
45
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
46
44
|
local ____arrays = require("utility.arrays")
|
|
45
|
+
local emptyArray = ____arrays.emptyArray
|
|
47
46
|
local forEach = ____arrays.forEach
|
|
48
47
|
local ____event = require("event")
|
|
49
48
|
local Event = ____event.Event
|
|
@@ -53,6 +52,12 @@ local ____item = require("engine.internal.item")
|
|
|
53
52
|
local Item = ____item.Item
|
|
54
53
|
local ____destructable = require("core.types.destructable")
|
|
55
54
|
local Destructable = ____destructable.Destructable
|
|
55
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
56
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
57
|
+
local ____ability = require("engine.behaviour.ability")
|
|
58
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
59
|
+
local ____records = require("utility.records")
|
|
60
|
+
local sortedKeysUnnested = ____records.sortedKeysUnnested
|
|
56
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
57
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
58
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -101,6 +106,7 @@ local buffParametersKeys = {
|
|
|
101
106
|
armorIncreaseFactor = true,
|
|
102
107
|
attackSpeedIncreaseFactor = true,
|
|
103
108
|
movementSpeedIncreaseFactor = true,
|
|
109
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
104
110
|
evasionProbability = true,
|
|
105
111
|
missProbability = true,
|
|
106
112
|
damageFactor = true,
|
|
@@ -109,6 +115,7 @@ local buffParametersKeys = {
|
|
|
109
115
|
durationIncreaseOnAutoAttack = true,
|
|
110
116
|
maximumDuration = true,
|
|
111
117
|
maximumRemainingDuration = true,
|
|
118
|
+
turnsIntoGhost = true,
|
|
112
119
|
stuns = true,
|
|
113
120
|
ignoresStunImmunity = true,
|
|
114
121
|
providesStunImmunity = true,
|
|
@@ -123,7 +130,8 @@ local buffParametersKeys = {
|
|
|
123
130
|
damageOnExpiration = true,
|
|
124
131
|
healingOnExpiration = true,
|
|
125
132
|
killsOnExpiration = true,
|
|
126
|
-
explodesOnExpiration = true
|
|
133
|
+
explodesOnExpiration = true,
|
|
134
|
+
abilityCooldownFactor = true
|
|
127
135
|
}
|
|
128
136
|
local function resolveEnumValue(ability, level, value)
|
|
129
137
|
if value == nil or type(value) == "number" then
|
|
@@ -174,6 +182,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
174
182
|
end
|
|
175
183
|
end
|
|
176
184
|
local buffBooleanParameters = {
|
|
185
|
+
"turnsIntoGhost",
|
|
177
186
|
"stuns",
|
|
178
187
|
"ignoresStunImmunity",
|
|
179
188
|
"disablesAutoAttack",
|
|
@@ -185,6 +194,7 @@ local buffNumberParameters = {
|
|
|
185
194
|
"durationIncreaseOnAutoAttack",
|
|
186
195
|
"attackSpeedIncreaseFactor",
|
|
187
196
|
"movementSpeedIncreaseFactor",
|
|
197
|
+
"manaRegenerationRateIncreaseFactor",
|
|
188
198
|
"evasionProbability",
|
|
189
199
|
"armorIncrease",
|
|
190
200
|
"damageFactor",
|
|
@@ -199,7 +209,8 @@ local buffNumberParameters = {
|
|
|
199
209
|
"healingPerInterval",
|
|
200
210
|
"healingOverDuration",
|
|
201
211
|
"damageOnExpiration",
|
|
202
|
-
"healingOnExpiration"
|
|
212
|
+
"healingOnExpiration",
|
|
213
|
+
"abilityCooldownFactor"
|
|
203
214
|
}
|
|
204
215
|
local unsuccessfulApplicationMarker = {}
|
|
205
216
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -302,7 +313,8 @@ buffHealingIntervalTimerCallback = function(buff)
|
|
|
302
313
|
source:healTarget(buff[101], healingPerInterval)
|
|
303
314
|
end
|
|
304
315
|
end
|
|
305
|
-
local
|
|
316
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
317
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
306
318
|
____exports.Buff = __TS__Class()
|
|
307
319
|
local Buff = ____exports.Buff
|
|
308
320
|
Buff.name = "Buff"
|
|
@@ -317,33 +329,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
317
329
|
local polarity
|
|
318
330
|
local resistanceType
|
|
319
331
|
local ability
|
|
332
|
+
local abilityBehavior
|
|
320
333
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
321
334
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
322
335
|
polarity = resistanceTypeOrPolarity
|
|
323
336
|
resistanceType = abilityOrParametersOrResistanceType
|
|
324
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
337
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
338
|
+
abilityBehavior = parametersOrAbility
|
|
339
|
+
ability = abilityBehavior.ability
|
|
340
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
325
341
|
ability = parametersOrAbility
|
|
326
|
-
|
|
327
|
-
ability = nil
|
|
342
|
+
elseif parametersOrAbility ~= nil then
|
|
328
343
|
parameters = parametersOrAbility
|
|
329
344
|
end
|
|
330
345
|
else
|
|
331
346
|
typeId = typeIdOrTypeIds
|
|
332
347
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
333
348
|
resistanceType = resistanceTypeOrPolarity
|
|
334
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
349
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
350
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
351
|
+
ability = abilityBehavior.ability
|
|
352
|
+
parameters = parametersOrAbility
|
|
353
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
335
354
|
ability = abilityOrParametersOrResistanceType
|
|
336
355
|
parameters = parametersOrAbility
|
|
337
|
-
|
|
338
|
-
ability = nil
|
|
356
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
339
357
|
parameters = abilityOrParametersOrResistanceType
|
|
358
|
+
else
|
|
359
|
+
parameters = parametersOrAbility
|
|
340
360
|
end
|
|
341
361
|
end
|
|
362
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
342
363
|
self.typeId = typeId
|
|
343
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
344
|
-
parameters = ability
|
|
345
|
-
ability = nil
|
|
346
|
-
end
|
|
347
364
|
local defaultParameters = self.constructor.defaultParameters
|
|
348
365
|
local level = parameters and parameters.level or defaultParameters.level
|
|
349
366
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -371,7 +388,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
371
388
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
372
389
|
if missProbability ~= nil then
|
|
373
390
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
374
|
-
self[
|
|
391
|
+
self[142] = missProbability
|
|
375
392
|
end
|
|
376
393
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
377
394
|
if buffByTypeId == nil then
|
|
@@ -454,24 +471,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
454
471
|
abilityTypeIds = {}
|
|
455
472
|
self._abilityTypeIds = abilityTypeIds
|
|
456
473
|
end
|
|
457
|
-
for
|
|
474
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
475
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
458
476
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
459
477
|
if addedAbility ~= nil then
|
|
460
478
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
461
479
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
471
|
-
)
|
|
472
|
-
end
|
|
480
|
+
if abilityParameters.isButtonVisible == false then
|
|
481
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
482
|
+
end
|
|
483
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
484
|
+
field[1]:setValue(
|
|
485
|
+
addedAbility,
|
|
486
|
+
resolveNumberValue(ability, level, field[2])
|
|
487
|
+
)
|
|
473
488
|
end
|
|
474
|
-
abilityTypeIds[
|
|
489
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
475
490
|
end
|
|
476
491
|
end
|
|
477
492
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -483,18 +498,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
483
498
|
self._behaviors = behaviors
|
|
484
499
|
end
|
|
485
500
|
end
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
if
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
501
|
+
if parameters ~= nil then
|
|
502
|
+
local additionalParameters = {}
|
|
503
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
504
|
+
if not buffParametersKeys[key] then
|
|
505
|
+
if ability then
|
|
506
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
507
|
+
else
|
|
508
|
+
additionalParameters[key] = parameters[key]
|
|
509
|
+
end
|
|
493
510
|
end
|
|
494
511
|
end
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
512
|
+
if (next(additionalParameters)) ~= nil then
|
|
513
|
+
self.parameters = additionalParameters
|
|
514
|
+
end
|
|
498
515
|
end
|
|
499
516
|
end
|
|
500
517
|
if duration ~= nil and duration > 0 then
|
|
@@ -504,66 +521,73 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
504
521
|
end
|
|
505
522
|
self:onCreate()
|
|
506
523
|
self[100] = 1
|
|
524
|
+
Event.invoke(buffCreatedEvent, self)
|
|
507
525
|
end
|
|
508
|
-
function Buff.prototype.
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
526
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
527
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
528
|
+
local abilityCooldownModifier = self[144]
|
|
529
|
+
if abilityCooldownModifier then
|
|
530
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
531
|
+
end
|
|
532
|
+
end
|
|
512
533
|
end
|
|
513
|
-
function Buff.prototype.
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
534
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
535
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
536
|
+
local abilityCooldownModifier = self[144]
|
|
537
|
+
if abilityCooldownModifier then
|
|
538
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
539
|
+
end
|
|
518
540
|
end
|
|
519
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
520
541
|
end
|
|
521
542
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
522
543
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
523
544
|
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
524
545
|
else
|
|
525
546
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
526
|
-
local
|
|
527
|
-
local
|
|
528
|
-
local
|
|
547
|
+
local ____Effect_40 = Effect
|
|
548
|
+
local ____Effect_flash_41 = Effect.flash
|
|
549
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
529
550
|
self[105],
|
|
530
551
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
531
552
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
532
553
|
)
|
|
533
|
-
local
|
|
554
|
+
local ____isWidgetProvided_38
|
|
534
555
|
if isWidgetProvided then
|
|
535
|
-
|
|
556
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
536
557
|
else
|
|
537
|
-
|
|
558
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
538
559
|
end
|
|
539
|
-
__TS__SparseArrayPush(
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
__TS__SparseArraySpread(
|
|
560
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
561
|
+
____Effect_flash_41(
|
|
562
|
+
____Effect_40,
|
|
563
|
+
__TS__SparseArraySpread(____array_39)
|
|
543
564
|
)
|
|
544
565
|
end
|
|
545
566
|
end
|
|
546
567
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
547
568
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
548
|
-
local
|
|
549
|
-
local
|
|
550
|
-
local
|
|
569
|
+
local ____Effect_44 = Effect
|
|
570
|
+
local ____Effect_flash_45 = Effect.flash
|
|
571
|
+
local ____array_43 = __TS__SparseArrayNew(
|
|
551
572
|
self[106],
|
|
552
573
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
553
574
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
554
575
|
)
|
|
555
|
-
local
|
|
576
|
+
local ____isWidgetProvided_42
|
|
556
577
|
if isWidgetProvided then
|
|
557
|
-
|
|
578
|
+
____isWidgetProvided_42 = duration
|
|
558
579
|
else
|
|
559
|
-
|
|
580
|
+
____isWidgetProvided_42 = widgetOrDuration
|
|
560
581
|
end
|
|
561
|
-
__TS__SparseArrayPush(
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
__TS__SparseArraySpread(
|
|
582
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
583
|
+
____Effect_flash_45(
|
|
584
|
+
____Effect_44,
|
|
585
|
+
__TS__SparseArraySpread(____array_43)
|
|
565
586
|
)
|
|
566
587
|
end
|
|
588
|
+
function Buff.prototype.expire(self)
|
|
589
|
+
expireBuff(self)
|
|
590
|
+
end
|
|
567
591
|
function Buff.prototype.onCreate(self)
|
|
568
592
|
end
|
|
569
593
|
function Buff.prototype.onDestroy(self)
|
|
@@ -592,26 +616,33 @@ function Buff.prototype.onDestroy(self)
|
|
|
592
616
|
behavior:destroy()
|
|
593
617
|
end
|
|
594
618
|
end
|
|
595
|
-
|
|
619
|
+
local previousAbilityCooldownModifier = self[144]
|
|
620
|
+
if previousAbilityCooldownModifier then
|
|
621
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
622
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
623
|
+
end
|
|
624
|
+
end
|
|
625
|
+
if self[139] then
|
|
626
|
+
unit:decrementInvulnerabilityCounter()
|
|
627
|
+
end
|
|
628
|
+
if self[138] then
|
|
596
629
|
unit:decrementDisableAutoAttackCounter()
|
|
597
630
|
end
|
|
598
|
-
if self[
|
|
599
|
-
if self[
|
|
600
|
-
unit:
|
|
631
|
+
if self[136] then
|
|
632
|
+
if self[137] then
|
|
633
|
+
unit:decrementForceStunCounter()
|
|
601
634
|
end
|
|
602
635
|
unit:decrementStunCounter()
|
|
603
636
|
end
|
|
637
|
+
if self[135] then
|
|
638
|
+
unit:decrementGhostCounter()
|
|
639
|
+
end
|
|
604
640
|
if self._abilityTypeIds ~= nil then
|
|
605
|
-
for abilityTypeId in
|
|
641
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
606
642
|
unit:removeAbility(abilityTypeId)
|
|
607
643
|
end
|
|
608
644
|
end
|
|
609
|
-
|
|
610
|
-
for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
|
|
611
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
612
|
-
end
|
|
613
|
-
end
|
|
614
|
-
Event.invoke(buffDestroyEvent, self)
|
|
645
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
615
646
|
self[100] = 3
|
|
616
647
|
return UnitBehavior.prototype.onDestroy(self)
|
|
617
648
|
end
|
|
@@ -640,8 +671,8 @@ function Buff.apply(self, ...)
|
|
|
640
671
|
end
|
|
641
672
|
end
|
|
642
673
|
function Buff.getByTypeId(self, unit, typeId)
|
|
643
|
-
local
|
|
644
|
-
local buff =
|
|
674
|
+
local ____opt_46 = buffByTypeIdByUnit[unit]
|
|
675
|
+
local buff = ____opt_46 and ____opt_46[typeId]
|
|
645
676
|
if __TS__InstanceOf(buff, self) then
|
|
646
677
|
return buff
|
|
647
678
|
end
|
|
@@ -655,9 +686,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
655
686
|
if self[121] ~= nil then
|
|
656
687
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
657
688
|
end
|
|
658
|
-
if self[
|
|
689
|
+
if self[141] then
|
|
659
690
|
unit:explode()
|
|
660
|
-
elseif self[
|
|
691
|
+
elseif self[140] then
|
|
661
692
|
unit:kill()
|
|
662
693
|
end
|
|
663
694
|
end
|
|
@@ -799,8 +830,8 @@ __TS__SetDescriptor(
|
|
|
799
830
|
return
|
|
800
831
|
end
|
|
801
832
|
self[112] = damageInterval
|
|
802
|
-
local
|
|
803
|
-
local elapsed =
|
|
833
|
+
local ____opt_48 = self._timer
|
|
834
|
+
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
804
835
|
local timer = self[114]
|
|
805
836
|
if timer == nil then
|
|
806
837
|
timer = Timer:create()
|
|
@@ -879,8 +910,8 @@ __TS__SetDescriptor(
|
|
|
879
910
|
return
|
|
880
911
|
end
|
|
881
912
|
self[117] = healingInterval
|
|
882
|
-
local
|
|
883
|
-
local elapsed =
|
|
913
|
+
local ____opt_50 = self._timer
|
|
914
|
+
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
884
915
|
local timer = self[119]
|
|
885
916
|
if timer == nil then
|
|
886
917
|
timer = Timer:create()
|
|
@@ -961,30 +992,53 @@ __TS__SetDescriptor(
|
|
|
961
992
|
},
|
|
962
993
|
true
|
|
963
994
|
)
|
|
995
|
+
__TS__SetDescriptor(
|
|
996
|
+
Buff.prototype,
|
|
997
|
+
"turnsIntoGhost",
|
|
998
|
+
{
|
|
999
|
+
get = function(self)
|
|
1000
|
+
local ____self__135_52 = self[135]
|
|
1001
|
+
if ____self__135_52 == nil then
|
|
1002
|
+
____self__135_52 = false
|
|
1003
|
+
end
|
|
1004
|
+
return ____self__135_52
|
|
1005
|
+
end,
|
|
1006
|
+
set = function(self, turnsIntoGhost)
|
|
1007
|
+
if not turnsIntoGhost and self[135] then
|
|
1008
|
+
self.object:decrementGhostCounter()
|
|
1009
|
+
self[135] = nil
|
|
1010
|
+
elseif turnsIntoGhost and not self[135] then
|
|
1011
|
+
self.object:incrementGhostCounter()
|
|
1012
|
+
self[135] = true
|
|
1013
|
+
end
|
|
1014
|
+
end
|
|
1015
|
+
},
|
|
1016
|
+
true
|
|
1017
|
+
)
|
|
964
1018
|
__TS__SetDescriptor(
|
|
965
1019
|
Buff.prototype,
|
|
966
1020
|
"stuns",
|
|
967
1021
|
{
|
|
968
1022
|
get = function(self)
|
|
969
|
-
local
|
|
970
|
-
if
|
|
971
|
-
|
|
1023
|
+
local ____self__136_53 = self[136]
|
|
1024
|
+
if ____self__136_53 == nil then
|
|
1025
|
+
____self__136_53 = false
|
|
972
1026
|
end
|
|
973
|
-
return
|
|
1027
|
+
return ____self__136_53
|
|
974
1028
|
end,
|
|
975
1029
|
set = function(self, stuns)
|
|
976
|
-
if not stuns and self[
|
|
977
|
-
if self[
|
|
978
|
-
self.object:
|
|
1030
|
+
if not stuns and self[136] then
|
|
1031
|
+
if self[137] then
|
|
1032
|
+
self.object:decrementForceStunCounter()
|
|
979
1033
|
end
|
|
980
1034
|
self.object:decrementStunCounter()
|
|
981
|
-
self[
|
|
982
|
-
elseif stuns and not self[
|
|
983
|
-
if self[
|
|
984
|
-
self.object:
|
|
1035
|
+
self[136] = nil
|
|
1036
|
+
elseif stuns and not self[136] then
|
|
1037
|
+
if self[137] then
|
|
1038
|
+
self.object:incrementForceStunCounter()
|
|
985
1039
|
end
|
|
986
1040
|
self.object:incrementStunCounter()
|
|
987
|
-
self[
|
|
1041
|
+
self[136] = true
|
|
988
1042
|
end
|
|
989
1043
|
end
|
|
990
1044
|
},
|
|
@@ -995,23 +1049,23 @@ __TS__SetDescriptor(
|
|
|
995
1049
|
"ignoresStunImmunity",
|
|
996
1050
|
{
|
|
997
1051
|
get = function(self)
|
|
998
|
-
local
|
|
999
|
-
if
|
|
1000
|
-
|
|
1052
|
+
local ____self__137_54 = self[137]
|
|
1053
|
+
if ____self__137_54 == nil then
|
|
1054
|
+
____self__137_54 = false
|
|
1001
1055
|
end
|
|
1002
|
-
return
|
|
1056
|
+
return ____self__137_54
|
|
1003
1057
|
end,
|
|
1004
1058
|
set = function(self, ignoresStunImmunity)
|
|
1005
|
-
if not ignoresStunImmunity and self[
|
|
1006
|
-
if self[
|
|
1007
|
-
self.object:
|
|
1059
|
+
if not ignoresStunImmunity and self[137] then
|
|
1060
|
+
if self[136] then
|
|
1061
|
+
self.object:decrementForceStunCounter()
|
|
1008
1062
|
end
|
|
1009
|
-
self[
|
|
1010
|
-
elseif ignoresStunImmunity and not self[
|
|
1011
|
-
if self[
|
|
1012
|
-
self.object:
|
|
1063
|
+
self[137] = nil
|
|
1064
|
+
elseif ignoresStunImmunity and not self[137] then
|
|
1065
|
+
if self[136] then
|
|
1066
|
+
self.object:incrementForceStunCounter()
|
|
1013
1067
|
end
|
|
1014
|
-
self[
|
|
1068
|
+
self[137] = true
|
|
1015
1069
|
end
|
|
1016
1070
|
end
|
|
1017
1071
|
},
|
|
@@ -1022,19 +1076,19 @@ __TS__SetDescriptor(
|
|
|
1022
1076
|
"disablesAutoAttack",
|
|
1023
1077
|
{
|
|
1024
1078
|
get = function(self)
|
|
1025
|
-
local
|
|
1026
|
-
if
|
|
1027
|
-
|
|
1079
|
+
local ____self__138_55 = self[138]
|
|
1080
|
+
if ____self__138_55 == nil then
|
|
1081
|
+
____self__138_55 = false
|
|
1028
1082
|
end
|
|
1029
|
-
return
|
|
1083
|
+
return ____self__138_55
|
|
1030
1084
|
end,
|
|
1031
1085
|
set = function(self, disablesAutoAttack)
|
|
1032
|
-
if not disablesAutoAttack and self[
|
|
1086
|
+
if not disablesAutoAttack and self[138] then
|
|
1033
1087
|
self.object:decrementDisableAutoAttackCounter()
|
|
1034
|
-
self[
|
|
1035
|
-
elseif disablesAutoAttack and not self[
|
|
1088
|
+
self[138] = nil
|
|
1089
|
+
elseif disablesAutoAttack and not self[138] then
|
|
1036
1090
|
self.object:incrementDisableAutoAttackCounter()
|
|
1037
|
-
self[
|
|
1091
|
+
self[138] = true
|
|
1038
1092
|
end
|
|
1039
1093
|
end
|
|
1040
1094
|
},
|
|
@@ -1045,19 +1099,19 @@ __TS__SetDescriptor(
|
|
|
1045
1099
|
"providesInvulnerability",
|
|
1046
1100
|
{
|
|
1047
1101
|
get = function(self)
|
|
1048
|
-
local
|
|
1049
|
-
if
|
|
1050
|
-
|
|
1102
|
+
local ____self__139_56 = self[139]
|
|
1103
|
+
if ____self__139_56 == nil then
|
|
1104
|
+
____self__139_56 = false
|
|
1051
1105
|
end
|
|
1052
|
-
return
|
|
1106
|
+
return ____self__139_56
|
|
1053
1107
|
end,
|
|
1054
1108
|
set = function(self, providesInvulnerability)
|
|
1055
|
-
if not providesInvulnerability and self[
|
|
1109
|
+
if not providesInvulnerability and self[139] then
|
|
1056
1110
|
self.object:decrementInvulnerabilityCounter()
|
|
1057
|
-
self[
|
|
1058
|
-
elseif providesInvulnerability and not self[
|
|
1111
|
+
self[139] = nil
|
|
1112
|
+
elseif providesInvulnerability and not self[139] then
|
|
1059
1113
|
self.object:incrementInvulnerabilityCounter()
|
|
1060
|
-
self[
|
|
1114
|
+
self[139] = true
|
|
1061
1115
|
end
|
|
1062
1116
|
end
|
|
1063
1117
|
},
|
|
@@ -1068,17 +1122,17 @@ __TS__SetDescriptor(
|
|
|
1068
1122
|
"killsOnExpiration",
|
|
1069
1123
|
{
|
|
1070
1124
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1125
|
+
local ____self__140_57 = self[140]
|
|
1126
|
+
if ____self__140_57 == nil then
|
|
1127
|
+
____self__140_57 = false
|
|
1074
1128
|
end
|
|
1075
|
-
return
|
|
1129
|
+
return ____self__140_57
|
|
1076
1130
|
end,
|
|
1077
1131
|
set = function(self, killsOnExpiration)
|
|
1078
|
-
if not killsOnExpiration and self[
|
|
1079
|
-
self[
|
|
1080
|
-
elseif killsOnExpiration and not self[
|
|
1081
|
-
self[
|
|
1132
|
+
if not killsOnExpiration and self[140] then
|
|
1133
|
+
self[140] = nil
|
|
1134
|
+
elseif killsOnExpiration and not self[140] then
|
|
1135
|
+
self[140] = true
|
|
1082
1136
|
end
|
|
1083
1137
|
end
|
|
1084
1138
|
},
|
|
@@ -1089,17 +1143,17 @@ __TS__SetDescriptor(
|
|
|
1089
1143
|
"explodesOnExpiration",
|
|
1090
1144
|
{
|
|
1091
1145
|
get = function(self)
|
|
1092
|
-
local
|
|
1093
|
-
if
|
|
1094
|
-
|
|
1146
|
+
local ____self__141_58 = self[141]
|
|
1147
|
+
if ____self__141_58 == nil then
|
|
1148
|
+
____self__141_58 = false
|
|
1095
1149
|
end
|
|
1096
|
-
return
|
|
1150
|
+
return ____self__141_58
|
|
1097
1151
|
end,
|
|
1098
1152
|
set = function(self, killsOnExpiration)
|
|
1099
|
-
if not killsOnExpiration and self[
|
|
1100
|
-
self[
|
|
1101
|
-
elseif killsOnExpiration and not self[
|
|
1102
|
-
self[
|
|
1153
|
+
if not killsOnExpiration and self[141] then
|
|
1154
|
+
self[141] = nil
|
|
1155
|
+
elseif killsOnExpiration and not self[141] then
|
|
1156
|
+
self[141] = true
|
|
1103
1157
|
end
|
|
1104
1158
|
end
|
|
1105
1159
|
},
|
|
@@ -1208,12 +1262,39 @@ __TS__SetDescriptor(
|
|
|
1208
1262
|
},
|
|
1209
1263
|
true
|
|
1210
1264
|
)
|
|
1265
|
+
__TS__SetDescriptor(
|
|
1266
|
+
Buff.prototype,
|
|
1267
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1268
|
+
{
|
|
1269
|
+
get = function(self)
|
|
1270
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1271
|
+
end,
|
|
1272
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1273
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1274
|
+
end
|
|
1275
|
+
},
|
|
1276
|
+
true
|
|
1277
|
+
)
|
|
1211
1278
|
__TS__SetDescriptor(
|
|
1212
1279
|
Buff.prototype,
|
|
1213
1280
|
"duration",
|
|
1214
|
-
{
|
|
1215
|
-
|
|
1216
|
-
|
|
1281
|
+
{
|
|
1282
|
+
get = function(self)
|
|
1283
|
+
return self[103]
|
|
1284
|
+
end,
|
|
1285
|
+
set = function(self, duration)
|
|
1286
|
+
if duration <= 0 then
|
|
1287
|
+
local timer = self._timer
|
|
1288
|
+
if timer ~= nil then
|
|
1289
|
+
timer:destroy()
|
|
1290
|
+
self._timer = nil
|
|
1291
|
+
end
|
|
1292
|
+
self[103] = 0
|
|
1293
|
+
else
|
|
1294
|
+
self.remainingDuration = self.remainingDuration + (duration - self[103])
|
|
1295
|
+
end
|
|
1296
|
+
end
|
|
1297
|
+
},
|
|
1217
1298
|
true
|
|
1218
1299
|
)
|
|
1219
1300
|
__TS__SetDescriptor(
|
|
@@ -1221,13 +1302,13 @@ __TS__SetDescriptor(
|
|
|
1221
1302
|
"remainingDuration",
|
|
1222
1303
|
{
|
|
1223
1304
|
get = function(self)
|
|
1224
|
-
local
|
|
1225
|
-
return
|
|
1305
|
+
local ____opt_59 = self._timer
|
|
1306
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1226
1307
|
end,
|
|
1227
1308
|
set = function(self, remainingDuration)
|
|
1228
|
-
local
|
|
1229
|
-
local
|
|
1230
|
-
local remainingDurationDelta =
|
|
1309
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1310
|
+
local ____opt_61 = self._timer
|
|
1311
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1231
1312
|
if remainingDurationDelta ~= 0 then
|
|
1232
1313
|
self[103] = self[103] + remainingDurationDelta
|
|
1233
1314
|
if remainingDuration <= 0 then
|
|
@@ -1242,7 +1323,7 @@ __TS__SetDescriptor(
|
|
|
1242
1323
|
remainingDuration,
|
|
1243
1324
|
self._spellStealPriority,
|
|
1244
1325
|
self._learnLevelMinimum,
|
|
1245
|
-
self[
|
|
1326
|
+
self[142]
|
|
1246
1327
|
) then
|
|
1247
1328
|
local timer = self._timer
|
|
1248
1329
|
if timer == nil then
|
|
@@ -1257,7 +1338,34 @@ __TS__SetDescriptor(
|
|
|
1257
1338
|
},
|
|
1258
1339
|
true
|
|
1259
1340
|
)
|
|
1260
|
-
|
|
1341
|
+
__TS__SetDescriptor(
|
|
1342
|
+
Buff.prototype,
|
|
1343
|
+
"abilityCooldownFactor",
|
|
1344
|
+
{
|
|
1345
|
+
get = function(self)
|
|
1346
|
+
return self[143] or 1
|
|
1347
|
+
end,
|
|
1348
|
+
set = function(self, abilityCooldownFactor)
|
|
1349
|
+
local previousAbilityCooldownModifier = self[144]
|
|
1350
|
+
if previousAbilityCooldownModifier then
|
|
1351
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1352
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1353
|
+
end
|
|
1354
|
+
end
|
|
1355
|
+
local function modifier(ability, level, cooldown)
|
|
1356
|
+
return cooldown * abilityCooldownFactor
|
|
1357
|
+
end
|
|
1358
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1359
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1360
|
+
end
|
|
1361
|
+
self[144] = modifier
|
|
1362
|
+
self[143] = abilityCooldownFactor
|
|
1363
|
+
end
|
|
1364
|
+
},
|
|
1365
|
+
true
|
|
1366
|
+
)
|
|
1367
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1368
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1261
1369
|
(function(self)
|
|
1262
1370
|
local function destroyBuffIfNeeded(buff)
|
|
1263
1371
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1311,5 +1419,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1311
1419
|
____exports.checkBuffs(target)
|
|
1312
1420
|
end
|
|
1313
1421
|
)
|
|
1422
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1423
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1424
|
+
end)
|
|
1425
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1426
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1427
|
+
end)
|
|
1314
1428
|
end)(Buff)
|
|
1315
1429
|
return ____exports
|