warscript 0.0.1-dev.32c305a → 0.0.1-dev.32e76f5
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/core/types/frame.lua +24 -21
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.lua +1 -1
- 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 +6 -4
- 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/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +2 -1
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +11 -6
- package/engine/behaviour/ability.lua +37 -16
- 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 +26 -5
- package/engine/behaviour/unit.lua +180 -27
- package/engine/buff.d.ts +65 -21
- package/engine/buff.lua +369 -181
- package/engine/internal/ability.d.ts +3 -1
- package/engine/internal/ability.lua +34 -11
- package/engine/internal/item/ability.lua +51 -1
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +14 -15
- package/engine/internal/item.lua +70 -52
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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/armor-bonus.d.ts +2 -0
- 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 +35 -5
- package/engine/internal/unit/ability.lua +96 -21
- 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/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+bonus.lua +3 -3
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +20 -24
- package/engine/internal/unit.lua +232 -240
- 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/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 +89 -8
- 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 +15 -2
- package/engine/object-data/entry/unit-type.lua +135 -33
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +31 -5
- package/engine/object-field/unit.lua +95 -0
- package/engine/object-field.d.ts +17 -6
- package/engine/object-field.lua +291 -134
- 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/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/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +8 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +7 -0
- package/utility/functions.lua +12 -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 +40 -1
- package/utility/lua-maps.d.ts +12 -2
- package/utility/lua-maps.lua +37 -2
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +4 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -26
- package/core/types/order.lua +0 -65
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.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
|
|
@@ -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 = {}
|
|
@@ -98,9 +103,11 @@ local buffParametersKeys = {
|
|
|
98
103
|
damageIncrease = true,
|
|
99
104
|
damageIncreaseFactor = true,
|
|
100
105
|
armorIncrease = true,
|
|
101
|
-
|
|
106
|
+
maxHealthIncrease = true,
|
|
107
|
+
maxManaIncrease = true,
|
|
102
108
|
attackSpeedIncreaseFactor = true,
|
|
103
109
|
movementSpeedIncreaseFactor = true,
|
|
110
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
104
111
|
evasionProbability = true,
|
|
105
112
|
missProbability = true,
|
|
106
113
|
damageFactor = true,
|
|
@@ -120,11 +127,15 @@ local buffParametersKeys = {
|
|
|
120
127
|
maximumAutoAttackCount = true,
|
|
121
128
|
maximumDamageDealtEventCount = true,
|
|
122
129
|
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
123
133
|
uniqueGroup = true,
|
|
124
134
|
damageOnExpiration = true,
|
|
125
135
|
healingOnExpiration = true,
|
|
126
136
|
killsOnExpiration = true,
|
|
127
|
-
explodesOnExpiration = true
|
|
137
|
+
explodesOnExpiration = true,
|
|
138
|
+
abilityCooldownFactor = true
|
|
128
139
|
}
|
|
129
140
|
local function resolveEnumValue(ability, level, value)
|
|
130
141
|
if value == nil or type(value) == "number" then
|
|
@@ -175,6 +186,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
175
186
|
end
|
|
176
187
|
end
|
|
177
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
178
190
|
"turnsIntoGhost",
|
|
179
191
|
"stuns",
|
|
180
192
|
"ignoresStunImmunity",
|
|
@@ -187,8 +199,11 @@ local buffNumberParameters = {
|
|
|
187
199
|
"durationIncreaseOnAutoAttack",
|
|
188
200
|
"attackSpeedIncreaseFactor",
|
|
189
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
190
203
|
"evasionProbability",
|
|
191
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
192
207
|
"damageFactor",
|
|
193
208
|
"receivedDamageFactor",
|
|
194
209
|
"maximumAutoAttackCount",
|
|
@@ -201,7 +216,10 @@ local buffNumberParameters = {
|
|
|
201
216
|
"healingPerInterval",
|
|
202
217
|
"healingOverDuration",
|
|
203
218
|
"damageOnExpiration",
|
|
204
|
-
"healingOnExpiration"
|
|
219
|
+
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
222
|
+
"abilityCooldownFactor"
|
|
205
223
|
}
|
|
206
224
|
local unsuccessfulApplicationMarker = {}
|
|
207
225
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -304,7 +322,8 @@ buffHealingIntervalTimerCallback = function(buff)
|
|
|
304
322
|
source:healTarget(buff[101], healingPerInterval)
|
|
305
323
|
end
|
|
306
324
|
end
|
|
307
|
-
local
|
|
325
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
326
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
308
327
|
____exports.Buff = __TS__Class()
|
|
309
328
|
local Buff = ____exports.Buff
|
|
310
329
|
Buff.name = "Buff"
|
|
@@ -319,33 +338,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
319
338
|
local polarity
|
|
320
339
|
local resistanceType
|
|
321
340
|
local ability
|
|
341
|
+
local abilityBehavior
|
|
322
342
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
323
343
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
324
344
|
polarity = resistanceTypeOrPolarity
|
|
325
345
|
resistanceType = abilityOrParametersOrResistanceType
|
|
326
|
-
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
|
|
327
350
|
ability = parametersOrAbility
|
|
328
|
-
|
|
329
|
-
ability = nil
|
|
351
|
+
elseif parametersOrAbility ~= nil then
|
|
330
352
|
parameters = parametersOrAbility
|
|
331
353
|
end
|
|
332
354
|
else
|
|
333
355
|
typeId = typeIdOrTypeIds
|
|
334
356
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
335
357
|
resistanceType = resistanceTypeOrPolarity
|
|
336
|
-
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
|
|
337
363
|
ability = abilityOrParametersOrResistanceType
|
|
338
364
|
parameters = parametersOrAbility
|
|
339
|
-
|
|
340
|
-
ability = nil
|
|
365
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
341
366
|
parameters = abilityOrParametersOrResistanceType
|
|
367
|
+
else
|
|
368
|
+
parameters = parametersOrAbility
|
|
342
369
|
end
|
|
343
370
|
end
|
|
371
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
344
372
|
self.typeId = typeId
|
|
345
|
-
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
346
|
-
parameters = ability
|
|
347
|
-
ability = nil
|
|
348
|
-
end
|
|
349
373
|
local defaultParameters = self.constructor.defaultParameters
|
|
350
374
|
local level = parameters and parameters.level or defaultParameters.level
|
|
351
375
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -373,7 +397,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
373
397
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
374
398
|
if missProbability ~= nil then
|
|
375
399
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
376
|
-
self[
|
|
400
|
+
self[146] = missProbability
|
|
377
401
|
end
|
|
378
402
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
379
403
|
if buffByTypeId == nil then
|
|
@@ -456,24 +480,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
456
480
|
abilityTypeIds = {}
|
|
457
481
|
self._abilityTypeIds = abilityTypeIds
|
|
458
482
|
end
|
|
459
|
-
for
|
|
483
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
484
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
460
485
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
461
486
|
if addedAbility ~= nil then
|
|
462
487
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
463
488
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
473
|
-
)
|
|
474
|
-
end
|
|
489
|
+
if abilityParameters.isButtonVisible == false then
|
|
490
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
491
|
+
end
|
|
492
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
493
|
+
field[1]:setValue(
|
|
494
|
+
addedAbility,
|
|
495
|
+
resolveNumberValue(ability, level, field[2])
|
|
496
|
+
)
|
|
475
497
|
end
|
|
476
|
-
abilityTypeIds[
|
|
498
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
477
499
|
end
|
|
478
500
|
end
|
|
479
501
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -485,18 +507,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
485
507
|
self._behaviors = behaviors
|
|
486
508
|
end
|
|
487
509
|
end
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
if
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
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
|
|
495
519
|
end
|
|
496
520
|
end
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
521
|
+
if (next(additionalParameters)) ~= nil then
|
|
522
|
+
self.parameters = additionalParameters
|
|
523
|
+
end
|
|
500
524
|
end
|
|
501
525
|
end
|
|
502
526
|
if duration ~= nil and duration > 0 then
|
|
@@ -506,65 +530,65 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
506
530
|
end
|
|
507
531
|
self:onCreate()
|
|
508
532
|
self[100] = 1
|
|
533
|
+
Event.invoke(buffCreatedEvent, self)
|
|
509
534
|
end
|
|
510
|
-
function Buff.prototype.
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
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
|
|
514
542
|
end
|
|
515
|
-
function Buff.prototype.
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
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
|
|
520
549
|
end
|
|
521
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
522
550
|
end
|
|
523
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)
|
|
524
570
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
525
|
-
Effect:flash(
|
|
571
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
526
572
|
else
|
|
527
573
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
528
|
-
local
|
|
529
|
-
local
|
|
530
|
-
local
|
|
531
|
-
|
|
532
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
533
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
534
|
-
)
|
|
535
|
-
local ____isWidgetProvided_40
|
|
574
|
+
local ____Effect_40 = Effect
|
|
575
|
+
local ____Effect_flash_41 = Effect.flash
|
|
576
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
577
|
+
local ____isWidgetProvided_38
|
|
536
578
|
if isWidgetProvided then
|
|
537
|
-
|
|
579
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
538
580
|
else
|
|
539
|
-
|
|
581
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
540
582
|
end
|
|
541
|
-
__TS__SparseArrayPush(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
__TS__SparseArraySpread(
|
|
583
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
584
|
+
____Effect_flash_41(
|
|
585
|
+
____Effect_40,
|
|
586
|
+
__TS__SparseArraySpread(____array_39)
|
|
545
587
|
)
|
|
546
588
|
end
|
|
547
589
|
end
|
|
548
|
-
function Buff.prototype.
|
|
549
|
-
|
|
550
|
-
local ____Effect_46 = Effect
|
|
551
|
-
local ____Effect_flash_47 = Effect.flash
|
|
552
|
-
local ____array_45 = __TS__SparseArrayNew(
|
|
553
|
-
self[106],
|
|
554
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
555
|
-
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
556
|
-
)
|
|
557
|
-
local ____isWidgetProvided_44
|
|
558
|
-
if isWidgetProvided then
|
|
559
|
-
____isWidgetProvided_44 = duration
|
|
560
|
-
else
|
|
561
|
-
____isWidgetProvided_44 = widgetOrDuration
|
|
562
|
-
end
|
|
563
|
-
__TS__SparseArrayPush(____array_45, ____isWidgetProvided_44)
|
|
564
|
-
____Effect_flash_47(
|
|
565
|
-
____Effect_46,
|
|
566
|
-
__TS__SparseArraySpread(____array_45)
|
|
567
|
-
)
|
|
590
|
+
function Buff.prototype.expire(self)
|
|
591
|
+
expireBuff(self)
|
|
568
592
|
end
|
|
569
593
|
function Buff.prototype.onCreate(self)
|
|
570
594
|
end
|
|
@@ -594,32 +618,33 @@ function Buff.prototype.onDestroy(self)
|
|
|
594
618
|
behavior:destroy()
|
|
595
619
|
end
|
|
596
620
|
end
|
|
597
|
-
|
|
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
|
|
598
628
|
unit:decrementInvulnerabilityCounter()
|
|
599
629
|
end
|
|
600
|
-
if self[
|
|
630
|
+
if self[142] then
|
|
601
631
|
unit:decrementDisableAutoAttackCounter()
|
|
602
632
|
end
|
|
603
|
-
if self[
|
|
604
|
-
if self[
|
|
605
|
-
unit:
|
|
633
|
+
if self[140] then
|
|
634
|
+
if self[141] then
|
|
635
|
+
unit:decrementForceStunCounter()
|
|
606
636
|
end
|
|
607
637
|
unit:decrementStunCounter()
|
|
608
638
|
end
|
|
609
|
-
if self[
|
|
639
|
+
if self[139] then
|
|
610
640
|
unit:decrementGhostCounter()
|
|
611
641
|
end
|
|
612
642
|
if self._abilityTypeIds ~= nil then
|
|
613
|
-
for abilityTypeId in
|
|
643
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
614
644
|
unit:removeAbility(abilityTypeId)
|
|
615
645
|
end
|
|
616
646
|
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)
|
|
647
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
623
648
|
self[100] = 3
|
|
624
649
|
return UnitBehavior.prototype.onDestroy(self)
|
|
625
650
|
end
|
|
@@ -648,8 +673,8 @@ function Buff.apply(self, ...)
|
|
|
648
673
|
end
|
|
649
674
|
end
|
|
650
675
|
function Buff.getByTypeId(self, unit, typeId)
|
|
651
|
-
local
|
|
652
|
-
local buff =
|
|
676
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
677
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
653
678
|
if __TS__InstanceOf(buff, self) then
|
|
654
679
|
return buff
|
|
655
680
|
end
|
|
@@ -663,9 +688,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
663
688
|
if self[121] ~= nil then
|
|
664
689
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
665
690
|
end
|
|
666
|
-
if self[
|
|
691
|
+
if self[145] then
|
|
667
692
|
unit:explode()
|
|
668
|
-
elseif self[
|
|
693
|
+
elseif self[144] then
|
|
669
694
|
unit:kill()
|
|
670
695
|
end
|
|
671
696
|
end
|
|
@@ -720,6 +745,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
720
745
|
end
|
|
721
746
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
722
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
|
|
723
760
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
724
761
|
self[133] = damageReceivedEventCount
|
|
725
762
|
if damageReceivedEventCount == self[134] then
|
|
@@ -807,8 +844,8 @@ __TS__SetDescriptor(
|
|
|
807
844
|
return
|
|
808
845
|
end
|
|
809
846
|
self[112] = damageInterval
|
|
810
|
-
local
|
|
811
|
-
local elapsed =
|
|
847
|
+
local ____opt_45 = self._timer
|
|
848
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
812
849
|
local timer = self[114]
|
|
813
850
|
if timer == nil then
|
|
814
851
|
timer = Timer:create()
|
|
@@ -887,8 +924,8 @@ __TS__SetDescriptor(
|
|
|
887
924
|
return
|
|
888
925
|
end
|
|
889
926
|
self[117] = healingInterval
|
|
890
|
-
local
|
|
891
|
-
local elapsed =
|
|
927
|
+
local ____opt_47 = self._timer
|
|
928
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
892
929
|
local timer = self[119]
|
|
893
930
|
if timer == nil then
|
|
894
931
|
timer = Timer:create()
|
|
@@ -969,24 +1006,50 @@ __TS__SetDescriptor(
|
|
|
969
1006
|
},
|
|
970
1007
|
true
|
|
971
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
|
+
)
|
|
972
1035
|
__TS__SetDescriptor(
|
|
973
1036
|
Buff.prototype,
|
|
974
1037
|
"turnsIntoGhost",
|
|
975
1038
|
{
|
|
976
1039
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
1040
|
+
local ____self__139_49 = self[139]
|
|
1041
|
+
if ____self__139_49 == nil then
|
|
1042
|
+
____self__139_49 = false
|
|
980
1043
|
end
|
|
981
|
-
return
|
|
1044
|
+
return ____self__139_49
|
|
982
1045
|
end,
|
|
983
1046
|
set = function(self, turnsIntoGhost)
|
|
984
|
-
if not turnsIntoGhost and self[
|
|
1047
|
+
if not turnsIntoGhost and self[139] then
|
|
985
1048
|
self.object:decrementGhostCounter()
|
|
986
|
-
self[
|
|
987
|
-
elseif turnsIntoGhost and not self[
|
|
1049
|
+
self[139] = nil
|
|
1050
|
+
elseif turnsIntoGhost and not self[139] then
|
|
988
1051
|
self.object:incrementGhostCounter()
|
|
989
|
-
self[
|
|
1052
|
+
self[139] = true
|
|
990
1053
|
end
|
|
991
1054
|
end
|
|
992
1055
|
},
|
|
@@ -997,25 +1060,25 @@ __TS__SetDescriptor(
|
|
|
997
1060
|
"stuns",
|
|
998
1061
|
{
|
|
999
1062
|
get = function(self)
|
|
1000
|
-
local
|
|
1001
|
-
if
|
|
1002
|
-
|
|
1063
|
+
local ____self__140_50 = self[140]
|
|
1064
|
+
if ____self__140_50 == nil then
|
|
1065
|
+
____self__140_50 = false
|
|
1003
1066
|
end
|
|
1004
|
-
return
|
|
1067
|
+
return ____self__140_50
|
|
1005
1068
|
end,
|
|
1006
1069
|
set = function(self, stuns)
|
|
1007
|
-
if not stuns and self[
|
|
1008
|
-
if self[
|
|
1009
|
-
self.object:
|
|
1070
|
+
if not stuns and self[140] then
|
|
1071
|
+
if self[141] then
|
|
1072
|
+
self.object:decrementForceStunCounter()
|
|
1010
1073
|
end
|
|
1011
1074
|
self.object:decrementStunCounter()
|
|
1012
|
-
self[
|
|
1013
|
-
elseif stuns and not self[
|
|
1014
|
-
if self[
|
|
1015
|
-
self.object:
|
|
1075
|
+
self[140] = nil
|
|
1076
|
+
elseif stuns and not self[140] then
|
|
1077
|
+
if self[141] then
|
|
1078
|
+
self.object:incrementForceStunCounter()
|
|
1016
1079
|
end
|
|
1017
1080
|
self.object:incrementStunCounter()
|
|
1018
|
-
self[
|
|
1081
|
+
self[140] = true
|
|
1019
1082
|
end
|
|
1020
1083
|
end
|
|
1021
1084
|
},
|
|
@@ -1026,23 +1089,23 @@ __TS__SetDescriptor(
|
|
|
1026
1089
|
"ignoresStunImmunity",
|
|
1027
1090
|
{
|
|
1028
1091
|
get = function(self)
|
|
1029
|
-
local
|
|
1030
|
-
if
|
|
1031
|
-
|
|
1092
|
+
local ____self__141_51 = self[141]
|
|
1093
|
+
if ____self__141_51 == nil then
|
|
1094
|
+
____self__141_51 = false
|
|
1032
1095
|
end
|
|
1033
|
-
return
|
|
1096
|
+
return ____self__141_51
|
|
1034
1097
|
end,
|
|
1035
1098
|
set = function(self, ignoresStunImmunity)
|
|
1036
|
-
if not ignoresStunImmunity and self[
|
|
1037
|
-
if self[
|
|
1038
|
-
self.object:
|
|
1099
|
+
if not ignoresStunImmunity and self[141] then
|
|
1100
|
+
if self[140] then
|
|
1101
|
+
self.object:decrementForceStunCounter()
|
|
1039
1102
|
end
|
|
1040
|
-
self[
|
|
1041
|
-
elseif ignoresStunImmunity and not self[
|
|
1042
|
-
if self[
|
|
1043
|
-
self.object:
|
|
1103
|
+
self[141] = nil
|
|
1104
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1105
|
+
if self[140] then
|
|
1106
|
+
self.object:incrementForceStunCounter()
|
|
1044
1107
|
end
|
|
1045
|
-
self[
|
|
1108
|
+
self[141] = true
|
|
1046
1109
|
end
|
|
1047
1110
|
end
|
|
1048
1111
|
},
|
|
@@ -1053,19 +1116,19 @@ __TS__SetDescriptor(
|
|
|
1053
1116
|
"disablesAutoAttack",
|
|
1054
1117
|
{
|
|
1055
1118
|
get = function(self)
|
|
1056
|
-
local
|
|
1057
|
-
if
|
|
1058
|
-
|
|
1119
|
+
local ____self__142_52 = self[142]
|
|
1120
|
+
if ____self__142_52 == nil then
|
|
1121
|
+
____self__142_52 = false
|
|
1059
1122
|
end
|
|
1060
|
-
return
|
|
1123
|
+
return ____self__142_52
|
|
1061
1124
|
end,
|
|
1062
1125
|
set = function(self, disablesAutoAttack)
|
|
1063
|
-
if not disablesAutoAttack and self[
|
|
1126
|
+
if not disablesAutoAttack and self[142] then
|
|
1064
1127
|
self.object:decrementDisableAutoAttackCounter()
|
|
1065
|
-
self[
|
|
1066
|
-
elseif disablesAutoAttack and not self[
|
|
1128
|
+
self[142] = nil
|
|
1129
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1067
1130
|
self.object:incrementDisableAutoAttackCounter()
|
|
1068
|
-
self[
|
|
1131
|
+
self[142] = true
|
|
1069
1132
|
end
|
|
1070
1133
|
end
|
|
1071
1134
|
},
|
|
@@ -1076,19 +1139,19 @@ __TS__SetDescriptor(
|
|
|
1076
1139
|
"providesInvulnerability",
|
|
1077
1140
|
{
|
|
1078
1141
|
get = function(self)
|
|
1079
|
-
local
|
|
1080
|
-
if
|
|
1081
|
-
|
|
1142
|
+
local ____self__143_53 = self[143]
|
|
1143
|
+
if ____self__143_53 == nil then
|
|
1144
|
+
____self__143_53 = false
|
|
1082
1145
|
end
|
|
1083
|
-
return
|
|
1146
|
+
return ____self__143_53
|
|
1084
1147
|
end,
|
|
1085
1148
|
set = function(self, providesInvulnerability)
|
|
1086
|
-
if not providesInvulnerability and self[
|
|
1149
|
+
if not providesInvulnerability and self[143] then
|
|
1087
1150
|
self.object:decrementInvulnerabilityCounter()
|
|
1088
|
-
self[
|
|
1089
|
-
elseif providesInvulnerability and not self[
|
|
1151
|
+
self[143] = nil
|
|
1152
|
+
elseif providesInvulnerability and not self[143] then
|
|
1090
1153
|
self.object:incrementInvulnerabilityCounter()
|
|
1091
|
-
self[
|
|
1154
|
+
self[143] = true
|
|
1092
1155
|
end
|
|
1093
1156
|
end
|
|
1094
1157
|
},
|
|
@@ -1099,17 +1162,17 @@ __TS__SetDescriptor(
|
|
|
1099
1162
|
"killsOnExpiration",
|
|
1100
1163
|
{
|
|
1101
1164
|
get = function(self)
|
|
1102
|
-
local
|
|
1103
|
-
if
|
|
1104
|
-
|
|
1165
|
+
local ____self__144_54 = self[144]
|
|
1166
|
+
if ____self__144_54 == nil then
|
|
1167
|
+
____self__144_54 = false
|
|
1105
1168
|
end
|
|
1106
|
-
return
|
|
1169
|
+
return ____self__144_54
|
|
1107
1170
|
end,
|
|
1108
1171
|
set = function(self, killsOnExpiration)
|
|
1109
|
-
if not killsOnExpiration and self[
|
|
1110
|
-
self[
|
|
1111
|
-
elseif killsOnExpiration and not self[
|
|
1112
|
-
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
|
|
1113
1176
|
end
|
|
1114
1177
|
end
|
|
1115
1178
|
},
|
|
@@ -1120,17 +1183,17 @@ __TS__SetDescriptor(
|
|
|
1120
1183
|
"explodesOnExpiration",
|
|
1121
1184
|
{
|
|
1122
1185
|
get = function(self)
|
|
1123
|
-
local
|
|
1124
|
-
if
|
|
1125
|
-
|
|
1186
|
+
local ____self__145_55 = self[145]
|
|
1187
|
+
if ____self__145_55 == nil then
|
|
1188
|
+
____self__145_55 = false
|
|
1126
1189
|
end
|
|
1127
|
-
return
|
|
1190
|
+
return ____self__145_55
|
|
1128
1191
|
end,
|
|
1129
1192
|
set = function(self, killsOnExpiration)
|
|
1130
|
-
if not killsOnExpiration and self[
|
|
1131
|
-
self[
|
|
1132
|
-
elseif killsOnExpiration and not self[
|
|
1133
|
-
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
|
|
1134
1197
|
end
|
|
1135
1198
|
end
|
|
1136
1199
|
},
|
|
@@ -1239,12 +1302,39 @@ __TS__SetDescriptor(
|
|
|
1239
1302
|
},
|
|
1240
1303
|
true
|
|
1241
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
|
+
)
|
|
1242
1318
|
__TS__SetDescriptor(
|
|
1243
1319
|
Buff.prototype,
|
|
1244
1320
|
"duration",
|
|
1245
|
-
{
|
|
1246
|
-
|
|
1247
|
-
|
|
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
|
+
},
|
|
1248
1338
|
true
|
|
1249
1339
|
)
|
|
1250
1340
|
__TS__SetDescriptor(
|
|
@@ -1252,13 +1342,13 @@ __TS__SetDescriptor(
|
|
|
1252
1342
|
"remainingDuration",
|
|
1253
1343
|
{
|
|
1254
1344
|
get = function(self)
|
|
1255
|
-
local
|
|
1256
|
-
return
|
|
1345
|
+
local ____opt_56 = self._timer
|
|
1346
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1257
1347
|
end,
|
|
1258
1348
|
set = function(self, remainingDuration)
|
|
1259
|
-
local
|
|
1260
|
-
local
|
|
1261
|
-
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)
|
|
1262
1352
|
if remainingDurationDelta ~= 0 then
|
|
1263
1353
|
self[103] = self[103] + remainingDurationDelta
|
|
1264
1354
|
if remainingDuration <= 0 then
|
|
@@ -1273,7 +1363,7 @@ __TS__SetDescriptor(
|
|
|
1273
1363
|
remainingDuration,
|
|
1274
1364
|
self._spellStealPriority,
|
|
1275
1365
|
self._learnLevelMinimum,
|
|
1276
|
-
self[
|
|
1366
|
+
self[146]
|
|
1277
1367
|
) then
|
|
1278
1368
|
local timer = self._timer
|
|
1279
1369
|
if timer == nil then
|
|
@@ -1288,7 +1378,99 @@ __TS__SetDescriptor(
|
|
|
1288
1378
|
},
|
|
1289
1379
|
true
|
|
1290
1380
|
)
|
|
1291
|
-
|
|
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
|
+
)
|
|
1472
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1473
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1292
1474
|
(function(self)
|
|
1293
1475
|
local function destroyBuffIfNeeded(buff)
|
|
1294
1476
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1342,5 +1524,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1342
1524
|
____exports.checkBuffs(target)
|
|
1343
1525
|
end
|
|
1344
1526
|
)
|
|
1527
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1528
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1529
|
+
end)
|
|
1530
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1531
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1532
|
+
end)
|
|
1345
1533
|
end)(Buff)
|
|
1346
1534
|
return ____exports
|