warscript 0.0.1-dev.c74bdbb → 0.0.1-dev.c762beb
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/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 +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 +9 -3
- package/engine/behaviour/ability/damage.lua +31 -37
- 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 +11 -6
- 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 +67 -22
- package/engine/buff.lua +371 -182
- 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.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/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 -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 +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+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/{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/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/buff-type/applicable.lua +113 -109
- package/engine/object-data/entry/buff-type.d.ts +5 -11
- package/engine/object-data/entry/buff-type.lua +11 -27
- package/engine/object-data/entry/destructible-type.d.ts +27 -1
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/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 +9 -8
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +360 -119
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +6 -0
- package/engine/unit.lua +6 -0
- package/lualib_bundle.lua +118 -47
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- 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 +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/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.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,14 +397,15 @@ 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
|
|
380
404
|
buffByTypeId = {}
|
|
381
405
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
382
406
|
end
|
|
383
|
-
|
|
407
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
408
|
+
local ____opt_15 = self.previousBuff
|
|
384
409
|
if ____opt_15 ~= nil then
|
|
385
410
|
____opt_15:destroy()
|
|
386
411
|
end
|
|
@@ -456,24 +481,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
456
481
|
abilityTypeIds = {}
|
|
457
482
|
self._abilityTypeIds = abilityTypeIds
|
|
458
483
|
end
|
|
459
|
-
for
|
|
484
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
485
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
460
486
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
461
487
|
if addedAbility ~= nil then
|
|
462
488
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
463
489
|
_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
|
|
490
|
+
if abilityParameters.isButtonVisible == false then
|
|
491
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
492
|
+
end
|
|
493
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
494
|
+
field[1]:setValue(
|
|
495
|
+
addedAbility,
|
|
496
|
+
resolveNumberValue(ability, level, field[2])
|
|
497
|
+
)
|
|
475
498
|
end
|
|
476
|
-
abilityTypeIds[
|
|
499
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
477
500
|
end
|
|
478
501
|
end
|
|
479
502
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -485,18 +508,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
485
508
|
self._behaviors = behaviors
|
|
486
509
|
end
|
|
487
510
|
end
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
if
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
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
|
|
495
520
|
end
|
|
496
521
|
end
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
522
|
+
if (next(additionalParameters)) ~= nil then
|
|
523
|
+
self.parameters = additionalParameters
|
|
524
|
+
end
|
|
500
525
|
end
|
|
501
526
|
end
|
|
502
527
|
if duration ~= nil and duration > 0 then
|
|
@@ -506,65 +531,65 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
506
531
|
end
|
|
507
532
|
self:onCreate()
|
|
508
533
|
self[100] = 1
|
|
534
|
+
Event.invoke(buffCreatedEvent, self)
|
|
509
535
|
end
|
|
510
|
-
function Buff.prototype.
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
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
|
|
514
543
|
end
|
|
515
|
-
function Buff.prototype.
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
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
|
|
520
550
|
end
|
|
521
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
522
551
|
end
|
|
523
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)
|
|
524
571
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
525
|
-
Effect:flash(
|
|
572
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
526
573
|
else
|
|
527
574
|
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
|
|
575
|
+
local ____Effect_40 = Effect
|
|
576
|
+
local ____Effect_flash_41 = Effect.flash
|
|
577
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
578
|
+
local ____isWidgetProvided_38
|
|
536
579
|
if isWidgetProvided then
|
|
537
|
-
|
|
580
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
538
581
|
else
|
|
539
|
-
|
|
582
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
540
583
|
end
|
|
541
|
-
__TS__SparseArrayPush(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
__TS__SparseArraySpread(
|
|
584
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
585
|
+
____Effect_flash_41(
|
|
586
|
+
____Effect_40,
|
|
587
|
+
__TS__SparseArraySpread(____array_39)
|
|
545
588
|
)
|
|
546
589
|
end
|
|
547
590
|
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
|
-
)
|
|
591
|
+
function Buff.prototype.expire(self)
|
|
592
|
+
expireBuff(self)
|
|
568
593
|
end
|
|
569
594
|
function Buff.prototype.onCreate(self)
|
|
570
595
|
end
|
|
@@ -594,32 +619,33 @@ function Buff.prototype.onDestroy(self)
|
|
|
594
619
|
behavior:destroy()
|
|
595
620
|
end
|
|
596
621
|
end
|
|
597
|
-
|
|
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
|
|
598
629
|
unit:decrementInvulnerabilityCounter()
|
|
599
630
|
end
|
|
600
|
-
if self[
|
|
631
|
+
if self[142] then
|
|
601
632
|
unit:decrementDisableAutoAttackCounter()
|
|
602
633
|
end
|
|
603
|
-
if self[
|
|
604
|
-
if self[
|
|
605
|
-
unit:
|
|
634
|
+
if self[140] then
|
|
635
|
+
if self[141] then
|
|
636
|
+
unit:decrementForceStunCounter()
|
|
606
637
|
end
|
|
607
638
|
unit:decrementStunCounter()
|
|
608
639
|
end
|
|
609
|
-
if self[
|
|
640
|
+
if self[139] then
|
|
610
641
|
unit:decrementGhostCounter()
|
|
611
642
|
end
|
|
612
643
|
if self._abilityTypeIds ~= nil then
|
|
613
|
-
for abilityTypeId in
|
|
644
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
614
645
|
unit:removeAbility(abilityTypeId)
|
|
615
646
|
end
|
|
616
647
|
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)
|
|
648
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
623
649
|
self[100] = 3
|
|
624
650
|
return UnitBehavior.prototype.onDestroy(self)
|
|
625
651
|
end
|
|
@@ -648,8 +674,8 @@ function Buff.apply(self, ...)
|
|
|
648
674
|
end
|
|
649
675
|
end
|
|
650
676
|
function Buff.getByTypeId(self, unit, typeId)
|
|
651
|
-
local
|
|
652
|
-
local buff =
|
|
677
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
678
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
653
679
|
if __TS__InstanceOf(buff, self) then
|
|
654
680
|
return buff
|
|
655
681
|
end
|
|
@@ -663,9 +689,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
663
689
|
if self[121] ~= nil then
|
|
664
690
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
665
691
|
end
|
|
666
|
-
if self[
|
|
692
|
+
if self[145] then
|
|
667
693
|
unit:explode()
|
|
668
|
-
elseif self[
|
|
694
|
+
elseif self[144] then
|
|
669
695
|
unit:kill()
|
|
670
696
|
end
|
|
671
697
|
end
|
|
@@ -720,6 +746,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
720
746
|
end
|
|
721
747
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
722
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
|
|
723
761
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
724
762
|
self[133] = damageReceivedEventCount
|
|
725
763
|
if damageReceivedEventCount == self[134] then
|
|
@@ -807,8 +845,8 @@ __TS__SetDescriptor(
|
|
|
807
845
|
return
|
|
808
846
|
end
|
|
809
847
|
self[112] = damageInterval
|
|
810
|
-
local
|
|
811
|
-
local elapsed =
|
|
848
|
+
local ____opt_45 = self._timer
|
|
849
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
812
850
|
local timer = self[114]
|
|
813
851
|
if timer == nil then
|
|
814
852
|
timer = Timer:create()
|
|
@@ -887,8 +925,8 @@ __TS__SetDescriptor(
|
|
|
887
925
|
return
|
|
888
926
|
end
|
|
889
927
|
self[117] = healingInterval
|
|
890
|
-
local
|
|
891
|
-
local elapsed =
|
|
928
|
+
local ____opt_47 = self._timer
|
|
929
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
892
930
|
local timer = self[119]
|
|
893
931
|
if timer == nil then
|
|
894
932
|
timer = Timer:create()
|
|
@@ -969,24 +1007,50 @@ __TS__SetDescriptor(
|
|
|
969
1007
|
},
|
|
970
1008
|
true
|
|
971
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
|
+
)
|
|
972
1036
|
__TS__SetDescriptor(
|
|
973
1037
|
Buff.prototype,
|
|
974
1038
|
"turnsIntoGhost",
|
|
975
1039
|
{
|
|
976
1040
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
1041
|
+
local ____self__139_49 = self[139]
|
|
1042
|
+
if ____self__139_49 == nil then
|
|
1043
|
+
____self__139_49 = false
|
|
980
1044
|
end
|
|
981
|
-
return
|
|
1045
|
+
return ____self__139_49
|
|
982
1046
|
end,
|
|
983
1047
|
set = function(self, turnsIntoGhost)
|
|
984
|
-
if not turnsIntoGhost and self[
|
|
1048
|
+
if not turnsIntoGhost and self[139] then
|
|
985
1049
|
self.object:decrementGhostCounter()
|
|
986
|
-
self[
|
|
987
|
-
elseif turnsIntoGhost and not self[
|
|
1050
|
+
self[139] = nil
|
|
1051
|
+
elseif turnsIntoGhost and not self[139] then
|
|
988
1052
|
self.object:incrementGhostCounter()
|
|
989
|
-
self[
|
|
1053
|
+
self[139] = true
|
|
990
1054
|
end
|
|
991
1055
|
end
|
|
992
1056
|
},
|
|
@@ -997,25 +1061,25 @@ __TS__SetDescriptor(
|
|
|
997
1061
|
"stuns",
|
|
998
1062
|
{
|
|
999
1063
|
get = function(self)
|
|
1000
|
-
local
|
|
1001
|
-
if
|
|
1002
|
-
|
|
1064
|
+
local ____self__140_50 = self[140]
|
|
1065
|
+
if ____self__140_50 == nil then
|
|
1066
|
+
____self__140_50 = false
|
|
1003
1067
|
end
|
|
1004
|
-
return
|
|
1068
|
+
return ____self__140_50
|
|
1005
1069
|
end,
|
|
1006
1070
|
set = function(self, stuns)
|
|
1007
|
-
if not stuns and self[
|
|
1008
|
-
if self[
|
|
1009
|
-
self.object:
|
|
1071
|
+
if not stuns and self[140] then
|
|
1072
|
+
if self[141] then
|
|
1073
|
+
self.object:decrementForceStunCounter()
|
|
1010
1074
|
end
|
|
1011
1075
|
self.object:decrementStunCounter()
|
|
1012
|
-
self[
|
|
1013
|
-
elseif stuns and not self[
|
|
1014
|
-
if self[
|
|
1015
|
-
self.object:
|
|
1076
|
+
self[140] = nil
|
|
1077
|
+
elseif stuns and not self[140] then
|
|
1078
|
+
if self[141] then
|
|
1079
|
+
self.object:incrementForceStunCounter()
|
|
1016
1080
|
end
|
|
1017
1081
|
self.object:incrementStunCounter()
|
|
1018
|
-
self[
|
|
1082
|
+
self[140] = true
|
|
1019
1083
|
end
|
|
1020
1084
|
end
|
|
1021
1085
|
},
|
|
@@ -1026,23 +1090,23 @@ __TS__SetDescriptor(
|
|
|
1026
1090
|
"ignoresStunImmunity",
|
|
1027
1091
|
{
|
|
1028
1092
|
get = function(self)
|
|
1029
|
-
local
|
|
1030
|
-
if
|
|
1031
|
-
|
|
1093
|
+
local ____self__141_51 = self[141]
|
|
1094
|
+
if ____self__141_51 == nil then
|
|
1095
|
+
____self__141_51 = false
|
|
1032
1096
|
end
|
|
1033
|
-
return
|
|
1097
|
+
return ____self__141_51
|
|
1034
1098
|
end,
|
|
1035
1099
|
set = function(self, ignoresStunImmunity)
|
|
1036
|
-
if not ignoresStunImmunity and self[
|
|
1037
|
-
if self[
|
|
1038
|
-
self.object:
|
|
1100
|
+
if not ignoresStunImmunity and self[141] then
|
|
1101
|
+
if self[140] then
|
|
1102
|
+
self.object:decrementForceStunCounter()
|
|
1039
1103
|
end
|
|
1040
|
-
self[
|
|
1041
|
-
elseif ignoresStunImmunity and not self[
|
|
1042
|
-
if self[
|
|
1043
|
-
self.object:
|
|
1104
|
+
self[141] = nil
|
|
1105
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1106
|
+
if self[140] then
|
|
1107
|
+
self.object:incrementForceStunCounter()
|
|
1044
1108
|
end
|
|
1045
|
-
self[
|
|
1109
|
+
self[141] = true
|
|
1046
1110
|
end
|
|
1047
1111
|
end
|
|
1048
1112
|
},
|
|
@@ -1053,19 +1117,19 @@ __TS__SetDescriptor(
|
|
|
1053
1117
|
"disablesAutoAttack",
|
|
1054
1118
|
{
|
|
1055
1119
|
get = function(self)
|
|
1056
|
-
local
|
|
1057
|
-
if
|
|
1058
|
-
|
|
1120
|
+
local ____self__142_52 = self[142]
|
|
1121
|
+
if ____self__142_52 == nil then
|
|
1122
|
+
____self__142_52 = false
|
|
1059
1123
|
end
|
|
1060
|
-
return
|
|
1124
|
+
return ____self__142_52
|
|
1061
1125
|
end,
|
|
1062
1126
|
set = function(self, disablesAutoAttack)
|
|
1063
|
-
if not disablesAutoAttack and self[
|
|
1127
|
+
if not disablesAutoAttack and self[142] then
|
|
1064
1128
|
self.object:decrementDisableAutoAttackCounter()
|
|
1065
|
-
self[
|
|
1066
|
-
elseif disablesAutoAttack and not self[
|
|
1129
|
+
self[142] = nil
|
|
1130
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1067
1131
|
self.object:incrementDisableAutoAttackCounter()
|
|
1068
|
-
self[
|
|
1132
|
+
self[142] = true
|
|
1069
1133
|
end
|
|
1070
1134
|
end
|
|
1071
1135
|
},
|
|
@@ -1076,19 +1140,19 @@ __TS__SetDescriptor(
|
|
|
1076
1140
|
"providesInvulnerability",
|
|
1077
1141
|
{
|
|
1078
1142
|
get = function(self)
|
|
1079
|
-
local
|
|
1080
|
-
if
|
|
1081
|
-
|
|
1143
|
+
local ____self__143_53 = self[143]
|
|
1144
|
+
if ____self__143_53 == nil then
|
|
1145
|
+
____self__143_53 = false
|
|
1082
1146
|
end
|
|
1083
|
-
return
|
|
1147
|
+
return ____self__143_53
|
|
1084
1148
|
end,
|
|
1085
1149
|
set = function(self, providesInvulnerability)
|
|
1086
|
-
if not providesInvulnerability and self[
|
|
1150
|
+
if not providesInvulnerability and self[143] then
|
|
1087
1151
|
self.object:decrementInvulnerabilityCounter()
|
|
1088
|
-
self[
|
|
1089
|
-
elseif providesInvulnerability and not self[
|
|
1152
|
+
self[143] = nil
|
|
1153
|
+
elseif providesInvulnerability and not self[143] then
|
|
1090
1154
|
self.object:incrementInvulnerabilityCounter()
|
|
1091
|
-
self[
|
|
1155
|
+
self[143] = true
|
|
1092
1156
|
end
|
|
1093
1157
|
end
|
|
1094
1158
|
},
|
|
@@ -1099,17 +1163,17 @@ __TS__SetDescriptor(
|
|
|
1099
1163
|
"killsOnExpiration",
|
|
1100
1164
|
{
|
|
1101
1165
|
get = function(self)
|
|
1102
|
-
local
|
|
1103
|
-
if
|
|
1104
|
-
|
|
1166
|
+
local ____self__144_54 = self[144]
|
|
1167
|
+
if ____self__144_54 == nil then
|
|
1168
|
+
____self__144_54 = false
|
|
1105
1169
|
end
|
|
1106
|
-
return
|
|
1170
|
+
return ____self__144_54
|
|
1107
1171
|
end,
|
|
1108
1172
|
set = function(self, killsOnExpiration)
|
|
1109
|
-
if not killsOnExpiration and self[
|
|
1110
|
-
self[
|
|
1111
|
-
elseif killsOnExpiration and not self[
|
|
1112
|
-
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
|
|
1113
1177
|
end
|
|
1114
1178
|
end
|
|
1115
1179
|
},
|
|
@@ -1120,17 +1184,17 @@ __TS__SetDescriptor(
|
|
|
1120
1184
|
"explodesOnExpiration",
|
|
1121
1185
|
{
|
|
1122
1186
|
get = function(self)
|
|
1123
|
-
local
|
|
1124
|
-
if
|
|
1125
|
-
|
|
1187
|
+
local ____self__145_55 = self[145]
|
|
1188
|
+
if ____self__145_55 == nil then
|
|
1189
|
+
____self__145_55 = false
|
|
1126
1190
|
end
|
|
1127
|
-
return
|
|
1191
|
+
return ____self__145_55
|
|
1128
1192
|
end,
|
|
1129
1193
|
set = function(self, killsOnExpiration)
|
|
1130
|
-
if not killsOnExpiration and self[
|
|
1131
|
-
self[
|
|
1132
|
-
elseif killsOnExpiration and not self[
|
|
1133
|
-
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
|
|
1134
1198
|
end
|
|
1135
1199
|
end
|
|
1136
1200
|
},
|
|
@@ -1239,12 +1303,39 @@ __TS__SetDescriptor(
|
|
|
1239
1303
|
},
|
|
1240
1304
|
true
|
|
1241
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
|
+
)
|
|
1242
1319
|
__TS__SetDescriptor(
|
|
1243
1320
|
Buff.prototype,
|
|
1244
1321
|
"duration",
|
|
1245
|
-
{
|
|
1246
|
-
|
|
1247
|
-
|
|
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
|
+
},
|
|
1248
1339
|
true
|
|
1249
1340
|
)
|
|
1250
1341
|
__TS__SetDescriptor(
|
|
@@ -1252,13 +1343,13 @@ __TS__SetDescriptor(
|
|
|
1252
1343
|
"remainingDuration",
|
|
1253
1344
|
{
|
|
1254
1345
|
get = function(self)
|
|
1255
|
-
local
|
|
1256
|
-
return
|
|
1346
|
+
local ____opt_56 = self._timer
|
|
1347
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1257
1348
|
end,
|
|
1258
1349
|
set = function(self, remainingDuration)
|
|
1259
|
-
local
|
|
1260
|
-
local
|
|
1261
|
-
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)
|
|
1262
1353
|
if remainingDurationDelta ~= 0 then
|
|
1263
1354
|
self[103] = self[103] + remainingDurationDelta
|
|
1264
1355
|
if remainingDuration <= 0 then
|
|
@@ -1273,7 +1364,7 @@ __TS__SetDescriptor(
|
|
|
1273
1364
|
remainingDuration,
|
|
1274
1365
|
self._spellStealPriority,
|
|
1275
1366
|
self._learnLevelMinimum,
|
|
1276
|
-
self[
|
|
1367
|
+
self[146]
|
|
1277
1368
|
) then
|
|
1278
1369
|
local timer = self._timer
|
|
1279
1370
|
if timer == nil then
|
|
@@ -1288,7 +1379,99 @@ __TS__SetDescriptor(
|
|
|
1288
1379
|
},
|
|
1289
1380
|
true
|
|
1290
1381
|
)
|
|
1291
|
-
|
|
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
|
+
)
|
|
1473
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1474
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1292
1475
|
(function(self)
|
|
1293
1476
|
local function destroyBuffIfNeeded(buff)
|
|
1294
1477
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1342,5 +1525,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1342
1525
|
____exports.checkBuffs(target)
|
|
1343
1526
|
end
|
|
1344
1527
|
)
|
|
1528
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1529
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1530
|
+
end)
|
|
1531
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1532
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1533
|
+
end)
|
|
1345
1534
|
end)(Buff)
|
|
1346
1535
|
return ____exports
|