warscript 0.0.1-dev.eda504c → 0.0.1-dev.edf7fad
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/core/types/frame.lua +47 -1
- 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/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/damage.d.ts +3 -0
- package/engine/behaviour/ability/damage.lua +8 -2
- 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 +7 -3
- package/engine/behaviour/unit.lua +101 -24
- package/engine/buff.d.ts +65 -18
- package/engine/buff.lua +356 -152
- 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/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/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 +16 -6
- package/engine/internal/unit.d.ts +13 -19
- package/engine/internal/unit.lua +140 -173
- package/engine/local-client.d.ts +7 -0
- package/engine/local-client.lua +79 -1
- 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 +84 -4
- 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/ability.lua +2 -2
- package/engine/object-field/unit.d.ts +20 -5
- package/engine/object-field/unit.lua +61 -0
- package/engine/object-field.d.ts +10 -2
- package/engine/object-field.lua +268 -123
- 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 +2 -1
- package/engine/unit.d.ts +5 -0
- package/engine/unit.lua +5 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +9 -7
- package/objutil/object.lua +1 -1
- package/operation.lua +1 -4
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- 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 +38 -0
- package/utility/records.lua +20 -1
- /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,14 +397,15 @@ 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
|
|
378
404
|
buffByTypeId = {}
|
|
379
405
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
380
406
|
end
|
|
381
|
-
|
|
407
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
408
|
+
local ____opt_15 = self.previousBuff
|
|
382
409
|
if ____opt_15 ~= nil then
|
|
383
410
|
____opt_15:destroy()
|
|
384
411
|
end
|
|
@@ -454,24 +481,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
454
481
|
abilityTypeIds = {}
|
|
455
482
|
self._abilityTypeIds = abilityTypeIds
|
|
456
483
|
end
|
|
457
|
-
for
|
|
484
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
485
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
458
486
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
459
487
|
if addedAbility ~= nil then
|
|
460
488
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
461
489
|
_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
|
|
490
|
+
if abilityParameters.isButtonVisible == false then
|
|
491
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
473
492
|
end
|
|
474
|
-
|
|
493
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
494
|
+
field[1]:setValue(
|
|
495
|
+
addedAbility,
|
|
496
|
+
resolveNumberValue(ability, level, field[2])
|
|
497
|
+
)
|
|
498
|
+
end
|
|
499
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
475
500
|
end
|
|
476
501
|
end
|
|
477
502
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -483,18 +508,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
483
508
|
self._behaviors = behaviors
|
|
484
509
|
end
|
|
485
510
|
end
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
if
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
511
|
+
if parameters ~= nil then
|
|
512
|
+
local additionalParameters = {}
|
|
513
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
514
|
+
if not buffParametersKeys[key] then
|
|
515
|
+
if ability then
|
|
516
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
517
|
+
else
|
|
518
|
+
additionalParameters[key] = parameters[key]
|
|
519
|
+
end
|
|
493
520
|
end
|
|
494
521
|
end
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
522
|
+
if (next(additionalParameters)) ~= nil then
|
|
523
|
+
self.parameters = additionalParameters
|
|
524
|
+
end
|
|
498
525
|
end
|
|
499
526
|
end
|
|
500
527
|
if duration ~= nil and duration > 0 then
|
|
@@ -506,18 +533,48 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
506
533
|
self[100] = 1
|
|
507
534
|
Event.invoke(buffCreatedEvent, self)
|
|
508
535
|
end
|
|
536
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
537
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
538
|
+
local abilityCooldownModifier = self[148]
|
|
539
|
+
if abilityCooldownModifier then
|
|
540
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
541
|
+
end
|
|
542
|
+
end
|
|
543
|
+
end
|
|
544
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
545
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
546
|
+
local abilityCooldownModifier = self[148]
|
|
547
|
+
if abilityCooldownModifier then
|
|
548
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
549
|
+
end
|
|
550
|
+
end
|
|
551
|
+
end
|
|
509
552
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
553
|
+
self:flash(
|
|
554
|
+
self[105],
|
|
555
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin",
|
|
556
|
+
widgetOrXOrParametersOrDuration,
|
|
557
|
+
yOrParametersOrDuration,
|
|
558
|
+
parametersOrDuration
|
|
559
|
+
)
|
|
560
|
+
end
|
|
561
|
+
function Buff.prototype.flashSpecialEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
562
|
+
self:flash(
|
|
563
|
+
self[106],
|
|
564
|
+
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin",
|
|
565
|
+
widgetOrXOrParametersOrDuration,
|
|
566
|
+
yOrParametersOrDuration,
|
|
567
|
+
parametersOrDuration
|
|
568
|
+
)
|
|
569
|
+
end
|
|
570
|
+
function Buff.prototype.flash(self, modelPath, attachmentPoint, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
510
571
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
511
|
-
Effect:flash(
|
|
572
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
512
573
|
else
|
|
513
574
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
514
575
|
local ____Effect_40 = Effect
|
|
515
576
|
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
|
-
)
|
|
577
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
521
578
|
local ____isWidgetProvided_38
|
|
522
579
|
if isWidgetProvided then
|
|
523
580
|
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
@@ -531,26 +588,8 @@ function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrPa
|
|
|
531
588
|
)
|
|
532
589
|
end
|
|
533
590
|
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
|
-
)
|
|
591
|
+
function Buff.prototype.expire(self)
|
|
592
|
+
expireBuff(self)
|
|
554
593
|
end
|
|
555
594
|
function Buff.prototype.onCreate(self)
|
|
556
595
|
end
|
|
@@ -580,23 +619,29 @@ function Buff.prototype.onDestroy(self)
|
|
|
580
619
|
behavior:destroy()
|
|
581
620
|
end
|
|
582
621
|
end
|
|
583
|
-
|
|
622
|
+
local previousAbilityCooldownModifier = self[148]
|
|
623
|
+
if previousAbilityCooldownModifier then
|
|
624
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
625
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
626
|
+
end
|
|
627
|
+
end
|
|
628
|
+
if self[143] then
|
|
584
629
|
unit:decrementInvulnerabilityCounter()
|
|
585
630
|
end
|
|
586
|
-
if self[
|
|
631
|
+
if self[142] then
|
|
587
632
|
unit:decrementDisableAutoAttackCounter()
|
|
588
633
|
end
|
|
589
|
-
if self[
|
|
590
|
-
if self[
|
|
591
|
-
unit:
|
|
634
|
+
if self[140] then
|
|
635
|
+
if self[141] then
|
|
636
|
+
unit:decrementForceStunCounter()
|
|
592
637
|
end
|
|
593
638
|
unit:decrementStunCounter()
|
|
594
639
|
end
|
|
595
|
-
if self[
|
|
640
|
+
if self[139] then
|
|
596
641
|
unit:decrementGhostCounter()
|
|
597
642
|
end
|
|
598
643
|
if self._abilityTypeIds ~= nil then
|
|
599
|
-
for abilityTypeId in
|
|
644
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
600
645
|
unit:removeAbility(abilityTypeId)
|
|
601
646
|
end
|
|
602
647
|
end
|
|
@@ -629,8 +674,8 @@ function Buff.apply(self, ...)
|
|
|
629
674
|
end
|
|
630
675
|
end
|
|
631
676
|
function Buff.getByTypeId(self, unit, typeId)
|
|
632
|
-
local
|
|
633
|
-
local buff =
|
|
677
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
678
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
634
679
|
if __TS__InstanceOf(buff, self) then
|
|
635
680
|
return buff
|
|
636
681
|
end
|
|
@@ -644,9 +689,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
644
689
|
if self[121] ~= nil then
|
|
645
690
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
646
691
|
end
|
|
647
|
-
if self[
|
|
692
|
+
if self[145] then
|
|
648
693
|
unit:explode()
|
|
649
|
-
elseif self[
|
|
694
|
+
elseif self[144] then
|
|
650
695
|
unit:kill()
|
|
651
696
|
end
|
|
652
697
|
end
|
|
@@ -701,6 +746,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
701
746
|
end
|
|
702
747
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
703
748
|
if event.originalAmount ~= 0 then
|
|
749
|
+
local absorbedDamage = min(event.amount * (self[135] or 1), (self[136] or 0) - (self[137] or 0))
|
|
750
|
+
if absorbedDamage > 0 then
|
|
751
|
+
event.amount = event.amount - absorbedDamage
|
|
752
|
+
self[137] = (self[137] or 0) + absorbedDamage
|
|
753
|
+
local ____self__138_44 = self[138]
|
|
754
|
+
if ____self__138_44 == nil then
|
|
755
|
+
____self__138_44 = true
|
|
756
|
+
end
|
|
757
|
+
if ____self__138_44 and self[137] >= (self[136] or 0) then
|
|
758
|
+
self:destroy()
|
|
759
|
+
end
|
|
760
|
+
end
|
|
704
761
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
705
762
|
self[133] = damageReceivedEventCount
|
|
706
763
|
if damageReceivedEventCount == self[134] then
|
|
@@ -788,8 +845,8 @@ __TS__SetDescriptor(
|
|
|
788
845
|
return
|
|
789
846
|
end
|
|
790
847
|
self[112] = damageInterval
|
|
791
|
-
local
|
|
792
|
-
local elapsed =
|
|
848
|
+
local ____opt_45 = self._timer
|
|
849
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
793
850
|
local timer = self[114]
|
|
794
851
|
if timer == nil then
|
|
795
852
|
timer = Timer:create()
|
|
@@ -868,8 +925,8 @@ __TS__SetDescriptor(
|
|
|
868
925
|
return
|
|
869
926
|
end
|
|
870
927
|
self[117] = healingInterval
|
|
871
|
-
local
|
|
872
|
-
local elapsed =
|
|
928
|
+
local ____opt_47 = self._timer
|
|
929
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
873
930
|
local timer = self[119]
|
|
874
931
|
if timer == nil then
|
|
875
932
|
timer = Timer:create()
|
|
@@ -950,24 +1007,50 @@ __TS__SetDescriptor(
|
|
|
950
1007
|
},
|
|
951
1008
|
true
|
|
952
1009
|
)
|
|
1010
|
+
__TS__SetDescriptor(
|
|
1011
|
+
Buff.prototype,
|
|
1012
|
+
"maxHealthIncrease",
|
|
1013
|
+
{
|
|
1014
|
+
get = function(self)
|
|
1015
|
+
return self:getUnitBonus(UnitBonusType.HEALTH)
|
|
1016
|
+
end,
|
|
1017
|
+
set = function(self, maxHealthIncrease)
|
|
1018
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.HEALTH, maxHealthIncrease)
|
|
1019
|
+
end
|
|
1020
|
+
},
|
|
1021
|
+
true
|
|
1022
|
+
)
|
|
1023
|
+
__TS__SetDescriptor(
|
|
1024
|
+
Buff.prototype,
|
|
1025
|
+
"maxManaIncrease",
|
|
1026
|
+
{
|
|
1027
|
+
get = function(self)
|
|
1028
|
+
return self:getUnitBonus(UnitBonusType.MANA)
|
|
1029
|
+
end,
|
|
1030
|
+
set = function(self, maxManaIncrease)
|
|
1031
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA, maxManaIncrease)
|
|
1032
|
+
end
|
|
1033
|
+
},
|
|
1034
|
+
true
|
|
1035
|
+
)
|
|
953
1036
|
__TS__SetDescriptor(
|
|
954
1037
|
Buff.prototype,
|
|
955
1038
|
"turnsIntoGhost",
|
|
956
1039
|
{
|
|
957
1040
|
get = function(self)
|
|
958
|
-
local
|
|
959
|
-
if
|
|
960
|
-
|
|
1041
|
+
local ____self__139_49 = self[139]
|
|
1042
|
+
if ____self__139_49 == nil then
|
|
1043
|
+
____self__139_49 = false
|
|
961
1044
|
end
|
|
962
|
-
return
|
|
1045
|
+
return ____self__139_49
|
|
963
1046
|
end,
|
|
964
1047
|
set = function(self, turnsIntoGhost)
|
|
965
|
-
if not turnsIntoGhost and self[
|
|
1048
|
+
if not turnsIntoGhost and self[139] then
|
|
966
1049
|
self.object:decrementGhostCounter()
|
|
967
|
-
self[
|
|
968
|
-
elseif turnsIntoGhost and not self[
|
|
1050
|
+
self[139] = nil
|
|
1051
|
+
elseif turnsIntoGhost and not self[139] then
|
|
969
1052
|
self.object:incrementGhostCounter()
|
|
970
|
-
self[
|
|
1053
|
+
self[139] = true
|
|
971
1054
|
end
|
|
972
1055
|
end
|
|
973
1056
|
},
|
|
@@ -978,25 +1061,25 @@ __TS__SetDescriptor(
|
|
|
978
1061
|
"stuns",
|
|
979
1062
|
{
|
|
980
1063
|
get = function(self)
|
|
981
|
-
local
|
|
982
|
-
if
|
|
983
|
-
|
|
1064
|
+
local ____self__140_50 = self[140]
|
|
1065
|
+
if ____self__140_50 == nil then
|
|
1066
|
+
____self__140_50 = false
|
|
984
1067
|
end
|
|
985
|
-
return
|
|
1068
|
+
return ____self__140_50
|
|
986
1069
|
end,
|
|
987
1070
|
set = function(self, stuns)
|
|
988
|
-
if not stuns and self[
|
|
989
|
-
if self[
|
|
990
|
-
self.object:
|
|
1071
|
+
if not stuns and self[140] then
|
|
1072
|
+
if self[141] then
|
|
1073
|
+
self.object:decrementForceStunCounter()
|
|
991
1074
|
end
|
|
992
1075
|
self.object:decrementStunCounter()
|
|
993
|
-
self[
|
|
994
|
-
elseif stuns and not self[
|
|
995
|
-
if self[
|
|
996
|
-
self.object:
|
|
1076
|
+
self[140] = nil
|
|
1077
|
+
elseif stuns and not self[140] then
|
|
1078
|
+
if self[141] then
|
|
1079
|
+
self.object:incrementForceStunCounter()
|
|
997
1080
|
end
|
|
998
1081
|
self.object:incrementStunCounter()
|
|
999
|
-
self[
|
|
1082
|
+
self[140] = true
|
|
1000
1083
|
end
|
|
1001
1084
|
end
|
|
1002
1085
|
},
|
|
@@ -1007,23 +1090,23 @@ __TS__SetDescriptor(
|
|
|
1007
1090
|
"ignoresStunImmunity",
|
|
1008
1091
|
{
|
|
1009
1092
|
get = function(self)
|
|
1010
|
-
local
|
|
1011
|
-
if
|
|
1012
|
-
|
|
1093
|
+
local ____self__141_51 = self[141]
|
|
1094
|
+
if ____self__141_51 == nil then
|
|
1095
|
+
____self__141_51 = false
|
|
1013
1096
|
end
|
|
1014
|
-
return
|
|
1097
|
+
return ____self__141_51
|
|
1015
1098
|
end,
|
|
1016
1099
|
set = function(self, ignoresStunImmunity)
|
|
1017
|
-
if not ignoresStunImmunity and self[
|
|
1018
|
-
if self[
|
|
1019
|
-
self.object:
|
|
1100
|
+
if not ignoresStunImmunity and self[141] then
|
|
1101
|
+
if self[140] then
|
|
1102
|
+
self.object:decrementForceStunCounter()
|
|
1020
1103
|
end
|
|
1021
|
-
self[
|
|
1022
|
-
elseif ignoresStunImmunity and not self[
|
|
1023
|
-
if self[
|
|
1024
|
-
self.object:
|
|
1104
|
+
self[141] = nil
|
|
1105
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1106
|
+
if self[140] then
|
|
1107
|
+
self.object:incrementForceStunCounter()
|
|
1025
1108
|
end
|
|
1026
|
-
self[
|
|
1109
|
+
self[141] = true
|
|
1027
1110
|
end
|
|
1028
1111
|
end
|
|
1029
1112
|
},
|
|
@@ -1034,19 +1117,19 @@ __TS__SetDescriptor(
|
|
|
1034
1117
|
"disablesAutoAttack",
|
|
1035
1118
|
{
|
|
1036
1119
|
get = function(self)
|
|
1037
|
-
local
|
|
1038
|
-
if
|
|
1039
|
-
|
|
1120
|
+
local ____self__142_52 = self[142]
|
|
1121
|
+
if ____self__142_52 == nil then
|
|
1122
|
+
____self__142_52 = false
|
|
1040
1123
|
end
|
|
1041
|
-
return
|
|
1124
|
+
return ____self__142_52
|
|
1042
1125
|
end,
|
|
1043
1126
|
set = function(self, disablesAutoAttack)
|
|
1044
|
-
if not disablesAutoAttack and self[
|
|
1127
|
+
if not disablesAutoAttack and self[142] then
|
|
1045
1128
|
self.object:decrementDisableAutoAttackCounter()
|
|
1046
|
-
self[
|
|
1047
|
-
elseif disablesAutoAttack and not self[
|
|
1129
|
+
self[142] = nil
|
|
1130
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1048
1131
|
self.object:incrementDisableAutoAttackCounter()
|
|
1049
|
-
self[
|
|
1132
|
+
self[142] = true
|
|
1050
1133
|
end
|
|
1051
1134
|
end
|
|
1052
1135
|
},
|
|
@@ -1057,19 +1140,19 @@ __TS__SetDescriptor(
|
|
|
1057
1140
|
"providesInvulnerability",
|
|
1058
1141
|
{
|
|
1059
1142
|
get = function(self)
|
|
1060
|
-
local
|
|
1061
|
-
if
|
|
1062
|
-
|
|
1143
|
+
local ____self__143_53 = self[143]
|
|
1144
|
+
if ____self__143_53 == nil then
|
|
1145
|
+
____self__143_53 = false
|
|
1063
1146
|
end
|
|
1064
|
-
return
|
|
1147
|
+
return ____self__143_53
|
|
1065
1148
|
end,
|
|
1066
1149
|
set = function(self, providesInvulnerability)
|
|
1067
|
-
if not providesInvulnerability and self[
|
|
1150
|
+
if not providesInvulnerability and self[143] then
|
|
1068
1151
|
self.object:decrementInvulnerabilityCounter()
|
|
1069
|
-
self[
|
|
1070
|
-
elseif providesInvulnerability and not self[
|
|
1152
|
+
self[143] = nil
|
|
1153
|
+
elseif providesInvulnerability and not self[143] then
|
|
1071
1154
|
self.object:incrementInvulnerabilityCounter()
|
|
1072
|
-
self[
|
|
1155
|
+
self[143] = true
|
|
1073
1156
|
end
|
|
1074
1157
|
end
|
|
1075
1158
|
},
|
|
@@ -1080,17 +1163,17 @@ __TS__SetDescriptor(
|
|
|
1080
1163
|
"killsOnExpiration",
|
|
1081
1164
|
{
|
|
1082
1165
|
get = function(self)
|
|
1083
|
-
local
|
|
1084
|
-
if
|
|
1085
|
-
|
|
1166
|
+
local ____self__144_54 = self[144]
|
|
1167
|
+
if ____self__144_54 == nil then
|
|
1168
|
+
____self__144_54 = false
|
|
1086
1169
|
end
|
|
1087
|
-
return
|
|
1170
|
+
return ____self__144_54
|
|
1088
1171
|
end,
|
|
1089
1172
|
set = function(self, killsOnExpiration)
|
|
1090
|
-
if not killsOnExpiration and self[
|
|
1091
|
-
self[
|
|
1092
|
-
elseif killsOnExpiration and not self[
|
|
1093
|
-
self[
|
|
1173
|
+
if not killsOnExpiration and self[144] then
|
|
1174
|
+
self[144] = nil
|
|
1175
|
+
elseif killsOnExpiration and not self[144] then
|
|
1176
|
+
self[144] = true
|
|
1094
1177
|
end
|
|
1095
1178
|
end
|
|
1096
1179
|
},
|
|
@@ -1101,17 +1184,17 @@ __TS__SetDescriptor(
|
|
|
1101
1184
|
"explodesOnExpiration",
|
|
1102
1185
|
{
|
|
1103
1186
|
get = function(self)
|
|
1104
|
-
local
|
|
1105
|
-
if
|
|
1106
|
-
|
|
1187
|
+
local ____self__145_55 = self[145]
|
|
1188
|
+
if ____self__145_55 == nil then
|
|
1189
|
+
____self__145_55 = false
|
|
1107
1190
|
end
|
|
1108
|
-
return
|
|
1191
|
+
return ____self__145_55
|
|
1109
1192
|
end,
|
|
1110
1193
|
set = function(self, killsOnExpiration)
|
|
1111
|
-
if not killsOnExpiration and self[
|
|
1112
|
-
self[
|
|
1113
|
-
elseif killsOnExpiration and not self[
|
|
1114
|
-
self[
|
|
1194
|
+
if not killsOnExpiration and self[145] then
|
|
1195
|
+
self[145] = nil
|
|
1196
|
+
elseif killsOnExpiration and not self[145] then
|
|
1197
|
+
self[145] = true
|
|
1115
1198
|
end
|
|
1116
1199
|
end
|
|
1117
1200
|
},
|
|
@@ -1220,12 +1303,39 @@ __TS__SetDescriptor(
|
|
|
1220
1303
|
},
|
|
1221
1304
|
true
|
|
1222
1305
|
)
|
|
1306
|
+
__TS__SetDescriptor(
|
|
1307
|
+
Buff.prototype,
|
|
1308
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1309
|
+
{
|
|
1310
|
+
get = function(self)
|
|
1311
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1312
|
+
end,
|
|
1313
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1314
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1315
|
+
end
|
|
1316
|
+
},
|
|
1317
|
+
true
|
|
1318
|
+
)
|
|
1223
1319
|
__TS__SetDescriptor(
|
|
1224
1320
|
Buff.prototype,
|
|
1225
1321
|
"duration",
|
|
1226
|
-
{
|
|
1227
|
-
|
|
1228
|
-
|
|
1322
|
+
{
|
|
1323
|
+
get = function(self)
|
|
1324
|
+
return self[103]
|
|
1325
|
+
end,
|
|
1326
|
+
set = function(self, duration)
|
|
1327
|
+
if duration <= 0 then
|
|
1328
|
+
local timer = self._timer
|
|
1329
|
+
if timer ~= nil then
|
|
1330
|
+
timer:destroy()
|
|
1331
|
+
self._timer = nil
|
|
1332
|
+
end
|
|
1333
|
+
self[103] = 0
|
|
1334
|
+
else
|
|
1335
|
+
self.remainingDuration = self.remainingDuration + (duration - self[103])
|
|
1336
|
+
end
|
|
1337
|
+
end
|
|
1338
|
+
},
|
|
1229
1339
|
true
|
|
1230
1340
|
)
|
|
1231
1341
|
__TS__SetDescriptor(
|
|
@@ -1233,13 +1343,13 @@ __TS__SetDescriptor(
|
|
|
1233
1343
|
"remainingDuration",
|
|
1234
1344
|
{
|
|
1235
1345
|
get = function(self)
|
|
1236
|
-
local
|
|
1237
|
-
return
|
|
1346
|
+
local ____opt_56 = self._timer
|
|
1347
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1238
1348
|
end,
|
|
1239
1349
|
set = function(self, remainingDuration)
|
|
1240
|
-
local
|
|
1241
|
-
local
|
|
1242
|
-
local remainingDurationDelta =
|
|
1350
|
+
local ____remainingDuration_60 = remainingDuration
|
|
1351
|
+
local ____opt_58 = self._timer
|
|
1352
|
+
local remainingDurationDelta = ____remainingDuration_60 - (____opt_58 and ____opt_58.remaining or 0)
|
|
1243
1353
|
if remainingDurationDelta ~= 0 then
|
|
1244
1354
|
self[103] = self[103] + remainingDurationDelta
|
|
1245
1355
|
if remainingDuration <= 0 then
|
|
@@ -1254,7 +1364,7 @@ __TS__SetDescriptor(
|
|
|
1254
1364
|
remainingDuration,
|
|
1255
1365
|
self._spellStealPriority,
|
|
1256
1366
|
self._learnLevelMinimum,
|
|
1257
|
-
self[
|
|
1367
|
+
self[146]
|
|
1258
1368
|
) then
|
|
1259
1369
|
local timer = self._timer
|
|
1260
1370
|
if timer == nil then
|
|
@@ -1269,6 +1379,97 @@ __TS__SetDescriptor(
|
|
|
1269
1379
|
},
|
|
1270
1380
|
true
|
|
1271
1381
|
)
|
|
1382
|
+
__TS__SetDescriptor(
|
|
1383
|
+
Buff.prototype,
|
|
1384
|
+
"absorbedDamageFactor",
|
|
1385
|
+
{
|
|
1386
|
+
get = function(self)
|
|
1387
|
+
return self[135] or 1
|
|
1388
|
+
end,
|
|
1389
|
+
set = function(self, absorbedDamageFactor)
|
|
1390
|
+
if absorbedDamageFactor == 1 then
|
|
1391
|
+
self[135] = nil
|
|
1392
|
+
else
|
|
1393
|
+
self[135] = absorbedDamageFactor
|
|
1394
|
+
end
|
|
1395
|
+
end
|
|
1396
|
+
},
|
|
1397
|
+
true
|
|
1398
|
+
)
|
|
1399
|
+
__TS__SetDescriptor(
|
|
1400
|
+
Buff.prototype,
|
|
1401
|
+
"maximumDamageAbsorbed",
|
|
1402
|
+
{
|
|
1403
|
+
get = function(self)
|
|
1404
|
+
return self[136] or 0
|
|
1405
|
+
end,
|
|
1406
|
+
set = function(self, maximumDamageAbsorbed)
|
|
1407
|
+
if maximumDamageAbsorbed == 0 then
|
|
1408
|
+
self[136] = nil
|
|
1409
|
+
else
|
|
1410
|
+
self[136] = maximumDamageAbsorbed
|
|
1411
|
+
end
|
|
1412
|
+
end
|
|
1413
|
+
},
|
|
1414
|
+
true
|
|
1415
|
+
)
|
|
1416
|
+
__TS__SetDescriptor(
|
|
1417
|
+
Buff.prototype,
|
|
1418
|
+
"damageAbsorbed",
|
|
1419
|
+
{get = function(self)
|
|
1420
|
+
return self[137] or 0
|
|
1421
|
+
end},
|
|
1422
|
+
true
|
|
1423
|
+
)
|
|
1424
|
+
__TS__SetDescriptor(
|
|
1425
|
+
Buff.prototype,
|
|
1426
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
1427
|
+
{
|
|
1428
|
+
get = function(self)
|
|
1429
|
+
local ____self__138_61 = self[138]
|
|
1430
|
+
if ____self__138_61 == nil then
|
|
1431
|
+
____self__138_61 = true
|
|
1432
|
+
end
|
|
1433
|
+
return ____self__138_61
|
|
1434
|
+
end,
|
|
1435
|
+
set = function(self, destroysOnMaximumDamageAbsorbed)
|
|
1436
|
+
local ____destroysOnMaximumDamageAbsorbed_62
|
|
1437
|
+
if destroysOnMaximumDamageAbsorbed then
|
|
1438
|
+
____destroysOnMaximumDamageAbsorbed_62 = nil
|
|
1439
|
+
else
|
|
1440
|
+
____destroysOnMaximumDamageAbsorbed_62 = false
|
|
1441
|
+
end
|
|
1442
|
+
self[138] = ____destroysOnMaximumDamageAbsorbed_62
|
|
1443
|
+
end
|
|
1444
|
+
},
|
|
1445
|
+
true
|
|
1446
|
+
)
|
|
1447
|
+
__TS__SetDescriptor(
|
|
1448
|
+
Buff.prototype,
|
|
1449
|
+
"abilityCooldownFactor",
|
|
1450
|
+
{
|
|
1451
|
+
get = function(self)
|
|
1452
|
+
return self[147] or 1
|
|
1453
|
+
end,
|
|
1454
|
+
set = function(self, abilityCooldownFactor)
|
|
1455
|
+
local previousAbilityCooldownModifier = self[148]
|
|
1456
|
+
if previousAbilityCooldownModifier then
|
|
1457
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1458
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1459
|
+
end
|
|
1460
|
+
end
|
|
1461
|
+
local function modifier(ability, level, cooldown)
|
|
1462
|
+
return cooldown * abilityCooldownFactor
|
|
1463
|
+
end
|
|
1464
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1465
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1466
|
+
end
|
|
1467
|
+
self[148] = modifier
|
|
1468
|
+
self[147] = abilityCooldownFactor
|
|
1469
|
+
end
|
|
1470
|
+
},
|
|
1471
|
+
true
|
|
1472
|
+
)
|
|
1272
1473
|
Buff.createdEvent = buffCreatedEvent
|
|
1273
1474
|
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1274
1475
|
(function(self)
|
|
@@ -1327,5 +1528,8 @@ Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
|
1327
1528
|
buffCreatedEvent:addListener(function(buff)
|
|
1328
1529
|
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1329
1530
|
end)
|
|
1531
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1532
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1533
|
+
end)
|
|
1330
1534
|
end)(Buff)
|
|
1331
1535
|
return ____exports
|