warscript 0.0.1-dev.3af578d → 0.0.1-dev.3b93f8c
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 +71 -22
- 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 +92 -47
- 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 +12 -3
- package/engine/behaviour/ability/damage.lua +33 -39
- 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 +71 -21
- package/engine/buff.lua +392 -172
- 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/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 +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/tech-tree-dependency.d.ts +1 -1
- 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/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.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/feral-spirit.lua +2 -2
- 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/phoenix-morph.lua +4 -4
- 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/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- 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 +21 -17
- package/engine/object-data/entry/ability-type.lua +169 -28
- package/engine/object-data/entry/buff-type/applicable.lua +115 -106
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +28 -2
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/item-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.lua +4 -4
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +18 -5
- package/engine/object-data/entry/unit-type.lua +208 -96
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- 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/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -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/objutil/unit.lua +8 -0
- 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/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,14 +397,15 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
371
397
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
372
398
|
if missProbability ~= nil then
|
|
373
399
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
374
|
-
self[
|
|
400
|
+
self[146] = missProbability
|
|
375
401
|
end
|
|
376
402
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
377
403
|
if buffByTypeId == nil then
|
|
378
404
|
buffByTypeId = {}
|
|
379
405
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
380
406
|
end
|
|
381
|
-
|
|
407
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
408
|
+
local ____opt_15 = self.previousBuff
|
|
382
409
|
if ____opt_15 ~= nil then
|
|
383
410
|
____opt_15:destroy()
|
|
384
411
|
end
|
|
@@ -454,24 +481,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
454
481
|
abilityTypeIds = {}
|
|
455
482
|
self._abilityTypeIds = abilityTypeIds
|
|
456
483
|
end
|
|
457
|
-
for
|
|
484
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
485
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
458
486
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
459
487
|
if addedAbility ~= nil then
|
|
460
488
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
461
489
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
465
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
466
|
-
end
|
|
467
|
-
elseif abilityParameterKey ~= "level" then
|
|
468
|
-
abilityParameterKey:setValue(
|
|
469
|
-
addedAbility,
|
|
470
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
471
|
-
)
|
|
472
|
-
end
|
|
490
|
+
if abilityParameters.isButtonVisible == false then
|
|
491
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
473
492
|
end
|
|
474
|
-
|
|
493
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
494
|
+
field[1]:setValue(
|
|
495
|
+
addedAbility,
|
|
496
|
+
resolveNumberValue(ability, level, field[2])
|
|
497
|
+
)
|
|
498
|
+
end
|
|
499
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
475
500
|
end
|
|
476
501
|
end
|
|
477
502
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -483,18 +508,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
483
508
|
self._behaviors = behaviors
|
|
484
509
|
end
|
|
485
510
|
end
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
if
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
511
|
+
if parameters ~= nil then
|
|
512
|
+
local additionalParameters = {}
|
|
513
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
514
|
+
if not buffParametersKeys[key] then
|
|
515
|
+
if ability then
|
|
516
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
517
|
+
else
|
|
518
|
+
additionalParameters[key] = parameters[key]
|
|
519
|
+
end
|
|
493
520
|
end
|
|
494
521
|
end
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
522
|
+
if (next(additionalParameters)) ~= nil then
|
|
523
|
+
self.parameters = additionalParameters
|
|
524
|
+
end
|
|
498
525
|
end
|
|
499
526
|
end
|
|
500
527
|
if duration ~= nil and duration > 0 then
|
|
@@ -504,65 +531,65 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
504
531
|
end
|
|
505
532
|
self:onCreate()
|
|
506
533
|
self[100] = 1
|
|
534
|
+
Event.invoke(buffCreatedEvent, self)
|
|
507
535
|
end
|
|
508
|
-
function Buff.prototype.
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
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
|
|
512
543
|
end
|
|
513
|
-
function Buff.prototype.
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
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
|
|
518
550
|
end
|
|
519
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
520
551
|
end
|
|
521
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)
|
|
522
571
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
523
|
-
Effect:flash(
|
|
572
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
524
573
|
else
|
|
525
574
|
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
|
|
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
|
|
534
579
|
if isWidgetProvided then
|
|
535
|
-
|
|
580
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
536
581
|
else
|
|
537
|
-
|
|
582
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
538
583
|
end
|
|
539
|
-
__TS__SparseArrayPush(
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
__TS__SparseArraySpread(
|
|
584
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
585
|
+
____Effect_flash_41(
|
|
586
|
+
____Effect_40,
|
|
587
|
+
__TS__SparseArraySpread(____array_39)
|
|
543
588
|
)
|
|
544
589
|
end
|
|
545
590
|
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
|
-
)
|
|
591
|
+
function Buff.prototype.expire(self)
|
|
592
|
+
expireBuff(self)
|
|
566
593
|
end
|
|
567
594
|
function Buff.prototype.onCreate(self)
|
|
568
595
|
end
|
|
@@ -592,26 +619,33 @@ function Buff.prototype.onDestroy(self)
|
|
|
592
619
|
behavior:destroy()
|
|
593
620
|
end
|
|
594
621
|
end
|
|
595
|
-
|
|
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
|
|
629
|
+
unit:decrementInvulnerabilityCounter()
|
|
630
|
+
end
|
|
631
|
+
if self[142] then
|
|
596
632
|
unit:decrementDisableAutoAttackCounter()
|
|
597
633
|
end
|
|
598
|
-
if self[
|
|
599
|
-
if self[
|
|
600
|
-
unit:
|
|
634
|
+
if self[140] then
|
|
635
|
+
if self[141] then
|
|
636
|
+
unit:decrementForceStunCounter()
|
|
601
637
|
end
|
|
602
638
|
unit:decrementStunCounter()
|
|
603
639
|
end
|
|
640
|
+
if self[139] then
|
|
641
|
+
unit:decrementGhostCounter()
|
|
642
|
+
end
|
|
604
643
|
if self._abilityTypeIds ~= nil then
|
|
605
|
-
for abilityTypeId in
|
|
644
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
606
645
|
unit:removeAbility(abilityTypeId)
|
|
607
646
|
end
|
|
608
647
|
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)
|
|
648
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
615
649
|
self[100] = 3
|
|
616
650
|
return UnitBehavior.prototype.onDestroy(self)
|
|
617
651
|
end
|
|
@@ -640,8 +674,8 @@ function Buff.apply(self, ...)
|
|
|
640
674
|
end
|
|
641
675
|
end
|
|
642
676
|
function Buff.getByTypeId(self, unit, typeId)
|
|
643
|
-
local
|
|
644
|
-
local buff =
|
|
677
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
678
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
645
679
|
if __TS__InstanceOf(buff, self) then
|
|
646
680
|
return buff
|
|
647
681
|
end
|
|
@@ -655,9 +689,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
655
689
|
if self[121] ~= nil then
|
|
656
690
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
657
691
|
end
|
|
658
|
-
if self[
|
|
692
|
+
if self[145] then
|
|
659
693
|
unit:explode()
|
|
660
|
-
elseif self[
|
|
694
|
+
elseif self[144] then
|
|
661
695
|
unit:kill()
|
|
662
696
|
end
|
|
663
697
|
end
|
|
@@ -712,6 +746,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
712
746
|
end
|
|
713
747
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
714
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
|
|
715
761
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
716
762
|
self[133] = damageReceivedEventCount
|
|
717
763
|
if damageReceivedEventCount == self[134] then
|
|
@@ -799,8 +845,8 @@ __TS__SetDescriptor(
|
|
|
799
845
|
return
|
|
800
846
|
end
|
|
801
847
|
self[112] = damageInterval
|
|
802
|
-
local
|
|
803
|
-
local elapsed =
|
|
848
|
+
local ____opt_45 = self._timer
|
|
849
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
804
850
|
local timer = self[114]
|
|
805
851
|
if timer == nil then
|
|
806
852
|
timer = Timer:create()
|
|
@@ -879,8 +925,8 @@ __TS__SetDescriptor(
|
|
|
879
925
|
return
|
|
880
926
|
end
|
|
881
927
|
self[117] = healingInterval
|
|
882
|
-
local
|
|
883
|
-
local elapsed =
|
|
928
|
+
local ____opt_47 = self._timer
|
|
929
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
884
930
|
local timer = self[119]
|
|
885
931
|
if timer == nil then
|
|
886
932
|
timer = Timer:create()
|
|
@@ -961,30 +1007,79 @@ __TS__SetDescriptor(
|
|
|
961
1007
|
},
|
|
962
1008
|
true
|
|
963
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
|
+
)
|
|
1036
|
+
__TS__SetDescriptor(
|
|
1037
|
+
Buff.prototype,
|
|
1038
|
+
"turnsIntoGhost",
|
|
1039
|
+
{
|
|
1040
|
+
get = function(self)
|
|
1041
|
+
local ____self__139_49 = self[139]
|
|
1042
|
+
if ____self__139_49 == nil then
|
|
1043
|
+
____self__139_49 = false
|
|
1044
|
+
end
|
|
1045
|
+
return ____self__139_49
|
|
1046
|
+
end,
|
|
1047
|
+
set = function(self, turnsIntoGhost)
|
|
1048
|
+
if not turnsIntoGhost and self[139] then
|
|
1049
|
+
self.object:decrementGhostCounter()
|
|
1050
|
+
self[139] = nil
|
|
1051
|
+
elseif turnsIntoGhost and not self[139] then
|
|
1052
|
+
self.object:incrementGhostCounter()
|
|
1053
|
+
self[139] = true
|
|
1054
|
+
end
|
|
1055
|
+
end
|
|
1056
|
+
},
|
|
1057
|
+
true
|
|
1058
|
+
)
|
|
964
1059
|
__TS__SetDescriptor(
|
|
965
1060
|
Buff.prototype,
|
|
966
1061
|
"stuns",
|
|
967
1062
|
{
|
|
968
1063
|
get = function(self)
|
|
969
|
-
local
|
|
970
|
-
if
|
|
971
|
-
|
|
1064
|
+
local ____self__140_50 = self[140]
|
|
1065
|
+
if ____self__140_50 == nil then
|
|
1066
|
+
____self__140_50 = false
|
|
972
1067
|
end
|
|
973
|
-
return
|
|
1068
|
+
return ____self__140_50
|
|
974
1069
|
end,
|
|
975
1070
|
set = function(self, stuns)
|
|
976
|
-
if not stuns and self[
|
|
977
|
-
if self[
|
|
978
|
-
self.object:
|
|
1071
|
+
if not stuns and self[140] then
|
|
1072
|
+
if self[141] then
|
|
1073
|
+
self.object:decrementForceStunCounter()
|
|
979
1074
|
end
|
|
980
1075
|
self.object:decrementStunCounter()
|
|
981
|
-
self[
|
|
982
|
-
elseif stuns and not self[
|
|
983
|
-
if self[
|
|
984
|
-
self.object:
|
|
1076
|
+
self[140] = nil
|
|
1077
|
+
elseif stuns and not self[140] then
|
|
1078
|
+
if self[141] then
|
|
1079
|
+
self.object:incrementForceStunCounter()
|
|
985
1080
|
end
|
|
986
1081
|
self.object:incrementStunCounter()
|
|
987
|
-
self[
|
|
1082
|
+
self[140] = true
|
|
988
1083
|
end
|
|
989
1084
|
end
|
|
990
1085
|
},
|
|
@@ -995,23 +1090,23 @@ __TS__SetDescriptor(
|
|
|
995
1090
|
"ignoresStunImmunity",
|
|
996
1091
|
{
|
|
997
1092
|
get = function(self)
|
|
998
|
-
local
|
|
999
|
-
if
|
|
1000
|
-
|
|
1093
|
+
local ____self__141_51 = self[141]
|
|
1094
|
+
if ____self__141_51 == nil then
|
|
1095
|
+
____self__141_51 = false
|
|
1001
1096
|
end
|
|
1002
|
-
return
|
|
1097
|
+
return ____self__141_51
|
|
1003
1098
|
end,
|
|
1004
1099
|
set = function(self, ignoresStunImmunity)
|
|
1005
|
-
if not ignoresStunImmunity and self[
|
|
1006
|
-
if self[
|
|
1007
|
-
self.object:
|
|
1100
|
+
if not ignoresStunImmunity and self[141] then
|
|
1101
|
+
if self[140] then
|
|
1102
|
+
self.object:decrementForceStunCounter()
|
|
1008
1103
|
end
|
|
1009
|
-
self[
|
|
1010
|
-
elseif ignoresStunImmunity and not self[
|
|
1011
|
-
if self[
|
|
1012
|
-
self.object:
|
|
1104
|
+
self[141] = nil
|
|
1105
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1106
|
+
if self[140] then
|
|
1107
|
+
self.object:incrementForceStunCounter()
|
|
1013
1108
|
end
|
|
1014
|
-
self[
|
|
1109
|
+
self[141] = true
|
|
1015
1110
|
end
|
|
1016
1111
|
end
|
|
1017
1112
|
},
|
|
@@ -1022,19 +1117,19 @@ __TS__SetDescriptor(
|
|
|
1022
1117
|
"disablesAutoAttack",
|
|
1023
1118
|
{
|
|
1024
1119
|
get = function(self)
|
|
1025
|
-
local
|
|
1026
|
-
if
|
|
1027
|
-
|
|
1120
|
+
local ____self__142_52 = self[142]
|
|
1121
|
+
if ____self__142_52 == nil then
|
|
1122
|
+
____self__142_52 = false
|
|
1028
1123
|
end
|
|
1029
|
-
return
|
|
1124
|
+
return ____self__142_52
|
|
1030
1125
|
end,
|
|
1031
1126
|
set = function(self, disablesAutoAttack)
|
|
1032
|
-
if not disablesAutoAttack and self[
|
|
1127
|
+
if not disablesAutoAttack and self[142] then
|
|
1033
1128
|
self.object:decrementDisableAutoAttackCounter()
|
|
1034
|
-
self[
|
|
1035
|
-
elseif disablesAutoAttack and not self[
|
|
1129
|
+
self[142] = nil
|
|
1130
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1036
1131
|
self.object:incrementDisableAutoAttackCounter()
|
|
1037
|
-
self[
|
|
1132
|
+
self[142] = true
|
|
1038
1133
|
end
|
|
1039
1134
|
end
|
|
1040
1135
|
},
|
|
@@ -1045,19 +1140,19 @@ __TS__SetDescriptor(
|
|
|
1045
1140
|
"providesInvulnerability",
|
|
1046
1141
|
{
|
|
1047
1142
|
get = function(self)
|
|
1048
|
-
local
|
|
1049
|
-
if
|
|
1050
|
-
|
|
1143
|
+
local ____self__143_53 = self[143]
|
|
1144
|
+
if ____self__143_53 == nil then
|
|
1145
|
+
____self__143_53 = false
|
|
1051
1146
|
end
|
|
1052
|
-
return
|
|
1147
|
+
return ____self__143_53
|
|
1053
1148
|
end,
|
|
1054
1149
|
set = function(self, providesInvulnerability)
|
|
1055
|
-
if not providesInvulnerability and self[
|
|
1150
|
+
if not providesInvulnerability and self[143] then
|
|
1056
1151
|
self.object:decrementInvulnerabilityCounter()
|
|
1057
|
-
self[
|
|
1058
|
-
elseif providesInvulnerability and not self[
|
|
1152
|
+
self[143] = nil
|
|
1153
|
+
elseif providesInvulnerability and not self[143] then
|
|
1059
1154
|
self.object:incrementInvulnerabilityCounter()
|
|
1060
|
-
self[
|
|
1155
|
+
self[143] = true
|
|
1061
1156
|
end
|
|
1062
1157
|
end
|
|
1063
1158
|
},
|
|
@@ -1068,17 +1163,17 @@ __TS__SetDescriptor(
|
|
|
1068
1163
|
"killsOnExpiration",
|
|
1069
1164
|
{
|
|
1070
1165
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1166
|
+
local ____self__144_54 = self[144]
|
|
1167
|
+
if ____self__144_54 == nil then
|
|
1168
|
+
____self__144_54 = false
|
|
1074
1169
|
end
|
|
1075
|
-
return
|
|
1170
|
+
return ____self__144_54
|
|
1076
1171
|
end,
|
|
1077
1172
|
set = function(self, killsOnExpiration)
|
|
1078
|
-
if not killsOnExpiration and self[
|
|
1079
|
-
self[
|
|
1080
|
-
elseif killsOnExpiration and not self[
|
|
1081
|
-
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
|
|
1082
1177
|
end
|
|
1083
1178
|
end
|
|
1084
1179
|
},
|
|
@@ -1089,17 +1184,17 @@ __TS__SetDescriptor(
|
|
|
1089
1184
|
"explodesOnExpiration",
|
|
1090
1185
|
{
|
|
1091
1186
|
get = function(self)
|
|
1092
|
-
local
|
|
1093
|
-
if
|
|
1094
|
-
|
|
1187
|
+
local ____self__145_55 = self[145]
|
|
1188
|
+
if ____self__145_55 == nil then
|
|
1189
|
+
____self__145_55 = false
|
|
1095
1190
|
end
|
|
1096
|
-
return
|
|
1191
|
+
return ____self__145_55
|
|
1097
1192
|
end,
|
|
1098
1193
|
set = function(self, killsOnExpiration)
|
|
1099
|
-
if not killsOnExpiration and self[
|
|
1100
|
-
self[
|
|
1101
|
-
elseif killsOnExpiration and not self[
|
|
1102
|
-
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
|
|
1103
1198
|
end
|
|
1104
1199
|
end
|
|
1105
1200
|
},
|
|
@@ -1208,12 +1303,39 @@ __TS__SetDescriptor(
|
|
|
1208
1303
|
},
|
|
1209
1304
|
true
|
|
1210
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
|
+
)
|
|
1211
1319
|
__TS__SetDescriptor(
|
|
1212
1320
|
Buff.prototype,
|
|
1213
1321
|
"duration",
|
|
1214
|
-
{
|
|
1215
|
-
|
|
1216
|
-
|
|
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
|
+
},
|
|
1217
1339
|
true
|
|
1218
1340
|
)
|
|
1219
1341
|
__TS__SetDescriptor(
|
|
@@ -1221,13 +1343,13 @@ __TS__SetDescriptor(
|
|
|
1221
1343
|
"remainingDuration",
|
|
1222
1344
|
{
|
|
1223
1345
|
get = function(self)
|
|
1224
|
-
local
|
|
1225
|
-
return
|
|
1346
|
+
local ____opt_56 = self._timer
|
|
1347
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1226
1348
|
end,
|
|
1227
1349
|
set = function(self, remainingDuration)
|
|
1228
|
-
local
|
|
1229
|
-
local
|
|
1230
|
-
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)
|
|
1231
1353
|
if remainingDurationDelta ~= 0 then
|
|
1232
1354
|
self[103] = self[103] + remainingDurationDelta
|
|
1233
1355
|
if remainingDuration <= 0 then
|
|
@@ -1242,7 +1364,7 @@ __TS__SetDescriptor(
|
|
|
1242
1364
|
remainingDuration,
|
|
1243
1365
|
self._spellStealPriority,
|
|
1244
1366
|
self._learnLevelMinimum,
|
|
1245
|
-
self[
|
|
1367
|
+
self[146]
|
|
1246
1368
|
) then
|
|
1247
1369
|
local timer = self._timer
|
|
1248
1370
|
if timer == nil then
|
|
@@ -1257,7 +1379,99 @@ __TS__SetDescriptor(
|
|
|
1257
1379
|
},
|
|
1258
1380
|
true
|
|
1259
1381
|
)
|
|
1260
|
-
|
|
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;
|
|
1261
1475
|
(function(self)
|
|
1262
1476
|
local function destroyBuffIfNeeded(buff)
|
|
1263
1477
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1311,5 +1525,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1311
1525
|
____exports.checkBuffs(target)
|
|
1312
1526
|
end
|
|
1313
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)
|
|
1314
1534
|
end)(Buff)
|
|
1315
1535
|
return ____exports
|