warscript 0.0.1-dev.1bb9c4e → 0.0.1-dev.1c7aecc
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/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/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- 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/damage.d.ts +6 -3
- package/engine/behaviour/ability/damage.lua +24 -36
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +11 -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 +6 -1
- package/engine/behaviour/ability.lua +38 -17
- 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 +39 -3
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +54 -19
- package/engine/buff.lua +331 -165
- 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/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 +40 -27
- package/engine/internal/unit.lua +382 -264
- 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/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/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -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/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 +89 -8
- 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 +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/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,
|
|
@@ -120,11 +126,15 @@ local buffParametersKeys = {
|
|
|
120
126
|
maximumAutoAttackCount = true,
|
|
121
127
|
maximumDamageDealtEventCount = true,
|
|
122
128
|
maximumDamageReceivedEventCount = true,
|
|
129
|
+
absorbedDamageFactor = true,
|
|
130
|
+
maximumDamageAbsorbed = true,
|
|
131
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
123
132
|
uniqueGroup = true,
|
|
124
133
|
damageOnExpiration = true,
|
|
125
134
|
healingOnExpiration = true,
|
|
126
135
|
killsOnExpiration = true,
|
|
127
|
-
explodesOnExpiration = true
|
|
136
|
+
explodesOnExpiration = true,
|
|
137
|
+
abilityCooldownFactor = true
|
|
128
138
|
}
|
|
129
139
|
local function resolveEnumValue(ability, level, value)
|
|
130
140
|
if value == nil or type(value) == "number" then
|
|
@@ -175,6 +185,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
175
185
|
end
|
|
176
186
|
end
|
|
177
187
|
local buffBooleanParameters = {
|
|
188
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
178
189
|
"turnsIntoGhost",
|
|
179
190
|
"stuns",
|
|
180
191
|
"ignoresStunImmunity",
|
|
@@ -187,6 +198,7 @@ local buffNumberParameters = {
|
|
|
187
198
|
"durationIncreaseOnAutoAttack",
|
|
188
199
|
"attackSpeedIncreaseFactor",
|
|
189
200
|
"movementSpeedIncreaseFactor",
|
|
201
|
+
"manaRegenerationRateIncreaseFactor",
|
|
190
202
|
"evasionProbability",
|
|
191
203
|
"armorIncrease",
|
|
192
204
|
"damageFactor",
|
|
@@ -201,7 +213,10 @@ local buffNumberParameters = {
|
|
|
201
213
|
"healingPerInterval",
|
|
202
214
|
"healingOverDuration",
|
|
203
215
|
"damageOnExpiration",
|
|
204
|
-
"healingOnExpiration"
|
|
216
|
+
"healingOnExpiration",
|
|
217
|
+
"absorbedDamageFactor",
|
|
218
|
+
"maximumDamageAbsorbed",
|
|
219
|
+
"abilityCooldownFactor"
|
|
205
220
|
}
|
|
206
221
|
local unsuccessfulApplicationMarker = {}
|
|
207
222
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -304,7 +319,8 @@ buffHealingIntervalTimerCallback = function(buff)
|
|
|
304
319
|
source:healTarget(buff[101], healingPerInterval)
|
|
305
320
|
end
|
|
306
321
|
end
|
|
307
|
-
local
|
|
322
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
323
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
308
324
|
____exports.Buff = __TS__Class()
|
|
309
325
|
local Buff = ____exports.Buff
|
|
310
326
|
Buff.name = "Buff"
|
|
@@ -319,33 +335,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
319
335
|
local polarity
|
|
320
336
|
local resistanceType
|
|
321
337
|
local ability
|
|
338
|
+
local abilityBehavior
|
|
322
339
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
323
340
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
324
341
|
polarity = resistanceTypeOrPolarity
|
|
325
342
|
resistanceType = abilityOrParametersOrResistanceType
|
|
326
|
-
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
|
|
327
347
|
ability = parametersOrAbility
|
|
328
|
-
|
|
329
|
-
ability = nil
|
|
348
|
+
elseif parametersOrAbility ~= nil then
|
|
330
349
|
parameters = parametersOrAbility
|
|
331
350
|
end
|
|
332
351
|
else
|
|
333
352
|
typeId = typeIdOrTypeIds
|
|
334
353
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
335
354
|
resistanceType = resistanceTypeOrPolarity
|
|
336
|
-
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
|
|
337
360
|
ability = abilityOrParametersOrResistanceType
|
|
338
361
|
parameters = parametersOrAbility
|
|
339
|
-
|
|
340
|
-
ability = nil
|
|
362
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
341
363
|
parameters = abilityOrParametersOrResistanceType
|
|
364
|
+
else
|
|
365
|
+
parameters = parametersOrAbility
|
|
342
366
|
end
|
|
343
367
|
end
|
|
368
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
344
369
|
self.typeId = typeId
|
|
345
|
-
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
346
|
-
parameters = ability
|
|
347
|
-
ability = nil
|
|
348
|
-
end
|
|
349
370
|
local defaultParameters = self.constructor.defaultParameters
|
|
350
371
|
local level = parameters and parameters.level or defaultParameters.level
|
|
351
372
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -373,7 +394,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
373
394
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
374
395
|
if missProbability ~= nil then
|
|
375
396
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
376
|
-
self[
|
|
397
|
+
self[146] = missProbability
|
|
377
398
|
end
|
|
378
399
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
379
400
|
if buffByTypeId == nil then
|
|
@@ -456,24 +477,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
456
477
|
abilityTypeIds = {}
|
|
457
478
|
self._abilityTypeIds = abilityTypeIds
|
|
458
479
|
end
|
|
459
|
-
for
|
|
480
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
481
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
460
482
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
461
483
|
if addedAbility ~= nil then
|
|
462
484
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
463
485
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
467
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
468
|
-
end
|
|
469
|
-
elseif abilityParameterKey ~= "level" then
|
|
470
|
-
abilityParameterKey:setValue(
|
|
471
|
-
addedAbility,
|
|
472
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
473
|
-
)
|
|
474
|
-
end
|
|
486
|
+
if abilityParameters.isButtonVisible == false then
|
|
487
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
475
488
|
end
|
|
476
|
-
|
|
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
|
|
477
496
|
end
|
|
478
497
|
end
|
|
479
498
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -485,18 +504,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
485
504
|
self._behaviors = behaviors
|
|
486
505
|
end
|
|
487
506
|
end
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
if
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
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
|
|
495
516
|
end
|
|
496
517
|
end
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
518
|
+
if (next(additionalParameters)) ~= nil then
|
|
519
|
+
self.parameters = additionalParameters
|
|
520
|
+
end
|
|
500
521
|
end
|
|
501
522
|
end
|
|
502
523
|
if duration ~= nil and duration > 0 then
|
|
@@ -506,66 +527,73 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
506
527
|
end
|
|
507
528
|
self:onCreate()
|
|
508
529
|
self[100] = 1
|
|
530
|
+
Event.invoke(buffCreatedEvent, self)
|
|
509
531
|
end
|
|
510
|
-
function Buff.prototype.
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
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
|
|
514
539
|
end
|
|
515
|
-
function Buff.prototype.
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
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
|
|
520
546
|
end
|
|
521
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
522
547
|
end
|
|
523
548
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
524
549
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
525
550
|
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
526
551
|
else
|
|
527
552
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
528
|
-
local
|
|
529
|
-
local
|
|
530
|
-
local
|
|
553
|
+
local ____Effect_40 = Effect
|
|
554
|
+
local ____Effect_flash_41 = Effect.flash
|
|
555
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
531
556
|
self[105],
|
|
532
557
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
533
558
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
534
559
|
)
|
|
535
|
-
local
|
|
560
|
+
local ____isWidgetProvided_38
|
|
536
561
|
if isWidgetProvided then
|
|
537
|
-
|
|
562
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
538
563
|
else
|
|
539
|
-
|
|
564
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
540
565
|
end
|
|
541
|
-
__TS__SparseArrayPush(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
__TS__SparseArraySpread(
|
|
566
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
567
|
+
____Effect_flash_41(
|
|
568
|
+
____Effect_40,
|
|
569
|
+
__TS__SparseArraySpread(____array_39)
|
|
545
570
|
)
|
|
546
571
|
end
|
|
547
572
|
end
|
|
548
573
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
549
574
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
550
|
-
local
|
|
551
|
-
local
|
|
552
|
-
local
|
|
575
|
+
local ____Effect_44 = Effect
|
|
576
|
+
local ____Effect_flash_45 = Effect.flash
|
|
577
|
+
local ____array_43 = __TS__SparseArrayNew(
|
|
553
578
|
self[106],
|
|
554
579
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
555
580
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
556
581
|
)
|
|
557
|
-
local
|
|
582
|
+
local ____isWidgetProvided_42
|
|
558
583
|
if isWidgetProvided then
|
|
559
|
-
|
|
584
|
+
____isWidgetProvided_42 = duration
|
|
560
585
|
else
|
|
561
|
-
|
|
586
|
+
____isWidgetProvided_42 = widgetOrDuration
|
|
562
587
|
end
|
|
563
|
-
__TS__SparseArrayPush(
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
__TS__SparseArraySpread(
|
|
588
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
589
|
+
____Effect_flash_45(
|
|
590
|
+
____Effect_44,
|
|
591
|
+
__TS__SparseArraySpread(____array_43)
|
|
567
592
|
)
|
|
568
593
|
end
|
|
594
|
+
function Buff.prototype.expire(self)
|
|
595
|
+
expireBuff(self)
|
|
596
|
+
end
|
|
569
597
|
function Buff.prototype.onCreate(self)
|
|
570
598
|
end
|
|
571
599
|
function Buff.prototype.onDestroy(self)
|
|
@@ -594,32 +622,33 @@ function Buff.prototype.onDestroy(self)
|
|
|
594
622
|
behavior:destroy()
|
|
595
623
|
end
|
|
596
624
|
end
|
|
597
|
-
|
|
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
|
|
598
632
|
unit:decrementInvulnerabilityCounter()
|
|
599
633
|
end
|
|
600
|
-
if self[
|
|
634
|
+
if self[142] then
|
|
601
635
|
unit:decrementDisableAutoAttackCounter()
|
|
602
636
|
end
|
|
603
|
-
if self[
|
|
604
|
-
if self[
|
|
605
|
-
unit:
|
|
637
|
+
if self[140] then
|
|
638
|
+
if self[141] then
|
|
639
|
+
unit:decrementForceStunCounter()
|
|
606
640
|
end
|
|
607
641
|
unit:decrementStunCounter()
|
|
608
642
|
end
|
|
609
|
-
if self[
|
|
643
|
+
if self[139] then
|
|
610
644
|
unit:decrementGhostCounter()
|
|
611
645
|
end
|
|
612
646
|
if self._abilityTypeIds ~= nil then
|
|
613
|
-
for abilityTypeId in
|
|
647
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
614
648
|
unit:removeAbility(abilityTypeId)
|
|
615
649
|
end
|
|
616
650
|
end
|
|
617
|
-
|
|
618
|
-
for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
|
|
619
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
620
|
-
end
|
|
621
|
-
end
|
|
622
|
-
Event.invoke(buffDestroyEvent, self)
|
|
651
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
623
652
|
self[100] = 3
|
|
624
653
|
return UnitBehavior.prototype.onDestroy(self)
|
|
625
654
|
end
|
|
@@ -648,8 +677,8 @@ function Buff.apply(self, ...)
|
|
|
648
677
|
end
|
|
649
678
|
end
|
|
650
679
|
function Buff.getByTypeId(self, unit, typeId)
|
|
651
|
-
local
|
|
652
|
-
local buff =
|
|
680
|
+
local ____opt_46 = buffByTypeIdByUnit[unit]
|
|
681
|
+
local buff = ____opt_46 and ____opt_46[typeId]
|
|
653
682
|
if __TS__InstanceOf(buff, self) then
|
|
654
683
|
return buff
|
|
655
684
|
end
|
|
@@ -663,9 +692,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
663
692
|
if self[121] ~= nil then
|
|
664
693
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
665
694
|
end
|
|
666
|
-
if self[
|
|
695
|
+
if self[145] then
|
|
667
696
|
unit:explode()
|
|
668
|
-
elseif self[
|
|
697
|
+
elseif self[144] then
|
|
669
698
|
unit:kill()
|
|
670
699
|
end
|
|
671
700
|
end
|
|
@@ -720,6 +749,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
720
749
|
end
|
|
721
750
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
722
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
|
|
723
764
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
724
765
|
self[133] = damageReceivedEventCount
|
|
725
766
|
if damageReceivedEventCount == self[134] then
|
|
@@ -807,8 +848,8 @@ __TS__SetDescriptor(
|
|
|
807
848
|
return
|
|
808
849
|
end
|
|
809
850
|
self[112] = damageInterval
|
|
810
|
-
local
|
|
811
|
-
local elapsed =
|
|
851
|
+
local ____opt_49 = self._timer
|
|
852
|
+
local elapsed = ____opt_49 and ____opt_49.elapsed or 0
|
|
812
853
|
local timer = self[114]
|
|
813
854
|
if timer == nil then
|
|
814
855
|
timer = Timer:create()
|
|
@@ -887,8 +928,8 @@ __TS__SetDescriptor(
|
|
|
887
928
|
return
|
|
888
929
|
end
|
|
889
930
|
self[117] = healingInterval
|
|
890
|
-
local
|
|
891
|
-
local elapsed =
|
|
931
|
+
local ____opt_51 = self._timer
|
|
932
|
+
local elapsed = ____opt_51 and ____opt_51.elapsed or 0
|
|
892
933
|
local timer = self[119]
|
|
893
934
|
if timer == nil then
|
|
894
935
|
timer = Timer:create()
|
|
@@ -974,19 +1015,19 @@ __TS__SetDescriptor(
|
|
|
974
1015
|
"turnsIntoGhost",
|
|
975
1016
|
{
|
|
976
1017
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
1018
|
+
local ____self__139_53 = self[139]
|
|
1019
|
+
if ____self__139_53 == nil then
|
|
1020
|
+
____self__139_53 = false
|
|
980
1021
|
end
|
|
981
|
-
return
|
|
1022
|
+
return ____self__139_53
|
|
982
1023
|
end,
|
|
983
1024
|
set = function(self, turnsIntoGhost)
|
|
984
|
-
if not turnsIntoGhost and self[
|
|
1025
|
+
if not turnsIntoGhost and self[139] then
|
|
985
1026
|
self.object:decrementGhostCounter()
|
|
986
|
-
self[
|
|
987
|
-
elseif turnsIntoGhost and not self[
|
|
1027
|
+
self[139] = nil
|
|
1028
|
+
elseif turnsIntoGhost and not self[139] then
|
|
988
1029
|
self.object:incrementGhostCounter()
|
|
989
|
-
self[
|
|
1030
|
+
self[139] = true
|
|
990
1031
|
end
|
|
991
1032
|
end
|
|
992
1033
|
},
|
|
@@ -997,25 +1038,25 @@ __TS__SetDescriptor(
|
|
|
997
1038
|
"stuns",
|
|
998
1039
|
{
|
|
999
1040
|
get = function(self)
|
|
1000
|
-
local
|
|
1001
|
-
if
|
|
1002
|
-
|
|
1041
|
+
local ____self__140_54 = self[140]
|
|
1042
|
+
if ____self__140_54 == nil then
|
|
1043
|
+
____self__140_54 = false
|
|
1003
1044
|
end
|
|
1004
|
-
return
|
|
1045
|
+
return ____self__140_54
|
|
1005
1046
|
end,
|
|
1006
1047
|
set = function(self, stuns)
|
|
1007
|
-
if not stuns and self[
|
|
1008
|
-
if self[
|
|
1009
|
-
self.object:
|
|
1048
|
+
if not stuns and self[140] then
|
|
1049
|
+
if self[141] then
|
|
1050
|
+
self.object:decrementForceStunCounter()
|
|
1010
1051
|
end
|
|
1011
1052
|
self.object:decrementStunCounter()
|
|
1012
|
-
self[
|
|
1013
|
-
elseif stuns and not self[
|
|
1014
|
-
if self[
|
|
1015
|
-
self.object:
|
|
1053
|
+
self[140] = nil
|
|
1054
|
+
elseif stuns and not self[140] then
|
|
1055
|
+
if self[141] then
|
|
1056
|
+
self.object:incrementForceStunCounter()
|
|
1016
1057
|
end
|
|
1017
1058
|
self.object:incrementStunCounter()
|
|
1018
|
-
self[
|
|
1059
|
+
self[140] = true
|
|
1019
1060
|
end
|
|
1020
1061
|
end
|
|
1021
1062
|
},
|
|
@@ -1026,23 +1067,23 @@ __TS__SetDescriptor(
|
|
|
1026
1067
|
"ignoresStunImmunity",
|
|
1027
1068
|
{
|
|
1028
1069
|
get = function(self)
|
|
1029
|
-
local
|
|
1030
|
-
if
|
|
1031
|
-
|
|
1070
|
+
local ____self__141_55 = self[141]
|
|
1071
|
+
if ____self__141_55 == nil then
|
|
1072
|
+
____self__141_55 = false
|
|
1032
1073
|
end
|
|
1033
|
-
return
|
|
1074
|
+
return ____self__141_55
|
|
1034
1075
|
end,
|
|
1035
1076
|
set = function(self, ignoresStunImmunity)
|
|
1036
|
-
if not ignoresStunImmunity and self[
|
|
1037
|
-
if self[
|
|
1038
|
-
self.object:
|
|
1077
|
+
if not ignoresStunImmunity and self[141] then
|
|
1078
|
+
if self[140] then
|
|
1079
|
+
self.object:decrementForceStunCounter()
|
|
1039
1080
|
end
|
|
1040
|
-
self[
|
|
1041
|
-
elseif ignoresStunImmunity and not self[
|
|
1042
|
-
if self[
|
|
1043
|
-
self.object:
|
|
1081
|
+
self[141] = nil
|
|
1082
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1083
|
+
if self[140] then
|
|
1084
|
+
self.object:incrementForceStunCounter()
|
|
1044
1085
|
end
|
|
1045
|
-
self[
|
|
1086
|
+
self[141] = true
|
|
1046
1087
|
end
|
|
1047
1088
|
end
|
|
1048
1089
|
},
|
|
@@ -1053,19 +1094,19 @@ __TS__SetDescriptor(
|
|
|
1053
1094
|
"disablesAutoAttack",
|
|
1054
1095
|
{
|
|
1055
1096
|
get = function(self)
|
|
1056
|
-
local
|
|
1057
|
-
if
|
|
1058
|
-
|
|
1097
|
+
local ____self__142_56 = self[142]
|
|
1098
|
+
if ____self__142_56 == nil then
|
|
1099
|
+
____self__142_56 = false
|
|
1059
1100
|
end
|
|
1060
|
-
return
|
|
1101
|
+
return ____self__142_56
|
|
1061
1102
|
end,
|
|
1062
1103
|
set = function(self, disablesAutoAttack)
|
|
1063
|
-
if not disablesAutoAttack and self[
|
|
1104
|
+
if not disablesAutoAttack and self[142] then
|
|
1064
1105
|
self.object:decrementDisableAutoAttackCounter()
|
|
1065
|
-
self[
|
|
1066
|
-
elseif disablesAutoAttack and not self[
|
|
1106
|
+
self[142] = nil
|
|
1107
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1067
1108
|
self.object:incrementDisableAutoAttackCounter()
|
|
1068
|
-
self[
|
|
1109
|
+
self[142] = true
|
|
1069
1110
|
end
|
|
1070
1111
|
end
|
|
1071
1112
|
},
|
|
@@ -1076,19 +1117,19 @@ __TS__SetDescriptor(
|
|
|
1076
1117
|
"providesInvulnerability",
|
|
1077
1118
|
{
|
|
1078
1119
|
get = function(self)
|
|
1079
|
-
local
|
|
1080
|
-
if
|
|
1081
|
-
|
|
1120
|
+
local ____self__143_57 = self[143]
|
|
1121
|
+
if ____self__143_57 == nil then
|
|
1122
|
+
____self__143_57 = false
|
|
1082
1123
|
end
|
|
1083
|
-
return
|
|
1124
|
+
return ____self__143_57
|
|
1084
1125
|
end,
|
|
1085
1126
|
set = function(self, providesInvulnerability)
|
|
1086
|
-
if not providesInvulnerability and self[
|
|
1127
|
+
if not providesInvulnerability and self[143] then
|
|
1087
1128
|
self.object:decrementInvulnerabilityCounter()
|
|
1088
|
-
self[
|
|
1089
|
-
elseif providesInvulnerability and not self[
|
|
1129
|
+
self[143] = nil
|
|
1130
|
+
elseif providesInvulnerability and not self[143] then
|
|
1090
1131
|
self.object:incrementInvulnerabilityCounter()
|
|
1091
|
-
self[
|
|
1132
|
+
self[143] = true
|
|
1092
1133
|
end
|
|
1093
1134
|
end
|
|
1094
1135
|
},
|
|
@@ -1099,17 +1140,17 @@ __TS__SetDescriptor(
|
|
|
1099
1140
|
"killsOnExpiration",
|
|
1100
1141
|
{
|
|
1101
1142
|
get = function(self)
|
|
1102
|
-
local
|
|
1103
|
-
if
|
|
1104
|
-
|
|
1143
|
+
local ____self__144_58 = self[144]
|
|
1144
|
+
if ____self__144_58 == nil then
|
|
1145
|
+
____self__144_58 = false
|
|
1105
1146
|
end
|
|
1106
|
-
return
|
|
1147
|
+
return ____self__144_58
|
|
1107
1148
|
end,
|
|
1108
1149
|
set = function(self, killsOnExpiration)
|
|
1109
|
-
if not killsOnExpiration and self[
|
|
1110
|
-
self[
|
|
1111
|
-
elseif killsOnExpiration and not self[
|
|
1112
|
-
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
|
|
1113
1154
|
end
|
|
1114
1155
|
end
|
|
1115
1156
|
},
|
|
@@ -1120,17 +1161,17 @@ __TS__SetDescriptor(
|
|
|
1120
1161
|
"explodesOnExpiration",
|
|
1121
1162
|
{
|
|
1122
1163
|
get = function(self)
|
|
1123
|
-
local
|
|
1124
|
-
if
|
|
1125
|
-
|
|
1164
|
+
local ____self__145_59 = self[145]
|
|
1165
|
+
if ____self__145_59 == nil then
|
|
1166
|
+
____self__145_59 = false
|
|
1126
1167
|
end
|
|
1127
|
-
return
|
|
1168
|
+
return ____self__145_59
|
|
1128
1169
|
end,
|
|
1129
1170
|
set = function(self, killsOnExpiration)
|
|
1130
|
-
if not killsOnExpiration and self[
|
|
1131
|
-
self[
|
|
1132
|
-
elseif killsOnExpiration and not self[
|
|
1133
|
-
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
|
|
1134
1175
|
end
|
|
1135
1176
|
end
|
|
1136
1177
|
},
|
|
@@ -1239,12 +1280,39 @@ __TS__SetDescriptor(
|
|
|
1239
1280
|
},
|
|
1240
1281
|
true
|
|
1241
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
|
+
)
|
|
1242
1296
|
__TS__SetDescriptor(
|
|
1243
1297
|
Buff.prototype,
|
|
1244
1298
|
"duration",
|
|
1245
|
-
{
|
|
1246
|
-
|
|
1247
|
-
|
|
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
|
+
},
|
|
1248
1316
|
true
|
|
1249
1317
|
)
|
|
1250
1318
|
__TS__SetDescriptor(
|
|
@@ -1252,13 +1320,13 @@ __TS__SetDescriptor(
|
|
|
1252
1320
|
"remainingDuration",
|
|
1253
1321
|
{
|
|
1254
1322
|
get = function(self)
|
|
1255
|
-
local
|
|
1256
|
-
return
|
|
1323
|
+
local ____opt_60 = self._timer
|
|
1324
|
+
return ____opt_60 and ____opt_60.remaining or 0
|
|
1257
1325
|
end,
|
|
1258
1326
|
set = function(self, remainingDuration)
|
|
1259
|
-
local
|
|
1260
|
-
local
|
|
1261
|
-
local remainingDurationDelta =
|
|
1327
|
+
local ____remainingDuration_64 = remainingDuration
|
|
1328
|
+
local ____opt_62 = self._timer
|
|
1329
|
+
local remainingDurationDelta = ____remainingDuration_64 - (____opt_62 and ____opt_62.remaining or 0)
|
|
1262
1330
|
if remainingDurationDelta ~= 0 then
|
|
1263
1331
|
self[103] = self[103] + remainingDurationDelta
|
|
1264
1332
|
if remainingDuration <= 0 then
|
|
@@ -1273,7 +1341,7 @@ __TS__SetDescriptor(
|
|
|
1273
1341
|
remainingDuration,
|
|
1274
1342
|
self._spellStealPriority,
|
|
1275
1343
|
self._learnLevelMinimum,
|
|
1276
|
-
self[
|
|
1344
|
+
self[146]
|
|
1277
1345
|
) then
|
|
1278
1346
|
local timer = self._timer
|
|
1279
1347
|
if timer == nil then
|
|
@@ -1288,7 +1356,99 @@ __TS__SetDescriptor(
|
|
|
1288
1356
|
},
|
|
1289
1357
|
true
|
|
1290
1358
|
)
|
|
1291
|
-
|
|
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;
|
|
1292
1452
|
(function(self)
|
|
1293
1453
|
local function destroyBuffIfNeeded(buff)
|
|
1294
1454
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1342,5 +1502,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1342
1502
|
____exports.checkBuffs(target)
|
|
1343
1503
|
end
|
|
1344
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)
|
|
1345
1511
|
end)(Buff)
|
|
1346
1512
|
return ____exports
|