warscript 0.0.1-dev.db137e7 → 0.0.1-dev.dc37dce
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 +1 -0
- package/attributes.lua +9 -0
- package/binarywriter.lua +0 -12
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +57 -14
- package/core/types/sound.lua +1 -1
- package/core/types/tileCell.d.ts +2 -1
- package/core/types/tileCell.lua +5 -0
- package/core/types/timer.d.ts +3 -2
- package/core/types/timer.lua +8 -2
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +10 -2
- package/engine/behavior.lua +157 -76
- package/engine/behaviour/ability/apply-buff.lua +4 -4
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability.d.ts +11 -6
- package/engine/behaviour/ability.lua +31 -1
- package/engine/behaviour/unit/stun-immunity.d.ts +7 -5
- package/engine/behaviour/unit/stun-immunity.lua +6 -5
- package/engine/behaviour/unit.d.ts +9 -3
- package/engine/behaviour/unit.lua +106 -24
- package/engine/buff.d.ts +64 -18
- package/engine/buff.lua +354 -151
- package/engine/internal/item.d.ts +12 -12
- package/engine/internal/item.lua +41 -26
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +14 -14
- package/engine/internal/unit/ability.lua +72 -45
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +6 -0
- package/engine/internal/unit/bonus.lua +33 -3
- 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/item.lua +1 -1
- package/engine/internal/unit/main-selected.lua +12 -27
- 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+bonus.lua +3 -3
- package/engine/internal/unit-missile-launch.lua +51 -20
- package/engine/internal/unit.d.ts +15 -19
- package/engine/internal/unit.lua +160 -183
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -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/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type.d.ts +2 -0
- package/engine/object-data/entry/ability-type.lua +88 -5
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- 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/unit-type.d.ts +4 -0
- package/engine/object-data/entry/unit-type.lua +76 -32
- package/engine/object-field/unit.d.ts +20 -5
- package/engine/object-field/unit.lua +61 -0
- package/engine/object-field.d.ts +9 -1
- package/engine/object-field.lua +265 -122
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +8 -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 +11 -3
- package/engine/standard/fields/unit.lua +15 -2
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.lua +3 -2
- package/engine/unit.d.ts +5 -0
- package/engine/unit.lua +5 -0
- package/lualib_bundle.lua +118 -47
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +10 -8
- package/objutil/object.lua +1 -1
- package/operation.lua +23 -17
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/utility/callback-array.d.ts +5 -1
- package/utility/callback-array.lua +16 -1
- package/utility/linked-map.d.ts +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +3 -1
- package/utility/linked-set.lua +40 -1
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/buff.lua
CHANGED
|
@@ -16,6 +16,7 @@ local internalApplyBuff = ____applicable.internalApplyBuff
|
|
|
16
16
|
local removeBuff = ____applicable.removeBuff
|
|
17
17
|
local ____ability = require("engine.internal.ability")
|
|
18
18
|
local Ability = ____ability.Ability
|
|
19
|
+
local UnitAbility = ____ability.UnitAbility
|
|
19
20
|
local ____ability = require("engine.object-field.ability")
|
|
20
21
|
local AbilityBooleanField = ____ability.AbilityBooleanField
|
|
21
22
|
local AbilityNumberField = ____ability.AbilityNumberField
|
|
@@ -41,6 +42,7 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
41
42
|
local ____unit = require("engine.behaviour.unit")
|
|
42
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
43
44
|
local ____arrays = require("utility.arrays")
|
|
45
|
+
local emptyArray = ____arrays.emptyArray
|
|
44
46
|
local forEach = ____arrays.forEach
|
|
45
47
|
local ____event = require("event")
|
|
46
48
|
local Event = ____event.Event
|
|
@@ -50,6 +52,12 @@ local ____item = require("engine.internal.item")
|
|
|
50
52
|
local Item = ____item.Item
|
|
51
53
|
local ____destructable = require("core.types.destructable")
|
|
52
54
|
local Destructable = ____destructable.Destructable
|
|
55
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
56
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
57
|
+
local ____ability = require("engine.behaviour.ability")
|
|
58
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
59
|
+
local ____records = require("utility.records")
|
|
60
|
+
local sortedKeysUnnested = ____records.sortedKeysUnnested
|
|
53
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
54
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
55
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -95,9 +103,11 @@ local buffParametersKeys = {
|
|
|
95
103
|
damageIncrease = true,
|
|
96
104
|
damageIncreaseFactor = true,
|
|
97
105
|
armorIncrease = true,
|
|
98
|
-
|
|
106
|
+
maxHealthIncrease = true,
|
|
107
|
+
maxManaIncrease = true,
|
|
99
108
|
attackSpeedIncreaseFactor = true,
|
|
100
109
|
movementSpeedIncreaseFactor = true,
|
|
110
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
101
111
|
evasionProbability = true,
|
|
102
112
|
missProbability = true,
|
|
103
113
|
damageFactor = true,
|
|
@@ -117,11 +127,15 @@ local buffParametersKeys = {
|
|
|
117
127
|
maximumAutoAttackCount = true,
|
|
118
128
|
maximumDamageDealtEventCount = true,
|
|
119
129
|
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
120
133
|
uniqueGroup = true,
|
|
121
134
|
damageOnExpiration = true,
|
|
122
135
|
healingOnExpiration = true,
|
|
123
136
|
killsOnExpiration = true,
|
|
124
|
-
explodesOnExpiration = true
|
|
137
|
+
explodesOnExpiration = true,
|
|
138
|
+
abilityCooldownFactor = true
|
|
125
139
|
}
|
|
126
140
|
local function resolveEnumValue(ability, level, value)
|
|
127
141
|
if value == nil or type(value) == "number" then
|
|
@@ -172,6 +186,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
172
186
|
end
|
|
173
187
|
end
|
|
174
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
175
190
|
"turnsIntoGhost",
|
|
176
191
|
"stuns",
|
|
177
192
|
"ignoresStunImmunity",
|
|
@@ -184,8 +199,11 @@ local buffNumberParameters = {
|
|
|
184
199
|
"durationIncreaseOnAutoAttack",
|
|
185
200
|
"attackSpeedIncreaseFactor",
|
|
186
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
187
203
|
"evasionProbability",
|
|
188
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
189
207
|
"damageFactor",
|
|
190
208
|
"receivedDamageFactor",
|
|
191
209
|
"maximumAutoAttackCount",
|
|
@@ -198,7 +216,10 @@ local buffNumberParameters = {
|
|
|
198
216
|
"healingPerInterval",
|
|
199
217
|
"healingOverDuration",
|
|
200
218
|
"damageOnExpiration",
|
|
201
|
-
"healingOnExpiration"
|
|
219
|
+
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
222
|
+
"abilityCooldownFactor"
|
|
202
223
|
}
|
|
203
224
|
local unsuccessfulApplicationMarker = {}
|
|
204
225
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -317,33 +338,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
317
338
|
local polarity
|
|
318
339
|
local resistanceType
|
|
319
340
|
local ability
|
|
341
|
+
local abilityBehavior
|
|
320
342
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
321
343
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
322
344
|
polarity = resistanceTypeOrPolarity
|
|
323
345
|
resistanceType = abilityOrParametersOrResistanceType
|
|
324
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
346
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
347
|
+
abilityBehavior = parametersOrAbility
|
|
348
|
+
ability = abilityBehavior.ability
|
|
349
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
325
350
|
ability = parametersOrAbility
|
|
326
|
-
|
|
327
|
-
ability = nil
|
|
351
|
+
elseif parametersOrAbility ~= nil then
|
|
328
352
|
parameters = parametersOrAbility
|
|
329
353
|
end
|
|
330
354
|
else
|
|
331
355
|
typeId = typeIdOrTypeIds
|
|
332
356
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
333
357
|
resistanceType = resistanceTypeOrPolarity
|
|
334
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
358
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
359
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
360
|
+
ability = abilityBehavior.ability
|
|
361
|
+
parameters = parametersOrAbility
|
|
362
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
335
363
|
ability = abilityOrParametersOrResistanceType
|
|
336
364
|
parameters = parametersOrAbility
|
|
337
|
-
|
|
338
|
-
ability = nil
|
|
365
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
339
366
|
parameters = abilityOrParametersOrResistanceType
|
|
367
|
+
else
|
|
368
|
+
parameters = parametersOrAbility
|
|
340
369
|
end
|
|
341
370
|
end
|
|
371
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
342
372
|
self.typeId = typeId
|
|
343
|
-
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
344
|
-
parameters = ability
|
|
345
|
-
ability = nil
|
|
346
|
-
end
|
|
347
373
|
local defaultParameters = self.constructor.defaultParameters
|
|
348
374
|
local level = parameters and parameters.level or defaultParameters.level
|
|
349
375
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -371,7 +397,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
371
397
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
372
398
|
if missProbability ~= nil then
|
|
373
399
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
374
|
-
self[
|
|
400
|
+
self[146] = missProbability
|
|
375
401
|
end
|
|
376
402
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
377
403
|
if buffByTypeId == nil then
|
|
@@ -454,24 +480,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
454
480
|
abilityTypeIds = {}
|
|
455
481
|
self._abilityTypeIds = abilityTypeIds
|
|
456
482
|
end
|
|
457
|
-
for
|
|
483
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
484
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
458
485
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
459
486
|
if addedAbility ~= nil then
|
|
460
487
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
461
488
|
_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
|
|
489
|
+
if abilityParameters.isButtonVisible == false then
|
|
490
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
473
491
|
end
|
|
474
|
-
|
|
492
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
493
|
+
field[1]:setValue(
|
|
494
|
+
addedAbility,
|
|
495
|
+
resolveNumberValue(ability, level, field[2])
|
|
496
|
+
)
|
|
497
|
+
end
|
|
498
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
475
499
|
end
|
|
476
500
|
end
|
|
477
501
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -483,18 +507,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
483
507
|
self._behaviors = behaviors
|
|
484
508
|
end
|
|
485
509
|
end
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
if
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
510
|
+
if parameters ~= nil then
|
|
511
|
+
local additionalParameters = {}
|
|
512
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
513
|
+
if not buffParametersKeys[key] then
|
|
514
|
+
if ability then
|
|
515
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
516
|
+
else
|
|
517
|
+
additionalParameters[key] = parameters[key]
|
|
518
|
+
end
|
|
493
519
|
end
|
|
494
520
|
end
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
521
|
+
if (next(additionalParameters)) ~= nil then
|
|
522
|
+
self.parameters = additionalParameters
|
|
523
|
+
end
|
|
498
524
|
end
|
|
499
525
|
end
|
|
500
526
|
if duration ~= nil and duration > 0 then
|
|
@@ -506,18 +532,48 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
506
532
|
self[100] = 1
|
|
507
533
|
Event.invoke(buffCreatedEvent, self)
|
|
508
534
|
end
|
|
535
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
536
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
537
|
+
local abilityCooldownModifier = self[148]
|
|
538
|
+
if abilityCooldownModifier then
|
|
539
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
540
|
+
end
|
|
541
|
+
end
|
|
542
|
+
end
|
|
543
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
544
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
545
|
+
local abilityCooldownModifier = self[148]
|
|
546
|
+
if abilityCooldownModifier then
|
|
547
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
548
|
+
end
|
|
549
|
+
end
|
|
550
|
+
end
|
|
509
551
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
552
|
+
self:flash(
|
|
553
|
+
self[105],
|
|
554
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin",
|
|
555
|
+
widgetOrXOrParametersOrDuration,
|
|
556
|
+
yOrParametersOrDuration,
|
|
557
|
+
parametersOrDuration
|
|
558
|
+
)
|
|
559
|
+
end
|
|
560
|
+
function Buff.prototype.flashSpecialEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
561
|
+
self:flash(
|
|
562
|
+
self[106],
|
|
563
|
+
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin",
|
|
564
|
+
widgetOrXOrParametersOrDuration,
|
|
565
|
+
yOrParametersOrDuration,
|
|
566
|
+
parametersOrDuration
|
|
567
|
+
)
|
|
568
|
+
end
|
|
569
|
+
function Buff.prototype.flash(self, modelPath, attachmentPoint, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
510
570
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
511
|
-
Effect:flash(
|
|
571
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
512
572
|
else
|
|
513
573
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
514
574
|
local ____Effect_40 = Effect
|
|
515
575
|
local ____Effect_flash_41 = Effect.flash
|
|
516
|
-
local ____array_39 = __TS__SparseArrayNew(
|
|
517
|
-
self[105],
|
|
518
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
519
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
520
|
-
)
|
|
576
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
521
577
|
local ____isWidgetProvided_38
|
|
522
578
|
if isWidgetProvided then
|
|
523
579
|
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
@@ -531,26 +587,8 @@ function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrPa
|
|
|
531
587
|
)
|
|
532
588
|
end
|
|
533
589
|
end
|
|
534
|
-
function Buff.prototype.
|
|
535
|
-
|
|
536
|
-
local ____Effect_44 = Effect
|
|
537
|
-
local ____Effect_flash_45 = Effect.flash
|
|
538
|
-
local ____array_43 = __TS__SparseArrayNew(
|
|
539
|
-
self[106],
|
|
540
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
541
|
-
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
542
|
-
)
|
|
543
|
-
local ____isWidgetProvided_42
|
|
544
|
-
if isWidgetProvided then
|
|
545
|
-
____isWidgetProvided_42 = duration
|
|
546
|
-
else
|
|
547
|
-
____isWidgetProvided_42 = widgetOrDuration
|
|
548
|
-
end
|
|
549
|
-
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
550
|
-
____Effect_flash_45(
|
|
551
|
-
____Effect_44,
|
|
552
|
-
__TS__SparseArraySpread(____array_43)
|
|
553
|
-
)
|
|
590
|
+
function Buff.prototype.expire(self)
|
|
591
|
+
expireBuff(self)
|
|
554
592
|
end
|
|
555
593
|
function Buff.prototype.onCreate(self)
|
|
556
594
|
end
|
|
@@ -580,23 +618,29 @@ function Buff.prototype.onDestroy(self)
|
|
|
580
618
|
behavior:destroy()
|
|
581
619
|
end
|
|
582
620
|
end
|
|
583
|
-
|
|
621
|
+
local previousAbilityCooldownModifier = self[148]
|
|
622
|
+
if previousAbilityCooldownModifier then
|
|
623
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
624
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
625
|
+
end
|
|
626
|
+
end
|
|
627
|
+
if self[143] then
|
|
584
628
|
unit:decrementInvulnerabilityCounter()
|
|
585
629
|
end
|
|
586
|
-
if self[
|
|
630
|
+
if self[142] then
|
|
587
631
|
unit:decrementDisableAutoAttackCounter()
|
|
588
632
|
end
|
|
589
|
-
if self[
|
|
590
|
-
if self[
|
|
591
|
-
unit:
|
|
633
|
+
if self[140] then
|
|
634
|
+
if self[141] then
|
|
635
|
+
unit:decrementForceStunCounter()
|
|
592
636
|
end
|
|
593
637
|
unit:decrementStunCounter()
|
|
594
638
|
end
|
|
595
|
-
if self[
|
|
639
|
+
if self[139] then
|
|
596
640
|
unit:decrementGhostCounter()
|
|
597
641
|
end
|
|
598
642
|
if self._abilityTypeIds ~= nil then
|
|
599
|
-
for abilityTypeId in
|
|
643
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
600
644
|
unit:removeAbility(abilityTypeId)
|
|
601
645
|
end
|
|
602
646
|
end
|
|
@@ -629,8 +673,8 @@ function Buff.apply(self, ...)
|
|
|
629
673
|
end
|
|
630
674
|
end
|
|
631
675
|
function Buff.getByTypeId(self, unit, typeId)
|
|
632
|
-
local
|
|
633
|
-
local buff =
|
|
676
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
677
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
634
678
|
if __TS__InstanceOf(buff, self) then
|
|
635
679
|
return buff
|
|
636
680
|
end
|
|
@@ -644,9 +688,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
644
688
|
if self[121] ~= nil then
|
|
645
689
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
646
690
|
end
|
|
647
|
-
if self[
|
|
691
|
+
if self[145] then
|
|
648
692
|
unit:explode()
|
|
649
|
-
elseif self[
|
|
693
|
+
elseif self[144] then
|
|
650
694
|
unit:kill()
|
|
651
695
|
end
|
|
652
696
|
end
|
|
@@ -701,6 +745,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
701
745
|
end
|
|
702
746
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
703
747
|
if event.originalAmount ~= 0 then
|
|
748
|
+
local absorbedDamage = min(event.amount * (self[135] or 1), (self[136] or 0) - (self[137] or 0))
|
|
749
|
+
if absorbedDamage > 0 then
|
|
750
|
+
event.amount = event.amount - absorbedDamage
|
|
751
|
+
self[137] = (self[137] or 0) + absorbedDamage
|
|
752
|
+
local ____self__138_44 = self[138]
|
|
753
|
+
if ____self__138_44 == nil then
|
|
754
|
+
____self__138_44 = true
|
|
755
|
+
end
|
|
756
|
+
if ____self__138_44 and self[137] >= (self[136] or 0) then
|
|
757
|
+
self:destroy()
|
|
758
|
+
end
|
|
759
|
+
end
|
|
704
760
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
705
761
|
self[133] = damageReceivedEventCount
|
|
706
762
|
if damageReceivedEventCount == self[134] then
|
|
@@ -788,8 +844,8 @@ __TS__SetDescriptor(
|
|
|
788
844
|
return
|
|
789
845
|
end
|
|
790
846
|
self[112] = damageInterval
|
|
791
|
-
local
|
|
792
|
-
local elapsed =
|
|
847
|
+
local ____opt_45 = self._timer
|
|
848
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
793
849
|
local timer = self[114]
|
|
794
850
|
if timer == nil then
|
|
795
851
|
timer = Timer:create()
|
|
@@ -868,8 +924,8 @@ __TS__SetDescriptor(
|
|
|
868
924
|
return
|
|
869
925
|
end
|
|
870
926
|
self[117] = healingInterval
|
|
871
|
-
local
|
|
872
|
-
local elapsed =
|
|
927
|
+
local ____opt_47 = self._timer
|
|
928
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
873
929
|
local timer = self[119]
|
|
874
930
|
if timer == nil then
|
|
875
931
|
timer = Timer:create()
|
|
@@ -950,24 +1006,50 @@ __TS__SetDescriptor(
|
|
|
950
1006
|
},
|
|
951
1007
|
true
|
|
952
1008
|
)
|
|
1009
|
+
__TS__SetDescriptor(
|
|
1010
|
+
Buff.prototype,
|
|
1011
|
+
"maxHealthIncrease",
|
|
1012
|
+
{
|
|
1013
|
+
get = function(self)
|
|
1014
|
+
return self:getUnitBonus(UnitBonusType.HEALTH)
|
|
1015
|
+
end,
|
|
1016
|
+
set = function(self, maxHealthIncrease)
|
|
1017
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.HEALTH, maxHealthIncrease)
|
|
1018
|
+
end
|
|
1019
|
+
},
|
|
1020
|
+
true
|
|
1021
|
+
)
|
|
1022
|
+
__TS__SetDescriptor(
|
|
1023
|
+
Buff.prototype,
|
|
1024
|
+
"maxManaIncrease",
|
|
1025
|
+
{
|
|
1026
|
+
get = function(self)
|
|
1027
|
+
return self:getUnitBonus(UnitBonusType.MANA)
|
|
1028
|
+
end,
|
|
1029
|
+
set = function(self, maxManaIncrease)
|
|
1030
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA, maxManaIncrease)
|
|
1031
|
+
end
|
|
1032
|
+
},
|
|
1033
|
+
true
|
|
1034
|
+
)
|
|
953
1035
|
__TS__SetDescriptor(
|
|
954
1036
|
Buff.prototype,
|
|
955
1037
|
"turnsIntoGhost",
|
|
956
1038
|
{
|
|
957
1039
|
get = function(self)
|
|
958
|
-
local
|
|
959
|
-
if
|
|
960
|
-
|
|
1040
|
+
local ____self__139_49 = self[139]
|
|
1041
|
+
if ____self__139_49 == nil then
|
|
1042
|
+
____self__139_49 = false
|
|
961
1043
|
end
|
|
962
|
-
return
|
|
1044
|
+
return ____self__139_49
|
|
963
1045
|
end,
|
|
964
1046
|
set = function(self, turnsIntoGhost)
|
|
965
|
-
if not turnsIntoGhost and self[
|
|
1047
|
+
if not turnsIntoGhost and self[139] then
|
|
966
1048
|
self.object:decrementGhostCounter()
|
|
967
|
-
self[
|
|
968
|
-
elseif turnsIntoGhost and not self[
|
|
1049
|
+
self[139] = nil
|
|
1050
|
+
elseif turnsIntoGhost and not self[139] then
|
|
969
1051
|
self.object:incrementGhostCounter()
|
|
970
|
-
self[
|
|
1052
|
+
self[139] = true
|
|
971
1053
|
end
|
|
972
1054
|
end
|
|
973
1055
|
},
|
|
@@ -978,25 +1060,25 @@ __TS__SetDescriptor(
|
|
|
978
1060
|
"stuns",
|
|
979
1061
|
{
|
|
980
1062
|
get = function(self)
|
|
981
|
-
local
|
|
982
|
-
if
|
|
983
|
-
|
|
1063
|
+
local ____self__140_50 = self[140]
|
|
1064
|
+
if ____self__140_50 == nil then
|
|
1065
|
+
____self__140_50 = false
|
|
984
1066
|
end
|
|
985
|
-
return
|
|
1067
|
+
return ____self__140_50
|
|
986
1068
|
end,
|
|
987
1069
|
set = function(self, stuns)
|
|
988
|
-
if not stuns and self[
|
|
989
|
-
if self[
|
|
990
|
-
self.object:
|
|
1070
|
+
if not stuns and self[140] then
|
|
1071
|
+
if self[141] then
|
|
1072
|
+
self.object:decrementForceStunCounter()
|
|
991
1073
|
end
|
|
992
1074
|
self.object:decrementStunCounter()
|
|
993
|
-
self[
|
|
994
|
-
elseif stuns and not self[
|
|
995
|
-
if self[
|
|
996
|
-
self.object:
|
|
1075
|
+
self[140] = nil
|
|
1076
|
+
elseif stuns and not self[140] then
|
|
1077
|
+
if self[141] then
|
|
1078
|
+
self.object:incrementForceStunCounter()
|
|
997
1079
|
end
|
|
998
1080
|
self.object:incrementStunCounter()
|
|
999
|
-
self[
|
|
1081
|
+
self[140] = true
|
|
1000
1082
|
end
|
|
1001
1083
|
end
|
|
1002
1084
|
},
|
|
@@ -1007,23 +1089,23 @@ __TS__SetDescriptor(
|
|
|
1007
1089
|
"ignoresStunImmunity",
|
|
1008
1090
|
{
|
|
1009
1091
|
get = function(self)
|
|
1010
|
-
local
|
|
1011
|
-
if
|
|
1012
|
-
|
|
1092
|
+
local ____self__141_51 = self[141]
|
|
1093
|
+
if ____self__141_51 == nil then
|
|
1094
|
+
____self__141_51 = false
|
|
1013
1095
|
end
|
|
1014
|
-
return
|
|
1096
|
+
return ____self__141_51
|
|
1015
1097
|
end,
|
|
1016
1098
|
set = function(self, ignoresStunImmunity)
|
|
1017
|
-
if not ignoresStunImmunity and self[
|
|
1018
|
-
if self[
|
|
1019
|
-
self.object:
|
|
1099
|
+
if not ignoresStunImmunity and self[141] then
|
|
1100
|
+
if self[140] then
|
|
1101
|
+
self.object:decrementForceStunCounter()
|
|
1020
1102
|
end
|
|
1021
|
-
self[
|
|
1022
|
-
elseif ignoresStunImmunity and not self[
|
|
1023
|
-
if self[
|
|
1024
|
-
self.object:
|
|
1103
|
+
self[141] = nil
|
|
1104
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1105
|
+
if self[140] then
|
|
1106
|
+
self.object:incrementForceStunCounter()
|
|
1025
1107
|
end
|
|
1026
|
-
self[
|
|
1108
|
+
self[141] = true
|
|
1027
1109
|
end
|
|
1028
1110
|
end
|
|
1029
1111
|
},
|
|
@@ -1034,19 +1116,19 @@ __TS__SetDescriptor(
|
|
|
1034
1116
|
"disablesAutoAttack",
|
|
1035
1117
|
{
|
|
1036
1118
|
get = function(self)
|
|
1037
|
-
local
|
|
1038
|
-
if
|
|
1039
|
-
|
|
1119
|
+
local ____self__142_52 = self[142]
|
|
1120
|
+
if ____self__142_52 == nil then
|
|
1121
|
+
____self__142_52 = false
|
|
1040
1122
|
end
|
|
1041
|
-
return
|
|
1123
|
+
return ____self__142_52
|
|
1042
1124
|
end,
|
|
1043
1125
|
set = function(self, disablesAutoAttack)
|
|
1044
|
-
if not disablesAutoAttack and self[
|
|
1126
|
+
if not disablesAutoAttack and self[142] then
|
|
1045
1127
|
self.object:decrementDisableAutoAttackCounter()
|
|
1046
|
-
self[
|
|
1047
|
-
elseif disablesAutoAttack and not self[
|
|
1128
|
+
self[142] = nil
|
|
1129
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1048
1130
|
self.object:incrementDisableAutoAttackCounter()
|
|
1049
|
-
self[
|
|
1131
|
+
self[142] = true
|
|
1050
1132
|
end
|
|
1051
1133
|
end
|
|
1052
1134
|
},
|
|
@@ -1057,19 +1139,19 @@ __TS__SetDescriptor(
|
|
|
1057
1139
|
"providesInvulnerability",
|
|
1058
1140
|
{
|
|
1059
1141
|
get = function(self)
|
|
1060
|
-
local
|
|
1061
|
-
if
|
|
1062
|
-
|
|
1142
|
+
local ____self__143_53 = self[143]
|
|
1143
|
+
if ____self__143_53 == nil then
|
|
1144
|
+
____self__143_53 = false
|
|
1063
1145
|
end
|
|
1064
|
-
return
|
|
1146
|
+
return ____self__143_53
|
|
1065
1147
|
end,
|
|
1066
1148
|
set = function(self, providesInvulnerability)
|
|
1067
|
-
if not providesInvulnerability and self[
|
|
1149
|
+
if not providesInvulnerability and self[143] then
|
|
1068
1150
|
self.object:decrementInvulnerabilityCounter()
|
|
1069
|
-
self[
|
|
1070
|
-
elseif providesInvulnerability and not self[
|
|
1151
|
+
self[143] = nil
|
|
1152
|
+
elseif providesInvulnerability and not self[143] then
|
|
1071
1153
|
self.object:incrementInvulnerabilityCounter()
|
|
1072
|
-
self[
|
|
1154
|
+
self[143] = true
|
|
1073
1155
|
end
|
|
1074
1156
|
end
|
|
1075
1157
|
},
|
|
@@ -1080,17 +1162,17 @@ __TS__SetDescriptor(
|
|
|
1080
1162
|
"killsOnExpiration",
|
|
1081
1163
|
{
|
|
1082
1164
|
get = function(self)
|
|
1083
|
-
local
|
|
1084
|
-
if
|
|
1085
|
-
|
|
1165
|
+
local ____self__144_54 = self[144]
|
|
1166
|
+
if ____self__144_54 == nil then
|
|
1167
|
+
____self__144_54 = false
|
|
1086
1168
|
end
|
|
1087
|
-
return
|
|
1169
|
+
return ____self__144_54
|
|
1088
1170
|
end,
|
|
1089
1171
|
set = function(self, killsOnExpiration)
|
|
1090
|
-
if not killsOnExpiration and self[
|
|
1091
|
-
self[
|
|
1092
|
-
elseif killsOnExpiration and not self[
|
|
1093
|
-
self[
|
|
1172
|
+
if not killsOnExpiration and self[144] then
|
|
1173
|
+
self[144] = nil
|
|
1174
|
+
elseif killsOnExpiration and not self[144] then
|
|
1175
|
+
self[144] = true
|
|
1094
1176
|
end
|
|
1095
1177
|
end
|
|
1096
1178
|
},
|
|
@@ -1101,17 +1183,17 @@ __TS__SetDescriptor(
|
|
|
1101
1183
|
"explodesOnExpiration",
|
|
1102
1184
|
{
|
|
1103
1185
|
get = function(self)
|
|
1104
|
-
local
|
|
1105
|
-
if
|
|
1106
|
-
|
|
1186
|
+
local ____self__145_55 = self[145]
|
|
1187
|
+
if ____self__145_55 == nil then
|
|
1188
|
+
____self__145_55 = false
|
|
1107
1189
|
end
|
|
1108
|
-
return
|
|
1190
|
+
return ____self__145_55
|
|
1109
1191
|
end,
|
|
1110
1192
|
set = function(self, killsOnExpiration)
|
|
1111
|
-
if not killsOnExpiration and self[
|
|
1112
|
-
self[
|
|
1113
|
-
elseif killsOnExpiration and not self[
|
|
1114
|
-
self[
|
|
1193
|
+
if not killsOnExpiration and self[145] then
|
|
1194
|
+
self[145] = nil
|
|
1195
|
+
elseif killsOnExpiration and not self[145] then
|
|
1196
|
+
self[145] = true
|
|
1115
1197
|
end
|
|
1116
1198
|
end
|
|
1117
1199
|
},
|
|
@@ -1220,12 +1302,39 @@ __TS__SetDescriptor(
|
|
|
1220
1302
|
},
|
|
1221
1303
|
true
|
|
1222
1304
|
)
|
|
1305
|
+
__TS__SetDescriptor(
|
|
1306
|
+
Buff.prototype,
|
|
1307
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1308
|
+
{
|
|
1309
|
+
get = function(self)
|
|
1310
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1311
|
+
end,
|
|
1312
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1313
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1314
|
+
end
|
|
1315
|
+
},
|
|
1316
|
+
true
|
|
1317
|
+
)
|
|
1223
1318
|
__TS__SetDescriptor(
|
|
1224
1319
|
Buff.prototype,
|
|
1225
1320
|
"duration",
|
|
1226
|
-
{
|
|
1227
|
-
|
|
1228
|
-
|
|
1321
|
+
{
|
|
1322
|
+
get = function(self)
|
|
1323
|
+
return self[103]
|
|
1324
|
+
end,
|
|
1325
|
+
set = function(self, duration)
|
|
1326
|
+
if duration <= 0 then
|
|
1327
|
+
local timer = self._timer
|
|
1328
|
+
if timer ~= nil then
|
|
1329
|
+
timer:destroy()
|
|
1330
|
+
self._timer = nil
|
|
1331
|
+
end
|
|
1332
|
+
self[103] = 0
|
|
1333
|
+
else
|
|
1334
|
+
self.remainingDuration = self.remainingDuration + (duration - self[103])
|
|
1335
|
+
end
|
|
1336
|
+
end
|
|
1337
|
+
},
|
|
1229
1338
|
true
|
|
1230
1339
|
)
|
|
1231
1340
|
__TS__SetDescriptor(
|
|
@@ -1233,13 +1342,13 @@ __TS__SetDescriptor(
|
|
|
1233
1342
|
"remainingDuration",
|
|
1234
1343
|
{
|
|
1235
1344
|
get = function(self)
|
|
1236
|
-
local
|
|
1237
|
-
return
|
|
1345
|
+
local ____opt_56 = self._timer
|
|
1346
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1238
1347
|
end,
|
|
1239
1348
|
set = function(self, remainingDuration)
|
|
1240
|
-
local
|
|
1241
|
-
local
|
|
1242
|
-
local remainingDurationDelta =
|
|
1349
|
+
local ____remainingDuration_60 = remainingDuration
|
|
1350
|
+
local ____opt_58 = self._timer
|
|
1351
|
+
local remainingDurationDelta = ____remainingDuration_60 - (____opt_58 and ____opt_58.remaining or 0)
|
|
1243
1352
|
if remainingDurationDelta ~= 0 then
|
|
1244
1353
|
self[103] = self[103] + remainingDurationDelta
|
|
1245
1354
|
if remainingDuration <= 0 then
|
|
@@ -1254,7 +1363,7 @@ __TS__SetDescriptor(
|
|
|
1254
1363
|
remainingDuration,
|
|
1255
1364
|
self._spellStealPriority,
|
|
1256
1365
|
self._learnLevelMinimum,
|
|
1257
|
-
self[
|
|
1366
|
+
self[146]
|
|
1258
1367
|
) then
|
|
1259
1368
|
local timer = self._timer
|
|
1260
1369
|
if timer == nil then
|
|
@@ -1269,6 +1378,97 @@ __TS__SetDescriptor(
|
|
|
1269
1378
|
},
|
|
1270
1379
|
true
|
|
1271
1380
|
)
|
|
1381
|
+
__TS__SetDescriptor(
|
|
1382
|
+
Buff.prototype,
|
|
1383
|
+
"absorbedDamageFactor",
|
|
1384
|
+
{
|
|
1385
|
+
get = function(self)
|
|
1386
|
+
return self[135] or 1
|
|
1387
|
+
end,
|
|
1388
|
+
set = function(self, absorbedDamageFactor)
|
|
1389
|
+
if absorbedDamageFactor == 1 then
|
|
1390
|
+
self[135] = nil
|
|
1391
|
+
else
|
|
1392
|
+
self[135] = absorbedDamageFactor
|
|
1393
|
+
end
|
|
1394
|
+
end
|
|
1395
|
+
},
|
|
1396
|
+
true
|
|
1397
|
+
)
|
|
1398
|
+
__TS__SetDescriptor(
|
|
1399
|
+
Buff.prototype,
|
|
1400
|
+
"maximumDamageAbsorbed",
|
|
1401
|
+
{
|
|
1402
|
+
get = function(self)
|
|
1403
|
+
return self[136] or 0
|
|
1404
|
+
end,
|
|
1405
|
+
set = function(self, maximumDamageAbsorbed)
|
|
1406
|
+
if maximumDamageAbsorbed == 0 then
|
|
1407
|
+
self[136] = nil
|
|
1408
|
+
else
|
|
1409
|
+
self[136] = maximumDamageAbsorbed
|
|
1410
|
+
end
|
|
1411
|
+
end
|
|
1412
|
+
},
|
|
1413
|
+
true
|
|
1414
|
+
)
|
|
1415
|
+
__TS__SetDescriptor(
|
|
1416
|
+
Buff.prototype,
|
|
1417
|
+
"damageAbsorbed",
|
|
1418
|
+
{get = function(self)
|
|
1419
|
+
return self[137] or 0
|
|
1420
|
+
end},
|
|
1421
|
+
true
|
|
1422
|
+
)
|
|
1423
|
+
__TS__SetDescriptor(
|
|
1424
|
+
Buff.prototype,
|
|
1425
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
1426
|
+
{
|
|
1427
|
+
get = function(self)
|
|
1428
|
+
local ____self__138_61 = self[138]
|
|
1429
|
+
if ____self__138_61 == nil then
|
|
1430
|
+
____self__138_61 = true
|
|
1431
|
+
end
|
|
1432
|
+
return ____self__138_61
|
|
1433
|
+
end,
|
|
1434
|
+
set = function(self, destroysOnMaximumDamageAbsorbed)
|
|
1435
|
+
local ____destroysOnMaximumDamageAbsorbed_62
|
|
1436
|
+
if destroysOnMaximumDamageAbsorbed then
|
|
1437
|
+
____destroysOnMaximumDamageAbsorbed_62 = nil
|
|
1438
|
+
else
|
|
1439
|
+
____destroysOnMaximumDamageAbsorbed_62 = false
|
|
1440
|
+
end
|
|
1441
|
+
self[138] = ____destroysOnMaximumDamageAbsorbed_62
|
|
1442
|
+
end
|
|
1443
|
+
},
|
|
1444
|
+
true
|
|
1445
|
+
)
|
|
1446
|
+
__TS__SetDescriptor(
|
|
1447
|
+
Buff.prototype,
|
|
1448
|
+
"abilityCooldownFactor",
|
|
1449
|
+
{
|
|
1450
|
+
get = function(self)
|
|
1451
|
+
return self[147] or 1
|
|
1452
|
+
end,
|
|
1453
|
+
set = function(self, abilityCooldownFactor)
|
|
1454
|
+
local previousAbilityCooldownModifier = self[148]
|
|
1455
|
+
if previousAbilityCooldownModifier then
|
|
1456
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1457
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1458
|
+
end
|
|
1459
|
+
end
|
|
1460
|
+
local function modifier(ability, level, cooldown)
|
|
1461
|
+
return cooldown * abilityCooldownFactor
|
|
1462
|
+
end
|
|
1463
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1464
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1465
|
+
end
|
|
1466
|
+
self[148] = modifier
|
|
1467
|
+
self[147] = abilityCooldownFactor
|
|
1468
|
+
end
|
|
1469
|
+
},
|
|
1470
|
+
true
|
|
1471
|
+
)
|
|
1272
1472
|
Buff.createdEvent = buffCreatedEvent
|
|
1273
1473
|
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1274
1474
|
(function(self)
|
|
@@ -1327,5 +1527,8 @@ Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
|
1327
1527
|
buffCreatedEvent:addListener(function(buff)
|
|
1328
1528
|
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1329
1529
|
end)
|
|
1530
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1531
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1532
|
+
end)
|
|
1330
1533
|
end)(Buff)
|
|
1331
1534
|
return ____exports
|