warscript 0.0.1-dev.aefeacb → 0.0.1-dev.b23de5c
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 +85 -44
- 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/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 +15 -6
- package/engine/behaviour/ability.lua +56 -21
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +58 -18
- package/engine/buff.lua +347 -150
- 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/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 +13 -11
- package/engine/object-data/entry/ability-type.lua +119 -17
- 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,
|
|
@@ -119,11 +126,15 @@ local buffParametersKeys = {
|
|
|
119
126
|
maximumAutoAttackCount = true,
|
|
120
127
|
maximumDamageDealtEventCount = true,
|
|
121
128
|
maximumDamageReceivedEventCount = true,
|
|
129
|
+
absorbedDamageFactor = true,
|
|
130
|
+
maximumDamageAbsorbed = true,
|
|
131
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
122
132
|
uniqueGroup = true,
|
|
123
133
|
damageOnExpiration = true,
|
|
124
134
|
healingOnExpiration = true,
|
|
125
135
|
killsOnExpiration = true,
|
|
126
|
-
explodesOnExpiration = true
|
|
136
|
+
explodesOnExpiration = true,
|
|
137
|
+
abilityCooldownFactor = true
|
|
127
138
|
}
|
|
128
139
|
local function resolveEnumValue(ability, level, value)
|
|
129
140
|
if value == nil or type(value) == "number" then
|
|
@@ -174,6 +185,8 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
174
185
|
end
|
|
175
186
|
end
|
|
176
187
|
local buffBooleanParameters = {
|
|
188
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
189
|
+
"turnsIntoGhost",
|
|
177
190
|
"stuns",
|
|
178
191
|
"ignoresStunImmunity",
|
|
179
192
|
"disablesAutoAttack",
|
|
@@ -185,6 +198,7 @@ local buffNumberParameters = {
|
|
|
185
198
|
"durationIncreaseOnAutoAttack",
|
|
186
199
|
"attackSpeedIncreaseFactor",
|
|
187
200
|
"movementSpeedIncreaseFactor",
|
|
201
|
+
"manaRegenerationRateIncreaseFactor",
|
|
188
202
|
"evasionProbability",
|
|
189
203
|
"armorIncrease",
|
|
190
204
|
"damageFactor",
|
|
@@ -199,7 +213,10 @@ local buffNumberParameters = {
|
|
|
199
213
|
"healingPerInterval",
|
|
200
214
|
"healingOverDuration",
|
|
201
215
|
"damageOnExpiration",
|
|
202
|
-
"healingOnExpiration"
|
|
216
|
+
"healingOnExpiration",
|
|
217
|
+
"absorbedDamageFactor",
|
|
218
|
+
"maximumDamageAbsorbed",
|
|
219
|
+
"abilityCooldownFactor"
|
|
203
220
|
}
|
|
204
221
|
local unsuccessfulApplicationMarker = {}
|
|
205
222
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -302,7 +319,8 @@ buffHealingIntervalTimerCallback = function(buff)
|
|
|
302
319
|
source:healTarget(buff[101], healingPerInterval)
|
|
303
320
|
end
|
|
304
321
|
end
|
|
305
|
-
local
|
|
322
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
323
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
306
324
|
____exports.Buff = __TS__Class()
|
|
307
325
|
local Buff = ____exports.Buff
|
|
308
326
|
Buff.name = "Buff"
|
|
@@ -317,33 +335,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
317
335
|
local polarity
|
|
318
336
|
local resistanceType
|
|
319
337
|
local ability
|
|
338
|
+
local abilityBehavior
|
|
320
339
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
321
340
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
322
341
|
polarity = resistanceTypeOrPolarity
|
|
323
342
|
resistanceType = abilityOrParametersOrResistanceType
|
|
324
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
343
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
344
|
+
abilityBehavior = parametersOrAbility
|
|
345
|
+
ability = abilityBehavior.ability
|
|
346
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
325
347
|
ability = parametersOrAbility
|
|
326
|
-
|
|
327
|
-
ability = nil
|
|
348
|
+
elseif parametersOrAbility ~= nil then
|
|
328
349
|
parameters = parametersOrAbility
|
|
329
350
|
end
|
|
330
351
|
else
|
|
331
352
|
typeId = typeIdOrTypeIds
|
|
332
353
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
333
354
|
resistanceType = resistanceTypeOrPolarity
|
|
334
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
355
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
356
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
357
|
+
ability = abilityBehavior.ability
|
|
358
|
+
parameters = parametersOrAbility
|
|
359
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
335
360
|
ability = abilityOrParametersOrResistanceType
|
|
336
361
|
parameters = parametersOrAbility
|
|
337
|
-
|
|
338
|
-
ability = nil
|
|
362
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
339
363
|
parameters = abilityOrParametersOrResistanceType
|
|
364
|
+
else
|
|
365
|
+
parameters = parametersOrAbility
|
|
340
366
|
end
|
|
341
367
|
end
|
|
368
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
342
369
|
self.typeId = typeId
|
|
343
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
344
|
-
parameters = ability
|
|
345
|
-
ability = nil
|
|
346
|
-
end
|
|
347
370
|
local defaultParameters = self.constructor.defaultParameters
|
|
348
371
|
local level = parameters and parameters.level or defaultParameters.level
|
|
349
372
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -371,7 +394,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
371
394
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
372
395
|
if missProbability ~= nil then
|
|
373
396
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
374
|
-
self[
|
|
397
|
+
self[146] = missProbability
|
|
375
398
|
end
|
|
376
399
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
377
400
|
if buffByTypeId == nil then
|
|
@@ -454,24 +477,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
454
477
|
abilityTypeIds = {}
|
|
455
478
|
self._abilityTypeIds = abilityTypeIds
|
|
456
479
|
end
|
|
457
|
-
for
|
|
480
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
481
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
458
482
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
459
483
|
if addedAbility ~= nil then
|
|
460
484
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
461
485
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
465
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
466
|
-
end
|
|
467
|
-
elseif abilityParameterKey ~= "level" then
|
|
468
|
-
abilityParameterKey:setValue(
|
|
469
|
-
addedAbility,
|
|
470
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
471
|
-
)
|
|
472
|
-
end
|
|
486
|
+
if abilityParameters.isButtonVisible == false then
|
|
487
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
473
488
|
end
|
|
474
|
-
|
|
489
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
490
|
+
field[1]:setValue(
|
|
491
|
+
addedAbility,
|
|
492
|
+
resolveNumberValue(ability, level, field[2])
|
|
493
|
+
)
|
|
494
|
+
end
|
|
495
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
475
496
|
end
|
|
476
497
|
end
|
|
477
498
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -483,18 +504,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
483
504
|
self._behaviors = behaviors
|
|
484
505
|
end
|
|
485
506
|
end
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
if
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
507
|
+
if parameters ~= nil then
|
|
508
|
+
local additionalParameters = {}
|
|
509
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
510
|
+
if not buffParametersKeys[key] then
|
|
511
|
+
if ability then
|
|
512
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
513
|
+
else
|
|
514
|
+
additionalParameters[key] = parameters[key]
|
|
515
|
+
end
|
|
493
516
|
end
|
|
494
517
|
end
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
518
|
+
if (next(additionalParameters)) ~= nil then
|
|
519
|
+
self.parameters = additionalParameters
|
|
520
|
+
end
|
|
498
521
|
end
|
|
499
522
|
end
|
|
500
523
|
if duration ~= nil and duration > 0 then
|
|
@@ -504,66 +527,73 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
504
527
|
end
|
|
505
528
|
self:onCreate()
|
|
506
529
|
self[100] = 1
|
|
530
|
+
Event.invoke(buffCreatedEvent, self)
|
|
507
531
|
end
|
|
508
|
-
function Buff.prototype.
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
532
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
533
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
534
|
+
local abilityCooldownModifier = self[148]
|
|
535
|
+
if abilityCooldownModifier then
|
|
536
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
537
|
+
end
|
|
538
|
+
end
|
|
512
539
|
end
|
|
513
|
-
function Buff.prototype.
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
540
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
541
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
542
|
+
local abilityCooldownModifier = self[148]
|
|
543
|
+
if abilityCooldownModifier then
|
|
544
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
545
|
+
end
|
|
518
546
|
end
|
|
519
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
520
547
|
end
|
|
521
548
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
522
549
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
523
550
|
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
524
551
|
else
|
|
525
552
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
526
|
-
local
|
|
527
|
-
local
|
|
528
|
-
local
|
|
553
|
+
local ____Effect_40 = Effect
|
|
554
|
+
local ____Effect_flash_41 = Effect.flash
|
|
555
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
529
556
|
self[105],
|
|
530
557
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
531
558
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
532
559
|
)
|
|
533
|
-
local
|
|
560
|
+
local ____isWidgetProvided_38
|
|
534
561
|
if isWidgetProvided then
|
|
535
|
-
|
|
562
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
536
563
|
else
|
|
537
|
-
|
|
564
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
538
565
|
end
|
|
539
|
-
__TS__SparseArrayPush(
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
__TS__SparseArraySpread(
|
|
566
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
567
|
+
____Effect_flash_41(
|
|
568
|
+
____Effect_40,
|
|
569
|
+
__TS__SparseArraySpread(____array_39)
|
|
543
570
|
)
|
|
544
571
|
end
|
|
545
572
|
end
|
|
546
573
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
547
574
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
548
|
-
local
|
|
549
|
-
local
|
|
550
|
-
local
|
|
575
|
+
local ____Effect_44 = Effect
|
|
576
|
+
local ____Effect_flash_45 = Effect.flash
|
|
577
|
+
local ____array_43 = __TS__SparseArrayNew(
|
|
551
578
|
self[106],
|
|
552
579
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
553
580
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
554
581
|
)
|
|
555
|
-
local
|
|
582
|
+
local ____isWidgetProvided_42
|
|
556
583
|
if isWidgetProvided then
|
|
557
|
-
|
|
584
|
+
____isWidgetProvided_42 = duration
|
|
558
585
|
else
|
|
559
|
-
|
|
586
|
+
____isWidgetProvided_42 = widgetOrDuration
|
|
560
587
|
end
|
|
561
|
-
__TS__SparseArrayPush(
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
__TS__SparseArraySpread(
|
|
588
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
589
|
+
____Effect_flash_45(
|
|
590
|
+
____Effect_44,
|
|
591
|
+
__TS__SparseArraySpread(____array_43)
|
|
565
592
|
)
|
|
566
593
|
end
|
|
594
|
+
function Buff.prototype.expire(self)
|
|
595
|
+
expireBuff(self)
|
|
596
|
+
end
|
|
567
597
|
function Buff.prototype.onCreate(self)
|
|
568
598
|
end
|
|
569
599
|
function Buff.prototype.onDestroy(self)
|
|
@@ -592,26 +622,33 @@ function Buff.prototype.onDestroy(self)
|
|
|
592
622
|
behavior:destroy()
|
|
593
623
|
end
|
|
594
624
|
end
|
|
595
|
-
|
|
625
|
+
local previousAbilityCooldownModifier = self[148]
|
|
626
|
+
if previousAbilityCooldownModifier then
|
|
627
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
628
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
629
|
+
end
|
|
630
|
+
end
|
|
631
|
+
if self[143] then
|
|
632
|
+
unit:decrementInvulnerabilityCounter()
|
|
633
|
+
end
|
|
634
|
+
if self[142] then
|
|
596
635
|
unit:decrementDisableAutoAttackCounter()
|
|
597
636
|
end
|
|
598
|
-
if self[
|
|
599
|
-
if self[
|
|
600
|
-
unit:
|
|
637
|
+
if self[140] then
|
|
638
|
+
if self[141] then
|
|
639
|
+
unit:decrementForceStunCounter()
|
|
601
640
|
end
|
|
602
641
|
unit:decrementStunCounter()
|
|
603
642
|
end
|
|
643
|
+
if self[139] then
|
|
644
|
+
unit:decrementGhostCounter()
|
|
645
|
+
end
|
|
604
646
|
if self._abilityTypeIds ~= nil then
|
|
605
|
-
for abilityTypeId in
|
|
647
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
606
648
|
unit:removeAbility(abilityTypeId)
|
|
607
649
|
end
|
|
608
650
|
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)
|
|
651
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
615
652
|
self[100] = 3
|
|
616
653
|
return UnitBehavior.prototype.onDestroy(self)
|
|
617
654
|
end
|
|
@@ -640,8 +677,8 @@ function Buff.apply(self, ...)
|
|
|
640
677
|
end
|
|
641
678
|
end
|
|
642
679
|
function Buff.getByTypeId(self, unit, typeId)
|
|
643
|
-
local
|
|
644
|
-
local buff =
|
|
680
|
+
local ____opt_46 = buffByTypeIdByUnit[unit]
|
|
681
|
+
local buff = ____opt_46 and ____opt_46[typeId]
|
|
645
682
|
if __TS__InstanceOf(buff, self) then
|
|
646
683
|
return buff
|
|
647
684
|
end
|
|
@@ -655,9 +692,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
655
692
|
if self[121] ~= nil then
|
|
656
693
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
657
694
|
end
|
|
658
|
-
if self[
|
|
695
|
+
if self[145] then
|
|
659
696
|
unit:explode()
|
|
660
|
-
elseif self[
|
|
697
|
+
elseif self[144] then
|
|
661
698
|
unit:kill()
|
|
662
699
|
end
|
|
663
700
|
end
|
|
@@ -712,6 +749,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
712
749
|
end
|
|
713
750
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
714
751
|
if event.originalAmount ~= 0 then
|
|
752
|
+
local absorbedDamage = min(event.amount * (self[135] or 1), (self[136] or 0) - (self[137] or 0))
|
|
753
|
+
if absorbedDamage > 0 then
|
|
754
|
+
event.amount = event.amount - absorbedDamage
|
|
755
|
+
self[137] = (self[137] or 0) + absorbedDamage
|
|
756
|
+
local ____self__138_48 = self[138]
|
|
757
|
+
if ____self__138_48 == nil then
|
|
758
|
+
____self__138_48 = true
|
|
759
|
+
end
|
|
760
|
+
if ____self__138_48 and self[137] >= (self[136] or 0) then
|
|
761
|
+
self:destroy()
|
|
762
|
+
end
|
|
763
|
+
end
|
|
715
764
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
716
765
|
self[133] = damageReceivedEventCount
|
|
717
766
|
if damageReceivedEventCount == self[134] then
|
|
@@ -799,8 +848,8 @@ __TS__SetDescriptor(
|
|
|
799
848
|
return
|
|
800
849
|
end
|
|
801
850
|
self[112] = damageInterval
|
|
802
|
-
local
|
|
803
|
-
local elapsed =
|
|
851
|
+
local ____opt_49 = self._timer
|
|
852
|
+
local elapsed = ____opt_49 and ____opt_49.elapsed or 0
|
|
804
853
|
local timer = self[114]
|
|
805
854
|
if timer == nil then
|
|
806
855
|
timer = Timer:create()
|
|
@@ -879,8 +928,8 @@ __TS__SetDescriptor(
|
|
|
879
928
|
return
|
|
880
929
|
end
|
|
881
930
|
self[117] = healingInterval
|
|
882
|
-
local
|
|
883
|
-
local elapsed =
|
|
931
|
+
local ____opt_51 = self._timer
|
|
932
|
+
local elapsed = ____opt_51 and ____opt_51.elapsed or 0
|
|
884
933
|
local timer = self[119]
|
|
885
934
|
if timer == nil then
|
|
886
935
|
timer = Timer:create()
|
|
@@ -961,30 +1010,53 @@ __TS__SetDescriptor(
|
|
|
961
1010
|
},
|
|
962
1011
|
true
|
|
963
1012
|
)
|
|
1013
|
+
__TS__SetDescriptor(
|
|
1014
|
+
Buff.prototype,
|
|
1015
|
+
"turnsIntoGhost",
|
|
1016
|
+
{
|
|
1017
|
+
get = function(self)
|
|
1018
|
+
local ____self__139_53 = self[139]
|
|
1019
|
+
if ____self__139_53 == nil then
|
|
1020
|
+
____self__139_53 = false
|
|
1021
|
+
end
|
|
1022
|
+
return ____self__139_53
|
|
1023
|
+
end,
|
|
1024
|
+
set = function(self, turnsIntoGhost)
|
|
1025
|
+
if not turnsIntoGhost and self[139] then
|
|
1026
|
+
self.object:decrementGhostCounter()
|
|
1027
|
+
self[139] = nil
|
|
1028
|
+
elseif turnsIntoGhost and not self[139] then
|
|
1029
|
+
self.object:incrementGhostCounter()
|
|
1030
|
+
self[139] = true
|
|
1031
|
+
end
|
|
1032
|
+
end
|
|
1033
|
+
},
|
|
1034
|
+
true
|
|
1035
|
+
)
|
|
964
1036
|
__TS__SetDescriptor(
|
|
965
1037
|
Buff.prototype,
|
|
966
1038
|
"stuns",
|
|
967
1039
|
{
|
|
968
1040
|
get = function(self)
|
|
969
|
-
local
|
|
970
|
-
if
|
|
971
|
-
|
|
1041
|
+
local ____self__140_54 = self[140]
|
|
1042
|
+
if ____self__140_54 == nil then
|
|
1043
|
+
____self__140_54 = false
|
|
972
1044
|
end
|
|
973
|
-
return
|
|
1045
|
+
return ____self__140_54
|
|
974
1046
|
end,
|
|
975
1047
|
set = function(self, stuns)
|
|
976
|
-
if not stuns and self[
|
|
977
|
-
if self[
|
|
978
|
-
self.object:
|
|
1048
|
+
if not stuns and self[140] then
|
|
1049
|
+
if self[141] then
|
|
1050
|
+
self.object:decrementForceStunCounter()
|
|
979
1051
|
end
|
|
980
1052
|
self.object:decrementStunCounter()
|
|
981
|
-
self[
|
|
982
|
-
elseif stuns and not self[
|
|
983
|
-
if self[
|
|
984
|
-
self.object:
|
|
1053
|
+
self[140] = nil
|
|
1054
|
+
elseif stuns and not self[140] then
|
|
1055
|
+
if self[141] then
|
|
1056
|
+
self.object:incrementForceStunCounter()
|
|
985
1057
|
end
|
|
986
1058
|
self.object:incrementStunCounter()
|
|
987
|
-
self[
|
|
1059
|
+
self[140] = true
|
|
988
1060
|
end
|
|
989
1061
|
end
|
|
990
1062
|
},
|
|
@@ -995,23 +1067,23 @@ __TS__SetDescriptor(
|
|
|
995
1067
|
"ignoresStunImmunity",
|
|
996
1068
|
{
|
|
997
1069
|
get = function(self)
|
|
998
|
-
local
|
|
999
|
-
if
|
|
1000
|
-
|
|
1070
|
+
local ____self__141_55 = self[141]
|
|
1071
|
+
if ____self__141_55 == nil then
|
|
1072
|
+
____self__141_55 = false
|
|
1001
1073
|
end
|
|
1002
|
-
return
|
|
1074
|
+
return ____self__141_55
|
|
1003
1075
|
end,
|
|
1004
1076
|
set = function(self, ignoresStunImmunity)
|
|
1005
|
-
if not ignoresStunImmunity and self[
|
|
1006
|
-
if self[
|
|
1007
|
-
self.object:
|
|
1077
|
+
if not ignoresStunImmunity and self[141] then
|
|
1078
|
+
if self[140] then
|
|
1079
|
+
self.object:decrementForceStunCounter()
|
|
1008
1080
|
end
|
|
1009
|
-
self[
|
|
1010
|
-
elseif ignoresStunImmunity and not self[
|
|
1011
|
-
if self[
|
|
1012
|
-
self.object:
|
|
1081
|
+
self[141] = nil
|
|
1082
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1083
|
+
if self[140] then
|
|
1084
|
+
self.object:incrementForceStunCounter()
|
|
1013
1085
|
end
|
|
1014
|
-
self[
|
|
1086
|
+
self[141] = true
|
|
1015
1087
|
end
|
|
1016
1088
|
end
|
|
1017
1089
|
},
|
|
@@ -1022,19 +1094,19 @@ __TS__SetDescriptor(
|
|
|
1022
1094
|
"disablesAutoAttack",
|
|
1023
1095
|
{
|
|
1024
1096
|
get = function(self)
|
|
1025
|
-
local
|
|
1026
|
-
if
|
|
1027
|
-
|
|
1097
|
+
local ____self__142_56 = self[142]
|
|
1098
|
+
if ____self__142_56 == nil then
|
|
1099
|
+
____self__142_56 = false
|
|
1028
1100
|
end
|
|
1029
|
-
return
|
|
1101
|
+
return ____self__142_56
|
|
1030
1102
|
end,
|
|
1031
1103
|
set = function(self, disablesAutoAttack)
|
|
1032
|
-
if not disablesAutoAttack and self[
|
|
1104
|
+
if not disablesAutoAttack and self[142] then
|
|
1033
1105
|
self.object:decrementDisableAutoAttackCounter()
|
|
1034
|
-
self[
|
|
1035
|
-
elseif disablesAutoAttack and not self[
|
|
1106
|
+
self[142] = nil
|
|
1107
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1036
1108
|
self.object:incrementDisableAutoAttackCounter()
|
|
1037
|
-
self[
|
|
1109
|
+
self[142] = true
|
|
1038
1110
|
end
|
|
1039
1111
|
end
|
|
1040
1112
|
},
|
|
@@ -1045,19 +1117,19 @@ __TS__SetDescriptor(
|
|
|
1045
1117
|
"providesInvulnerability",
|
|
1046
1118
|
{
|
|
1047
1119
|
get = function(self)
|
|
1048
|
-
local
|
|
1049
|
-
if
|
|
1050
|
-
|
|
1120
|
+
local ____self__143_57 = self[143]
|
|
1121
|
+
if ____self__143_57 == nil then
|
|
1122
|
+
____self__143_57 = false
|
|
1051
1123
|
end
|
|
1052
|
-
return
|
|
1124
|
+
return ____self__143_57
|
|
1053
1125
|
end,
|
|
1054
1126
|
set = function(self, providesInvulnerability)
|
|
1055
|
-
if not providesInvulnerability and self[
|
|
1127
|
+
if not providesInvulnerability and self[143] then
|
|
1056
1128
|
self.object:decrementInvulnerabilityCounter()
|
|
1057
|
-
self[
|
|
1058
|
-
elseif providesInvulnerability and not self[
|
|
1129
|
+
self[143] = nil
|
|
1130
|
+
elseif providesInvulnerability and not self[143] then
|
|
1059
1131
|
self.object:incrementInvulnerabilityCounter()
|
|
1060
|
-
self[
|
|
1132
|
+
self[143] = true
|
|
1061
1133
|
end
|
|
1062
1134
|
end
|
|
1063
1135
|
},
|
|
@@ -1068,17 +1140,17 @@ __TS__SetDescriptor(
|
|
|
1068
1140
|
"killsOnExpiration",
|
|
1069
1141
|
{
|
|
1070
1142
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1143
|
+
local ____self__144_58 = self[144]
|
|
1144
|
+
if ____self__144_58 == nil then
|
|
1145
|
+
____self__144_58 = false
|
|
1074
1146
|
end
|
|
1075
|
-
return
|
|
1147
|
+
return ____self__144_58
|
|
1076
1148
|
end,
|
|
1077
1149
|
set = function(self, killsOnExpiration)
|
|
1078
|
-
if not killsOnExpiration and self[
|
|
1079
|
-
self[
|
|
1080
|
-
elseif killsOnExpiration and not self[
|
|
1081
|
-
self[
|
|
1150
|
+
if not killsOnExpiration and self[144] then
|
|
1151
|
+
self[144] = nil
|
|
1152
|
+
elseif killsOnExpiration and not self[144] then
|
|
1153
|
+
self[144] = true
|
|
1082
1154
|
end
|
|
1083
1155
|
end
|
|
1084
1156
|
},
|
|
@@ -1089,17 +1161,17 @@ __TS__SetDescriptor(
|
|
|
1089
1161
|
"explodesOnExpiration",
|
|
1090
1162
|
{
|
|
1091
1163
|
get = function(self)
|
|
1092
|
-
local
|
|
1093
|
-
if
|
|
1094
|
-
|
|
1164
|
+
local ____self__145_59 = self[145]
|
|
1165
|
+
if ____self__145_59 == nil then
|
|
1166
|
+
____self__145_59 = false
|
|
1095
1167
|
end
|
|
1096
|
-
return
|
|
1168
|
+
return ____self__145_59
|
|
1097
1169
|
end,
|
|
1098
1170
|
set = function(self, killsOnExpiration)
|
|
1099
|
-
if not killsOnExpiration and self[
|
|
1100
|
-
self[
|
|
1101
|
-
elseif killsOnExpiration and not self[
|
|
1102
|
-
self[
|
|
1171
|
+
if not killsOnExpiration and self[145] then
|
|
1172
|
+
self[145] = nil
|
|
1173
|
+
elseif killsOnExpiration and not self[145] then
|
|
1174
|
+
self[145] = true
|
|
1103
1175
|
end
|
|
1104
1176
|
end
|
|
1105
1177
|
},
|
|
@@ -1208,12 +1280,39 @@ __TS__SetDescriptor(
|
|
|
1208
1280
|
},
|
|
1209
1281
|
true
|
|
1210
1282
|
)
|
|
1283
|
+
__TS__SetDescriptor(
|
|
1284
|
+
Buff.prototype,
|
|
1285
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1286
|
+
{
|
|
1287
|
+
get = function(self)
|
|
1288
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1289
|
+
end,
|
|
1290
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1291
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1292
|
+
end
|
|
1293
|
+
},
|
|
1294
|
+
true
|
|
1295
|
+
)
|
|
1211
1296
|
__TS__SetDescriptor(
|
|
1212
1297
|
Buff.prototype,
|
|
1213
1298
|
"duration",
|
|
1214
|
-
{
|
|
1215
|
-
|
|
1216
|
-
|
|
1299
|
+
{
|
|
1300
|
+
get = function(self)
|
|
1301
|
+
return self[103]
|
|
1302
|
+
end,
|
|
1303
|
+
set = function(self, duration)
|
|
1304
|
+
if duration <= 0 then
|
|
1305
|
+
local timer = self._timer
|
|
1306
|
+
if timer ~= nil then
|
|
1307
|
+
timer:destroy()
|
|
1308
|
+
self._timer = nil
|
|
1309
|
+
end
|
|
1310
|
+
self[103] = 0
|
|
1311
|
+
else
|
|
1312
|
+
self.remainingDuration = self.remainingDuration + (duration - self[103])
|
|
1313
|
+
end
|
|
1314
|
+
end
|
|
1315
|
+
},
|
|
1217
1316
|
true
|
|
1218
1317
|
)
|
|
1219
1318
|
__TS__SetDescriptor(
|
|
@@ -1242,7 +1341,7 @@ __TS__SetDescriptor(
|
|
|
1242
1341
|
remainingDuration,
|
|
1243
1342
|
self._spellStealPriority,
|
|
1244
1343
|
self._learnLevelMinimum,
|
|
1245
|
-
self[
|
|
1344
|
+
self[146]
|
|
1246
1345
|
) then
|
|
1247
1346
|
local timer = self._timer
|
|
1248
1347
|
if timer == nil then
|
|
@@ -1257,7 +1356,99 @@ __TS__SetDescriptor(
|
|
|
1257
1356
|
},
|
|
1258
1357
|
true
|
|
1259
1358
|
)
|
|
1260
|
-
|
|
1359
|
+
__TS__SetDescriptor(
|
|
1360
|
+
Buff.prototype,
|
|
1361
|
+
"absorbedDamageFactor",
|
|
1362
|
+
{
|
|
1363
|
+
get = function(self)
|
|
1364
|
+
return self[135] or 1
|
|
1365
|
+
end,
|
|
1366
|
+
set = function(self, absorbedDamageFactor)
|
|
1367
|
+
if absorbedDamageFactor == 1 then
|
|
1368
|
+
self[135] = nil
|
|
1369
|
+
else
|
|
1370
|
+
self[135] = absorbedDamageFactor
|
|
1371
|
+
end
|
|
1372
|
+
end
|
|
1373
|
+
},
|
|
1374
|
+
true
|
|
1375
|
+
)
|
|
1376
|
+
__TS__SetDescriptor(
|
|
1377
|
+
Buff.prototype,
|
|
1378
|
+
"maximumDamageAbsorbed",
|
|
1379
|
+
{
|
|
1380
|
+
get = function(self)
|
|
1381
|
+
return self[136] or 0
|
|
1382
|
+
end,
|
|
1383
|
+
set = function(self, maximumDamageAbsorbed)
|
|
1384
|
+
if maximumDamageAbsorbed == 0 then
|
|
1385
|
+
self[136] = nil
|
|
1386
|
+
else
|
|
1387
|
+
self[136] = maximumDamageAbsorbed
|
|
1388
|
+
end
|
|
1389
|
+
end
|
|
1390
|
+
},
|
|
1391
|
+
true
|
|
1392
|
+
)
|
|
1393
|
+
__TS__SetDescriptor(
|
|
1394
|
+
Buff.prototype,
|
|
1395
|
+
"damageAbsorbed",
|
|
1396
|
+
{get = function(self)
|
|
1397
|
+
return self[137] or 0
|
|
1398
|
+
end},
|
|
1399
|
+
true
|
|
1400
|
+
)
|
|
1401
|
+
__TS__SetDescriptor(
|
|
1402
|
+
Buff.prototype,
|
|
1403
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
1404
|
+
{
|
|
1405
|
+
get = function(self)
|
|
1406
|
+
local ____self__138_65 = self[138]
|
|
1407
|
+
if ____self__138_65 == nil then
|
|
1408
|
+
____self__138_65 = true
|
|
1409
|
+
end
|
|
1410
|
+
return ____self__138_65
|
|
1411
|
+
end,
|
|
1412
|
+
set = function(self, destroysOnMaximumDamageAbsorbed)
|
|
1413
|
+
local ____destroysOnMaximumDamageAbsorbed_66
|
|
1414
|
+
if destroysOnMaximumDamageAbsorbed then
|
|
1415
|
+
____destroysOnMaximumDamageAbsorbed_66 = nil
|
|
1416
|
+
else
|
|
1417
|
+
____destroysOnMaximumDamageAbsorbed_66 = false
|
|
1418
|
+
end
|
|
1419
|
+
self[138] = ____destroysOnMaximumDamageAbsorbed_66
|
|
1420
|
+
end
|
|
1421
|
+
},
|
|
1422
|
+
true
|
|
1423
|
+
)
|
|
1424
|
+
__TS__SetDescriptor(
|
|
1425
|
+
Buff.prototype,
|
|
1426
|
+
"abilityCooldownFactor",
|
|
1427
|
+
{
|
|
1428
|
+
get = function(self)
|
|
1429
|
+
return self[147] or 1
|
|
1430
|
+
end,
|
|
1431
|
+
set = function(self, abilityCooldownFactor)
|
|
1432
|
+
local previousAbilityCooldownModifier = self[148]
|
|
1433
|
+
if previousAbilityCooldownModifier then
|
|
1434
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1435
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1436
|
+
end
|
|
1437
|
+
end
|
|
1438
|
+
local function modifier(ability, level, cooldown)
|
|
1439
|
+
return cooldown * abilityCooldownFactor
|
|
1440
|
+
end
|
|
1441
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1442
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1443
|
+
end
|
|
1444
|
+
self[148] = modifier
|
|
1445
|
+
self[147] = abilityCooldownFactor
|
|
1446
|
+
end
|
|
1447
|
+
},
|
|
1448
|
+
true
|
|
1449
|
+
)
|
|
1450
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1451
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1261
1452
|
(function(self)
|
|
1262
1453
|
local function destroyBuffIfNeeded(buff)
|
|
1263
1454
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1311,5 +1502,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1311
1502
|
____exports.checkBuffs(target)
|
|
1312
1503
|
end
|
|
1313
1504
|
)
|
|
1505
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1506
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1507
|
+
end)
|
|
1508
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1509
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1510
|
+
end)
|
|
1314
1511
|
end)(Buff)
|
|
1315
1512
|
return ____exports
|