warscript 0.0.1-dev.47f470c → 0.0.1-dev.48e5280
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/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- 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.d.ts +17 -25
- package/core/types/sound.lua +91 -46
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.lua +6 -1
- 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/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -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 +15 -6
- package/engine/behaviour/ability.lua +56 -21
- 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 +40 -2
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +69 -20
- package/engine/buff.lua +390 -171
- 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/ability-duration.lua +1 -1
- 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/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 +43 -25
- package/engine/internal/unit.lua +384 -260
- 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/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- 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/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -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/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +0 -9
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/curse.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- 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/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -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/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +20 -16
- package/engine/object-data/entry/ability-type.lua +161 -20
- package/engine/object-data/entry/buff-type/applicable.lua +9 -4
- 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/sound-preset.d.ts +18 -2
- package/engine/object-data/entry/sound-preset.lua +105 -15
- package/engine/object-data/entry/unit-type.d.ts +17 -4
- package/engine/object-data/entry/unit-type.lua +200 -88
- package/engine/object-data/entry.d.ts +2 -2
- package/engine/object-data/entry.lua +14 -7
- 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/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/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/objutil/unit.lua +2 -2
- 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/reflection.lua +11 -7
- 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,
|
|
@@ -109,6 +116,7 @@ local buffParametersKeys = {
|
|
|
109
116
|
durationIncreaseOnAutoAttack = true,
|
|
110
117
|
maximumDuration = true,
|
|
111
118
|
maximumRemainingDuration = true,
|
|
119
|
+
turnsIntoGhost = true,
|
|
112
120
|
stuns = true,
|
|
113
121
|
ignoresStunImmunity = true,
|
|
114
122
|
providesStunImmunity = true,
|
|
@@ -119,11 +127,15 @@ local buffParametersKeys = {
|
|
|
119
127
|
maximumAutoAttackCount = true,
|
|
120
128
|
maximumDamageDealtEventCount = true,
|
|
121
129
|
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
122
133
|
uniqueGroup = true,
|
|
123
134
|
damageOnExpiration = true,
|
|
124
135
|
healingOnExpiration = true,
|
|
125
136
|
killsOnExpiration = true,
|
|
126
|
-
explodesOnExpiration = true
|
|
137
|
+
explodesOnExpiration = true,
|
|
138
|
+
abilityCooldownFactor = true
|
|
127
139
|
}
|
|
128
140
|
local function resolveEnumValue(ability, level, value)
|
|
129
141
|
if value == nil or type(value) == "number" then
|
|
@@ -174,6 +186,8 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
174
186
|
end
|
|
175
187
|
end
|
|
176
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
190
|
+
"turnsIntoGhost",
|
|
177
191
|
"stuns",
|
|
178
192
|
"ignoresStunImmunity",
|
|
179
193
|
"disablesAutoAttack",
|
|
@@ -185,8 +199,11 @@ local buffNumberParameters = {
|
|
|
185
199
|
"durationIncreaseOnAutoAttack",
|
|
186
200
|
"attackSpeedIncreaseFactor",
|
|
187
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
188
203
|
"evasionProbability",
|
|
189
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
190
207
|
"damageFactor",
|
|
191
208
|
"receivedDamageFactor",
|
|
192
209
|
"maximumAutoAttackCount",
|
|
@@ -199,7 +216,10 @@ local buffNumberParameters = {
|
|
|
199
216
|
"healingPerInterval",
|
|
200
217
|
"healingOverDuration",
|
|
201
218
|
"damageOnExpiration",
|
|
202
|
-
"healingOnExpiration"
|
|
219
|
+
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
222
|
+
"abilityCooldownFactor"
|
|
203
223
|
}
|
|
204
224
|
local unsuccessfulApplicationMarker = {}
|
|
205
225
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -302,7 +322,8 @@ buffHealingIntervalTimerCallback = function(buff)
|
|
|
302
322
|
source:healTarget(buff[101], healingPerInterval)
|
|
303
323
|
end
|
|
304
324
|
end
|
|
305
|
-
local
|
|
325
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
326
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
306
327
|
____exports.Buff = __TS__Class()
|
|
307
328
|
local Buff = ____exports.Buff
|
|
308
329
|
Buff.name = "Buff"
|
|
@@ -317,33 +338,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
317
338
|
local polarity
|
|
318
339
|
local resistanceType
|
|
319
340
|
local ability
|
|
341
|
+
local abilityBehavior
|
|
320
342
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
321
343
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
322
344
|
polarity = resistanceTypeOrPolarity
|
|
323
345
|
resistanceType = abilityOrParametersOrResistanceType
|
|
324
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
346
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
347
|
+
abilityBehavior = parametersOrAbility
|
|
348
|
+
ability = abilityBehavior.ability
|
|
349
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
325
350
|
ability = parametersOrAbility
|
|
326
|
-
|
|
327
|
-
ability = nil
|
|
351
|
+
elseif parametersOrAbility ~= nil then
|
|
328
352
|
parameters = parametersOrAbility
|
|
329
353
|
end
|
|
330
354
|
else
|
|
331
355
|
typeId = typeIdOrTypeIds
|
|
332
356
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
333
357
|
resistanceType = resistanceTypeOrPolarity
|
|
334
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
358
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
359
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
360
|
+
ability = abilityBehavior.ability
|
|
361
|
+
parameters = parametersOrAbility
|
|
362
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
335
363
|
ability = abilityOrParametersOrResistanceType
|
|
336
364
|
parameters = parametersOrAbility
|
|
337
|
-
|
|
338
|
-
ability = nil
|
|
365
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
339
366
|
parameters = abilityOrParametersOrResistanceType
|
|
367
|
+
else
|
|
368
|
+
parameters = parametersOrAbility
|
|
340
369
|
end
|
|
341
370
|
end
|
|
371
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
342
372
|
self.typeId = typeId
|
|
343
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
344
|
-
parameters = ability
|
|
345
|
-
ability = nil
|
|
346
|
-
end
|
|
347
373
|
local defaultParameters = self.constructor.defaultParameters
|
|
348
374
|
local level = parameters and parameters.level or defaultParameters.level
|
|
349
375
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -371,7 +397,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
371
397
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
372
398
|
if missProbability ~= nil then
|
|
373
399
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
374
|
-
self[
|
|
400
|
+
self[146] = missProbability
|
|
375
401
|
end
|
|
376
402
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
377
403
|
if buffByTypeId == nil then
|
|
@@ -454,24 +480,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
454
480
|
abilityTypeIds = {}
|
|
455
481
|
self._abilityTypeIds = abilityTypeIds
|
|
456
482
|
end
|
|
457
|
-
for
|
|
483
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
484
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
458
485
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
459
486
|
if addedAbility ~= nil then
|
|
460
487
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
461
488
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
465
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
466
|
-
end
|
|
467
|
-
elseif abilityParameterKey ~= "level" then
|
|
468
|
-
abilityParameterKey:setValue(
|
|
469
|
-
addedAbility,
|
|
470
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
471
|
-
)
|
|
472
|
-
end
|
|
489
|
+
if abilityParameters.isButtonVisible == false then
|
|
490
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
473
491
|
end
|
|
474
|
-
|
|
492
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
493
|
+
field[1]:setValue(
|
|
494
|
+
addedAbility,
|
|
495
|
+
resolveNumberValue(ability, level, field[2])
|
|
496
|
+
)
|
|
497
|
+
end
|
|
498
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
475
499
|
end
|
|
476
500
|
end
|
|
477
501
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -483,18 +507,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
483
507
|
self._behaviors = behaviors
|
|
484
508
|
end
|
|
485
509
|
end
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
if
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
510
|
+
if parameters ~= nil then
|
|
511
|
+
local additionalParameters = {}
|
|
512
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
513
|
+
if not buffParametersKeys[key] then
|
|
514
|
+
if ability then
|
|
515
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
516
|
+
else
|
|
517
|
+
additionalParameters[key] = parameters[key]
|
|
518
|
+
end
|
|
493
519
|
end
|
|
494
520
|
end
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
521
|
+
if (next(additionalParameters)) ~= nil then
|
|
522
|
+
self.parameters = additionalParameters
|
|
523
|
+
end
|
|
498
524
|
end
|
|
499
525
|
end
|
|
500
526
|
if duration ~= nil and duration > 0 then
|
|
@@ -504,65 +530,65 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
504
530
|
end
|
|
505
531
|
self:onCreate()
|
|
506
532
|
self[100] = 1
|
|
533
|
+
Event.invoke(buffCreatedEvent, self)
|
|
507
534
|
end
|
|
508
|
-
function Buff.prototype.
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
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
|
|
512
542
|
end
|
|
513
|
-
function Buff.prototype.
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
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
|
|
518
549
|
end
|
|
519
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
520
550
|
end
|
|
521
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)
|
|
522
570
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
523
|
-
Effect:flash(
|
|
571
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
524
572
|
else
|
|
525
573
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
526
|
-
local
|
|
527
|
-
local
|
|
528
|
-
local
|
|
529
|
-
|
|
530
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
531
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
532
|
-
)
|
|
533
|
-
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
|
|
534
578
|
if isWidgetProvided then
|
|
535
|
-
|
|
579
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
536
580
|
else
|
|
537
|
-
|
|
581
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
538
582
|
end
|
|
539
|
-
__TS__SparseArrayPush(
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
__TS__SparseArraySpread(
|
|
583
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
584
|
+
____Effect_flash_41(
|
|
585
|
+
____Effect_40,
|
|
586
|
+
__TS__SparseArraySpread(____array_39)
|
|
543
587
|
)
|
|
544
588
|
end
|
|
545
589
|
end
|
|
546
|
-
function Buff.prototype.
|
|
547
|
-
|
|
548
|
-
local ____Effect_46 = Effect
|
|
549
|
-
local ____Effect_flash_47 = Effect.flash
|
|
550
|
-
local ____array_45 = __TS__SparseArrayNew(
|
|
551
|
-
self[106],
|
|
552
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
553
|
-
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
554
|
-
)
|
|
555
|
-
local ____isWidgetProvided_44
|
|
556
|
-
if isWidgetProvided then
|
|
557
|
-
____isWidgetProvided_44 = duration
|
|
558
|
-
else
|
|
559
|
-
____isWidgetProvided_44 = widgetOrDuration
|
|
560
|
-
end
|
|
561
|
-
__TS__SparseArrayPush(____array_45, ____isWidgetProvided_44)
|
|
562
|
-
____Effect_flash_47(
|
|
563
|
-
____Effect_46,
|
|
564
|
-
__TS__SparseArraySpread(____array_45)
|
|
565
|
-
)
|
|
590
|
+
function Buff.prototype.expire(self)
|
|
591
|
+
expireBuff(self)
|
|
566
592
|
end
|
|
567
593
|
function Buff.prototype.onCreate(self)
|
|
568
594
|
end
|
|
@@ -592,26 +618,33 @@ function Buff.prototype.onDestroy(self)
|
|
|
592
618
|
behavior:destroy()
|
|
593
619
|
end
|
|
594
620
|
end
|
|
595
|
-
|
|
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
|
|
628
|
+
unit:decrementInvulnerabilityCounter()
|
|
629
|
+
end
|
|
630
|
+
if self[142] then
|
|
596
631
|
unit:decrementDisableAutoAttackCounter()
|
|
597
632
|
end
|
|
598
|
-
if self[
|
|
599
|
-
if self[
|
|
600
|
-
unit:
|
|
633
|
+
if self[140] then
|
|
634
|
+
if self[141] then
|
|
635
|
+
unit:decrementForceStunCounter()
|
|
601
636
|
end
|
|
602
637
|
unit:decrementStunCounter()
|
|
603
638
|
end
|
|
639
|
+
if self[139] then
|
|
640
|
+
unit:decrementGhostCounter()
|
|
641
|
+
end
|
|
604
642
|
if self._abilityTypeIds ~= nil then
|
|
605
|
-
for abilityTypeId in
|
|
643
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
606
644
|
unit:removeAbility(abilityTypeId)
|
|
607
645
|
end
|
|
608
646
|
end
|
|
609
|
-
|
|
610
|
-
for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
|
|
611
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
612
|
-
end
|
|
613
|
-
end
|
|
614
|
-
Event.invoke(buffDestroyEvent, self)
|
|
647
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
615
648
|
self[100] = 3
|
|
616
649
|
return UnitBehavior.prototype.onDestroy(self)
|
|
617
650
|
end
|
|
@@ -640,8 +673,8 @@ function Buff.apply(self, ...)
|
|
|
640
673
|
end
|
|
641
674
|
end
|
|
642
675
|
function Buff.getByTypeId(self, unit, typeId)
|
|
643
|
-
local
|
|
644
|
-
local buff =
|
|
676
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
677
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
645
678
|
if __TS__InstanceOf(buff, self) then
|
|
646
679
|
return buff
|
|
647
680
|
end
|
|
@@ -655,9 +688,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
655
688
|
if self[121] ~= nil then
|
|
656
689
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
657
690
|
end
|
|
658
|
-
if self[
|
|
691
|
+
if self[145] then
|
|
659
692
|
unit:explode()
|
|
660
|
-
elseif self[
|
|
693
|
+
elseif self[144] then
|
|
661
694
|
unit:kill()
|
|
662
695
|
end
|
|
663
696
|
end
|
|
@@ -712,6 +745,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
712
745
|
end
|
|
713
746
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
714
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
|
|
715
760
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
716
761
|
self[133] = damageReceivedEventCount
|
|
717
762
|
if damageReceivedEventCount == self[134] then
|
|
@@ -799,8 +844,8 @@ __TS__SetDescriptor(
|
|
|
799
844
|
return
|
|
800
845
|
end
|
|
801
846
|
self[112] = damageInterval
|
|
802
|
-
local
|
|
803
|
-
local elapsed =
|
|
847
|
+
local ____opt_45 = self._timer
|
|
848
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
804
849
|
local timer = self[114]
|
|
805
850
|
if timer == nil then
|
|
806
851
|
timer = Timer:create()
|
|
@@ -879,8 +924,8 @@ __TS__SetDescriptor(
|
|
|
879
924
|
return
|
|
880
925
|
end
|
|
881
926
|
self[117] = healingInterval
|
|
882
|
-
local
|
|
883
|
-
local elapsed =
|
|
927
|
+
local ____opt_47 = self._timer
|
|
928
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
884
929
|
local timer = self[119]
|
|
885
930
|
if timer == nil then
|
|
886
931
|
timer = Timer:create()
|
|
@@ -961,30 +1006,79 @@ __TS__SetDescriptor(
|
|
|
961
1006
|
},
|
|
962
1007
|
true
|
|
963
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
|
+
)
|
|
1035
|
+
__TS__SetDescriptor(
|
|
1036
|
+
Buff.prototype,
|
|
1037
|
+
"turnsIntoGhost",
|
|
1038
|
+
{
|
|
1039
|
+
get = function(self)
|
|
1040
|
+
local ____self__139_49 = self[139]
|
|
1041
|
+
if ____self__139_49 == nil then
|
|
1042
|
+
____self__139_49 = false
|
|
1043
|
+
end
|
|
1044
|
+
return ____self__139_49
|
|
1045
|
+
end,
|
|
1046
|
+
set = function(self, turnsIntoGhost)
|
|
1047
|
+
if not turnsIntoGhost and self[139] then
|
|
1048
|
+
self.object:decrementGhostCounter()
|
|
1049
|
+
self[139] = nil
|
|
1050
|
+
elseif turnsIntoGhost and not self[139] then
|
|
1051
|
+
self.object:incrementGhostCounter()
|
|
1052
|
+
self[139] = true
|
|
1053
|
+
end
|
|
1054
|
+
end
|
|
1055
|
+
},
|
|
1056
|
+
true
|
|
1057
|
+
)
|
|
964
1058
|
__TS__SetDescriptor(
|
|
965
1059
|
Buff.prototype,
|
|
966
1060
|
"stuns",
|
|
967
1061
|
{
|
|
968
1062
|
get = function(self)
|
|
969
|
-
local
|
|
970
|
-
if
|
|
971
|
-
|
|
1063
|
+
local ____self__140_50 = self[140]
|
|
1064
|
+
if ____self__140_50 == nil then
|
|
1065
|
+
____self__140_50 = false
|
|
972
1066
|
end
|
|
973
|
-
return
|
|
1067
|
+
return ____self__140_50
|
|
974
1068
|
end,
|
|
975
1069
|
set = function(self, stuns)
|
|
976
|
-
if not stuns and self[
|
|
977
|
-
if self[
|
|
978
|
-
self.object:
|
|
1070
|
+
if not stuns and self[140] then
|
|
1071
|
+
if self[141] then
|
|
1072
|
+
self.object:decrementForceStunCounter()
|
|
979
1073
|
end
|
|
980
1074
|
self.object:decrementStunCounter()
|
|
981
|
-
self[
|
|
982
|
-
elseif stuns and not self[
|
|
983
|
-
if self[
|
|
984
|
-
self.object:
|
|
1075
|
+
self[140] = nil
|
|
1076
|
+
elseif stuns and not self[140] then
|
|
1077
|
+
if self[141] then
|
|
1078
|
+
self.object:incrementForceStunCounter()
|
|
985
1079
|
end
|
|
986
1080
|
self.object:incrementStunCounter()
|
|
987
|
-
self[
|
|
1081
|
+
self[140] = true
|
|
988
1082
|
end
|
|
989
1083
|
end
|
|
990
1084
|
},
|
|
@@ -995,23 +1089,23 @@ __TS__SetDescriptor(
|
|
|
995
1089
|
"ignoresStunImmunity",
|
|
996
1090
|
{
|
|
997
1091
|
get = function(self)
|
|
998
|
-
local
|
|
999
|
-
if
|
|
1000
|
-
|
|
1092
|
+
local ____self__141_51 = self[141]
|
|
1093
|
+
if ____self__141_51 == nil then
|
|
1094
|
+
____self__141_51 = false
|
|
1001
1095
|
end
|
|
1002
|
-
return
|
|
1096
|
+
return ____self__141_51
|
|
1003
1097
|
end,
|
|
1004
1098
|
set = function(self, ignoresStunImmunity)
|
|
1005
|
-
if not ignoresStunImmunity and self[
|
|
1006
|
-
if self[
|
|
1007
|
-
self.object:
|
|
1099
|
+
if not ignoresStunImmunity and self[141] then
|
|
1100
|
+
if self[140] then
|
|
1101
|
+
self.object:decrementForceStunCounter()
|
|
1008
1102
|
end
|
|
1009
|
-
self[
|
|
1010
|
-
elseif ignoresStunImmunity and not self[
|
|
1011
|
-
if self[
|
|
1012
|
-
self.object:
|
|
1103
|
+
self[141] = nil
|
|
1104
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1105
|
+
if self[140] then
|
|
1106
|
+
self.object:incrementForceStunCounter()
|
|
1013
1107
|
end
|
|
1014
|
-
self[
|
|
1108
|
+
self[141] = true
|
|
1015
1109
|
end
|
|
1016
1110
|
end
|
|
1017
1111
|
},
|
|
@@ -1022,19 +1116,19 @@ __TS__SetDescriptor(
|
|
|
1022
1116
|
"disablesAutoAttack",
|
|
1023
1117
|
{
|
|
1024
1118
|
get = function(self)
|
|
1025
|
-
local
|
|
1026
|
-
if
|
|
1027
|
-
|
|
1119
|
+
local ____self__142_52 = self[142]
|
|
1120
|
+
if ____self__142_52 == nil then
|
|
1121
|
+
____self__142_52 = false
|
|
1028
1122
|
end
|
|
1029
|
-
return
|
|
1123
|
+
return ____self__142_52
|
|
1030
1124
|
end,
|
|
1031
1125
|
set = function(self, disablesAutoAttack)
|
|
1032
|
-
if not disablesAutoAttack and self[
|
|
1126
|
+
if not disablesAutoAttack and self[142] then
|
|
1033
1127
|
self.object:decrementDisableAutoAttackCounter()
|
|
1034
|
-
self[
|
|
1035
|
-
elseif disablesAutoAttack and not self[
|
|
1128
|
+
self[142] = nil
|
|
1129
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1036
1130
|
self.object:incrementDisableAutoAttackCounter()
|
|
1037
|
-
self[
|
|
1131
|
+
self[142] = true
|
|
1038
1132
|
end
|
|
1039
1133
|
end
|
|
1040
1134
|
},
|
|
@@ -1045,19 +1139,19 @@ __TS__SetDescriptor(
|
|
|
1045
1139
|
"providesInvulnerability",
|
|
1046
1140
|
{
|
|
1047
1141
|
get = function(self)
|
|
1048
|
-
local
|
|
1049
|
-
if
|
|
1050
|
-
|
|
1142
|
+
local ____self__143_53 = self[143]
|
|
1143
|
+
if ____self__143_53 == nil then
|
|
1144
|
+
____self__143_53 = false
|
|
1051
1145
|
end
|
|
1052
|
-
return
|
|
1146
|
+
return ____self__143_53
|
|
1053
1147
|
end,
|
|
1054
1148
|
set = function(self, providesInvulnerability)
|
|
1055
|
-
if not providesInvulnerability and self[
|
|
1149
|
+
if not providesInvulnerability and self[143] then
|
|
1056
1150
|
self.object:decrementInvulnerabilityCounter()
|
|
1057
|
-
self[
|
|
1058
|
-
elseif providesInvulnerability and not self[
|
|
1151
|
+
self[143] = nil
|
|
1152
|
+
elseif providesInvulnerability and not self[143] then
|
|
1059
1153
|
self.object:incrementInvulnerabilityCounter()
|
|
1060
|
-
self[
|
|
1154
|
+
self[143] = true
|
|
1061
1155
|
end
|
|
1062
1156
|
end
|
|
1063
1157
|
},
|
|
@@ -1068,17 +1162,17 @@ __TS__SetDescriptor(
|
|
|
1068
1162
|
"killsOnExpiration",
|
|
1069
1163
|
{
|
|
1070
1164
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1165
|
+
local ____self__144_54 = self[144]
|
|
1166
|
+
if ____self__144_54 == nil then
|
|
1167
|
+
____self__144_54 = false
|
|
1074
1168
|
end
|
|
1075
|
-
return
|
|
1169
|
+
return ____self__144_54
|
|
1076
1170
|
end,
|
|
1077
1171
|
set = function(self, killsOnExpiration)
|
|
1078
|
-
if not killsOnExpiration and self[
|
|
1079
|
-
self[
|
|
1080
|
-
elseif killsOnExpiration and not self[
|
|
1081
|
-
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
|
|
1082
1176
|
end
|
|
1083
1177
|
end
|
|
1084
1178
|
},
|
|
@@ -1089,17 +1183,17 @@ __TS__SetDescriptor(
|
|
|
1089
1183
|
"explodesOnExpiration",
|
|
1090
1184
|
{
|
|
1091
1185
|
get = function(self)
|
|
1092
|
-
local
|
|
1093
|
-
if
|
|
1094
|
-
|
|
1186
|
+
local ____self__145_55 = self[145]
|
|
1187
|
+
if ____self__145_55 == nil then
|
|
1188
|
+
____self__145_55 = false
|
|
1095
1189
|
end
|
|
1096
|
-
return
|
|
1190
|
+
return ____self__145_55
|
|
1097
1191
|
end,
|
|
1098
1192
|
set = function(self, killsOnExpiration)
|
|
1099
|
-
if not killsOnExpiration and self[
|
|
1100
|
-
self[
|
|
1101
|
-
elseif killsOnExpiration and not self[
|
|
1102
|
-
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
|
|
1103
1197
|
end
|
|
1104
1198
|
end
|
|
1105
1199
|
},
|
|
@@ -1208,12 +1302,39 @@ __TS__SetDescriptor(
|
|
|
1208
1302
|
},
|
|
1209
1303
|
true
|
|
1210
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
|
+
)
|
|
1211
1318
|
__TS__SetDescriptor(
|
|
1212
1319
|
Buff.prototype,
|
|
1213
1320
|
"duration",
|
|
1214
|
-
{
|
|
1215
|
-
|
|
1216
|
-
|
|
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
|
+
},
|
|
1217
1338
|
true
|
|
1218
1339
|
)
|
|
1219
1340
|
__TS__SetDescriptor(
|
|
@@ -1221,13 +1342,13 @@ __TS__SetDescriptor(
|
|
|
1221
1342
|
"remainingDuration",
|
|
1222
1343
|
{
|
|
1223
1344
|
get = function(self)
|
|
1224
|
-
local
|
|
1225
|
-
return
|
|
1345
|
+
local ____opt_56 = self._timer
|
|
1346
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1226
1347
|
end,
|
|
1227
1348
|
set = function(self, remainingDuration)
|
|
1228
|
-
local
|
|
1229
|
-
local
|
|
1230
|
-
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)
|
|
1231
1352
|
if remainingDurationDelta ~= 0 then
|
|
1232
1353
|
self[103] = self[103] + remainingDurationDelta
|
|
1233
1354
|
if remainingDuration <= 0 then
|
|
@@ -1242,7 +1363,7 @@ __TS__SetDescriptor(
|
|
|
1242
1363
|
remainingDuration,
|
|
1243
1364
|
self._spellStealPriority,
|
|
1244
1365
|
self._learnLevelMinimum,
|
|
1245
|
-
self[
|
|
1366
|
+
self[146]
|
|
1246
1367
|
) then
|
|
1247
1368
|
local timer = self._timer
|
|
1248
1369
|
if timer == nil then
|
|
@@ -1257,7 +1378,99 @@ __TS__SetDescriptor(
|
|
|
1257
1378
|
},
|
|
1258
1379
|
true
|
|
1259
1380
|
)
|
|
1260
|
-
|
|
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;
|
|
1261
1474
|
(function(self)
|
|
1262
1475
|
local function destroyBuffIfNeeded(buff)
|
|
1263
1476
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1311,5 +1524,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1311
1524
|
____exports.checkBuffs(target)
|
|
1312
1525
|
end
|
|
1313
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)
|
|
1314
1533
|
end)(Buff)
|
|
1315
1534
|
return ____exports
|