warscript 0.0.1-dev.c79b20b → 0.0.1-dev.c7b0c06
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/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +4 -0
- package/core/types/frame.lua +142 -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 -24
- package/core/types/sound.lua +100 -25
- 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.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +16 -3
- package/engine/behavior.lua +233 -73
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- 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 +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
- package/engine/behaviour/ability/remove-buffs.lua +49 -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 +28 -7
- package/engine/behaviour/ability.lua +137 -43
- 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 +119 -54
- package/engine/buff.lua +565 -298
- package/engine/internal/ability.d.ts +23 -14
- package/engine/internal/ability.lua +129 -85
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +20 -19
- package/engine/internal/item.lua +191 -74
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- 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 +45 -1
- package/engine/internal/unit/ability.lua +128 -17
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- 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 +8 -0
- package/engine/internal/unit/bonus.lua +50 -3
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/{unit+item.d.ts → unit/item.d.ts} +5 -4
- package/engine/internal/{unit+item.lua → unit/item.lua} +32 -11
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +36 -0
- 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 +70 -13
- package/engine/internal/unit.d.ts +60 -28
- package/engine/internal/unit.lua +482 -283
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +14 -2
- package/engine/local-client.lua +168 -1
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -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/sound-preset-name.d.ts +5 -1
- 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 +12 -1
- 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/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 +177 -40
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- 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 +15 -1
- package/engine/object-data/entry/item-type.lua +93 -2
- 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 +25 -5
- package/engine/object-data/entry/unit-type.lua +258 -93
- 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-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +12 -6
- package/engine/object-field/ability.lua +11 -7
- 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 +362 -117
- 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 +4 -2
- package/engine/standard/fields/ability.lua +4 -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 +9 -1
- package/engine/unit.lua +9 -1
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- 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 +1 -4
- package/package.json +5 -5
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +25 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +10 -1
- package/utility/arrays.lua +45 -3
- 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/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -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/ability-disable-counter.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,13 +29,11 @@ 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
|
|
37
35
|
local ____preconditions = require("utility.preconditions")
|
|
36
|
+
local check = ____preconditions.check
|
|
38
37
|
local checkNotNull = ____preconditions.checkNotNull
|
|
39
38
|
local ____effect = require("core.types.effect")
|
|
40
39
|
local Effect = ____effect.Effect
|
|
@@ -43,9 +42,22 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
43
42
|
local ____unit = require("engine.behaviour.unit")
|
|
44
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
45
44
|
local ____arrays = require("utility.arrays")
|
|
45
|
+
local emptyArray = ____arrays.emptyArray
|
|
46
46
|
local forEach = ____arrays.forEach
|
|
47
|
+
local ____event = require("event")
|
|
48
|
+
local Event = ____event.Event
|
|
47
49
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
50
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
51
|
+
local ____item = require("engine.internal.item")
|
|
52
|
+
local Item = ____item.Item
|
|
53
|
+
local ____destructable = require("core.types.destructable")
|
|
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
|
|
49
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
50
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
51
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -91,15 +103,20 @@ local buffParametersKeys = {
|
|
|
91
103
|
damageIncrease = true,
|
|
92
104
|
damageIncreaseFactor = true,
|
|
93
105
|
armorIncrease = true,
|
|
94
|
-
|
|
106
|
+
maxHealthIncrease = true,
|
|
107
|
+
maxManaIncrease = true,
|
|
95
108
|
attackSpeedIncreaseFactor = true,
|
|
96
109
|
movementSpeedIncreaseFactor = true,
|
|
110
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
111
|
+
evasionProbability = true,
|
|
112
|
+
missProbability = true,
|
|
97
113
|
damageFactor = true,
|
|
98
114
|
receivedDamageFactor = true,
|
|
99
115
|
receivedMagicDamageFactor = true,
|
|
100
116
|
durationIncreaseOnAutoAttack = true,
|
|
101
117
|
maximumDuration = true,
|
|
102
118
|
maximumRemainingDuration = true,
|
|
119
|
+
turnsIntoGhost = true,
|
|
103
120
|
stuns = true,
|
|
104
121
|
ignoresStunImmunity = true,
|
|
105
122
|
providesStunImmunity = true,
|
|
@@ -110,11 +127,15 @@ local buffParametersKeys = {
|
|
|
110
127
|
maximumAutoAttackCount = true,
|
|
111
128
|
maximumDamageDealtEventCount = true,
|
|
112
129
|
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
113
133
|
uniqueGroup = true,
|
|
114
134
|
damageOnExpiration = true,
|
|
115
135
|
healingOnExpiration = true,
|
|
116
136
|
killsOnExpiration = true,
|
|
117
|
-
explodesOnExpiration = true
|
|
137
|
+
explodesOnExpiration = true,
|
|
138
|
+
abilityCooldownFactor = true
|
|
118
139
|
}
|
|
119
140
|
local function resolveEnumValue(ability, level, value)
|
|
120
141
|
if value == nil or type(value) == "number" then
|
|
@@ -165,6 +186,8 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
165
186
|
end
|
|
166
187
|
end
|
|
167
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
190
|
+
"turnsIntoGhost",
|
|
168
191
|
"stuns",
|
|
169
192
|
"ignoresStunImmunity",
|
|
170
193
|
"disablesAutoAttack",
|
|
@@ -176,7 +199,11 @@ local buffNumberParameters = {
|
|
|
176
199
|
"durationIncreaseOnAutoAttack",
|
|
177
200
|
"attackSpeedIncreaseFactor",
|
|
178
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
203
|
+
"evasionProbability",
|
|
179
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
180
207
|
"damageFactor",
|
|
181
208
|
"receivedDamageFactor",
|
|
182
209
|
"maximumAutoAttackCount",
|
|
@@ -189,7 +216,10 @@ local buffNumberParameters = {
|
|
|
189
216
|
"healingPerInterval",
|
|
190
217
|
"healingOverDuration",
|
|
191
218
|
"damageOnExpiration",
|
|
192
|
-
"healingOnExpiration"
|
|
219
|
+
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
222
|
+
"abilityCooldownFactor"
|
|
193
223
|
}
|
|
194
224
|
local unsuccessfulApplicationMarker = {}
|
|
195
225
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -216,7 +246,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
216
246
|
return checkNotNull(firstNativeBuffTypeId)
|
|
217
247
|
end
|
|
218
248
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
219
|
-
if buff[
|
|
249
|
+
if buff[104] == uniqueGroup then
|
|
220
250
|
buff:destroy()
|
|
221
251
|
end
|
|
222
252
|
end
|
|
@@ -224,17 +254,17 @@ local function destroyBuff(buff)
|
|
|
224
254
|
buff:destroy()
|
|
225
255
|
end
|
|
226
256
|
local function expireBuff(buff)
|
|
227
|
-
local remainingDamageOverDuration = buff[
|
|
228
|
-
local remainingHealingOverDuration = buff[
|
|
257
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
258
|
+
local remainingHealingOverDuration = buff[113] or 0
|
|
229
259
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
230
260
|
buff:flashSpecialEffect()
|
|
231
261
|
if remainingDamageOverDuration ~= 0 then
|
|
232
|
-
(buff[
|
|
233
|
-
buff[
|
|
262
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
263
|
+
buff[113] = nil
|
|
234
264
|
end
|
|
235
265
|
if remainingHealingOverDuration ~= 0 then
|
|
236
|
-
(buff[
|
|
237
|
-
buff[
|
|
266
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
267
|
+
buff[118] = nil
|
|
238
268
|
end
|
|
239
269
|
end
|
|
240
270
|
Timer:run(destroyBuff, buff)
|
|
@@ -242,56 +272,58 @@ local function expireBuff(buff)
|
|
|
242
272
|
end
|
|
243
273
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
244
274
|
buffDamageIntervalTimerCallback(buff)
|
|
245
|
-
local timer = buff[
|
|
246
|
-
local damageInterval = buff[
|
|
275
|
+
local timer = buff[114]
|
|
276
|
+
local damageInterval = buff[112]
|
|
247
277
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
248
278
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
249
279
|
end
|
|
250
280
|
end
|
|
251
281
|
buffDamageIntervalTimerCallback = function(buff)
|
|
252
282
|
buff:flashSpecialEffect()
|
|
253
|
-
local source = buff[
|
|
254
|
-
local remainingDamageOverDuration = buff[
|
|
283
|
+
local source = buff[102] or buff[101]
|
|
284
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
255
285
|
if remainingDamageOverDuration ~= 0 then
|
|
256
|
-
local damageInterval = buff[
|
|
286
|
+
local damageInterval = buff[112] or 0
|
|
257
287
|
if damageInterval ~= 0 then
|
|
258
288
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
259
|
-
source:damageTarget(buff[
|
|
260
|
-
buff[
|
|
289
|
+
source:damageTarget(buff[101], damage)
|
|
290
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
261
291
|
end
|
|
262
292
|
end
|
|
263
|
-
local damagePerInterval = buff[
|
|
293
|
+
local damagePerInterval = buff[111] or 0
|
|
264
294
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
265
|
-
source:damageTarget(buff[
|
|
295
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
266
296
|
end
|
|
267
297
|
end
|
|
268
298
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
269
299
|
buffHealingIntervalTimerCallback(buff)
|
|
270
|
-
local timer = buff[
|
|
271
|
-
local healingInterval = buff[
|
|
300
|
+
local timer = buff[119]
|
|
301
|
+
local healingInterval = buff[117]
|
|
272
302
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
273
303
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
274
304
|
end
|
|
275
305
|
end
|
|
276
306
|
buffHealingIntervalTimerCallback = function(buff)
|
|
277
|
-
if buff[
|
|
307
|
+
if buff[117] ~= buff[112] then
|
|
278
308
|
buff:flashSpecialEffect()
|
|
279
309
|
end
|
|
280
|
-
local source = buff[
|
|
281
|
-
local remainingHealingOverDuration = buff[
|
|
310
|
+
local source = buff[102] or buff[101]
|
|
311
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
282
312
|
if remainingHealingOverDuration ~= 0 then
|
|
283
|
-
local healingInterval = buff[
|
|
313
|
+
local healingInterval = buff[117] or 0
|
|
284
314
|
if healingInterval ~= 0 then
|
|
285
315
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
286
|
-
source:healTarget(buff[
|
|
287
|
-
buff[
|
|
316
|
+
source:healTarget(buff[101], healing)
|
|
317
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
288
318
|
end
|
|
289
319
|
end
|
|
290
|
-
local healingPerInterval = buff[
|
|
320
|
+
local healingPerInterval = buff[116] or 0
|
|
291
321
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
292
|
-
source:healTarget(buff[
|
|
322
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
293
323
|
end
|
|
294
324
|
end
|
|
325
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
326
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
295
327
|
____exports.Buff = __TS__Class()
|
|
296
328
|
local Buff = ____exports.Buff
|
|
297
329
|
Buff.name = "Buff"
|
|
@@ -300,38 +332,44 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
300
332
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
301
333
|
self._unit = _unit
|
|
302
334
|
self.parameters = nil
|
|
303
|
-
self[100] =
|
|
335
|
+
self[100] = 0
|
|
336
|
+
self[101] = _unit
|
|
304
337
|
local typeId
|
|
305
338
|
local polarity
|
|
306
339
|
local resistanceType
|
|
307
340
|
local ability
|
|
341
|
+
local abilityBehavior
|
|
308
342
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
309
343
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
310
344
|
polarity = resistanceTypeOrPolarity
|
|
311
345
|
resistanceType = abilityOrParametersOrResistanceType
|
|
312
|
-
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
|
|
313
350
|
ability = parametersOrAbility
|
|
314
|
-
|
|
315
|
-
ability = nil
|
|
351
|
+
elseif parametersOrAbility ~= nil then
|
|
316
352
|
parameters = parametersOrAbility
|
|
317
353
|
end
|
|
318
354
|
else
|
|
319
355
|
typeId = typeIdOrTypeIds
|
|
320
356
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
321
357
|
resistanceType = resistanceTypeOrPolarity
|
|
322
|
-
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
|
|
323
363
|
ability = abilityOrParametersOrResistanceType
|
|
324
364
|
parameters = parametersOrAbility
|
|
325
|
-
|
|
326
|
-
ability = nil
|
|
365
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
327
366
|
parameters = abilityOrParametersOrResistanceType
|
|
367
|
+
else
|
|
368
|
+
parameters = parametersOrAbility
|
|
328
369
|
end
|
|
329
370
|
end
|
|
371
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
330
372
|
self.typeId = typeId
|
|
331
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
332
|
-
parameters = ability
|
|
333
|
-
ability = nil
|
|
334
|
-
end
|
|
335
373
|
local defaultParameters = self.constructor.defaultParameters
|
|
336
374
|
local level = parameters and parameters.level or defaultParameters.level
|
|
337
375
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -356,14 +394,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
356
394
|
end
|
|
357
395
|
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
358
396
|
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
397
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
398
|
+
if missProbability ~= nil then
|
|
399
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
400
|
+
self[146] = missProbability
|
|
401
|
+
end
|
|
359
402
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
360
403
|
if buffByTypeId == nil then
|
|
361
404
|
buffByTypeId = {}
|
|
362
405
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
363
406
|
end
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
407
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
408
|
+
local ____opt_15 = self.previousBuff
|
|
409
|
+
if ____opt_15 ~= nil then
|
|
410
|
+
____opt_15:destroy()
|
|
367
411
|
end
|
|
368
412
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
369
413
|
if uniqueGroup ~= nil then
|
|
@@ -377,13 +421,16 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
377
421
|
level,
|
|
378
422
|
duration,
|
|
379
423
|
spellStealPriority,
|
|
380
|
-
learnLevelMinimum
|
|
424
|
+
learnLevelMinimum,
|
|
425
|
+
missProbability
|
|
381
426
|
) then
|
|
427
|
+
self[100] = 1
|
|
382
428
|
UnitBehavior.prototype.destroy(self)
|
|
383
429
|
error(unsuccessfulApplicationMarker, 0)
|
|
384
430
|
end
|
|
385
431
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
386
432
|
if handle == nil then
|
|
433
|
+
self[100] = 1
|
|
387
434
|
UnitBehavior.prototype.destroy(self)
|
|
388
435
|
error(unsuccessfulApplicationMarker, 0)
|
|
389
436
|
end
|
|
@@ -392,20 +439,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
392
439
|
self._level = level
|
|
393
440
|
self._spellStealPriority = spellStealPriority
|
|
394
441
|
self._learnLevelMinimum = learnLevelMinimum
|
|
395
|
-
self[
|
|
396
|
-
self[
|
|
397
|
-
self[
|
|
398
|
-
self[
|
|
399
|
-
self[
|
|
442
|
+
self[102] = source
|
|
443
|
+
self[103] = duration or 0
|
|
444
|
+
self[104] = uniqueGroup
|
|
445
|
+
self[105] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
446
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
400
447
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
401
448
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
402
|
-
local
|
|
403
|
-
local
|
|
404
|
-
local
|
|
405
|
-
if
|
|
406
|
-
|
|
449
|
+
local ____ability_24 = ability
|
|
450
|
+
local ____level_25 = level
|
|
451
|
+
local ____temp_23 = parameters and parameters[buffBooleanParameter]
|
|
452
|
+
if ____temp_23 == nil then
|
|
453
|
+
____temp_23 = defaultParameters[buffBooleanParameter]
|
|
407
454
|
end
|
|
408
|
-
if resolveBooleanValue(
|
|
455
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
409
456
|
self[buffBooleanParameter] = true
|
|
410
457
|
end
|
|
411
458
|
end
|
|
@@ -421,11 +468,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
421
468
|
end
|
|
422
469
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
423
470
|
if maximumDuration ~= nil then
|
|
424
|
-
self[
|
|
471
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
425
472
|
end
|
|
426
473
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
427
474
|
if maximumRemainingDuration ~= nil then
|
|
428
|
-
self[
|
|
475
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
429
476
|
end
|
|
430
477
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
431
478
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -434,24 +481,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
434
481
|
abilityTypeIds = {}
|
|
435
482
|
self._abilityTypeIds = abilityTypeIds
|
|
436
483
|
end
|
|
437
|
-
for
|
|
484
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
485
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
438
486
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
439
487
|
if addedAbility ~= nil then
|
|
440
488
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
441
489
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
445
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
446
|
-
end
|
|
447
|
-
elseif abilityParameterKey ~= "level" then
|
|
448
|
-
abilityParameterKey:setValue(
|
|
449
|
-
addedAbility,
|
|
450
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
451
|
-
)
|
|
452
|
-
end
|
|
490
|
+
if abilityParameters.isButtonVisible == false then
|
|
491
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
453
492
|
end
|
|
454
|
-
|
|
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
|
|
455
500
|
end
|
|
456
501
|
end
|
|
457
502
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -463,18 +508,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
463
508
|
self._behaviors = behaviors
|
|
464
509
|
end
|
|
465
510
|
end
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
if
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
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
|
|
473
520
|
end
|
|
474
521
|
end
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
522
|
+
if (next(additionalParameters)) ~= nil then
|
|
523
|
+
self.parameters = additionalParameters
|
|
524
|
+
end
|
|
478
525
|
end
|
|
479
526
|
end
|
|
480
527
|
if duration ~= nil and duration > 0 then
|
|
@@ -482,77 +529,87 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
482
529
|
timer:start(duration, false, expireBuff, self)
|
|
483
530
|
self._timer = timer
|
|
484
531
|
end
|
|
532
|
+
self:onCreate()
|
|
533
|
+
self[100] = 1
|
|
534
|
+
Event.invoke(buffCreatedEvent, self)
|
|
485
535
|
end
|
|
486
|
-
function Buff.prototype.
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
local bonusIdByBonusType = self._bonusIdByBonusType
|
|
493
|
-
if bonusIdByBonusType == nil then
|
|
494
|
-
bonusIdByBonusType = {}
|
|
495
|
-
self._bonusIdByBonusType = bonusIdByBonusType
|
|
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
|
|
496
542
|
end
|
|
497
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
498
543
|
end
|
|
499
|
-
function Buff.prototype.
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
506
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
507
|
-
)
|
|
508
|
-
local ____isWidgetProvided_38
|
|
509
|
-
if isWidgetProvided then
|
|
510
|
-
____isWidgetProvided_38 = duration
|
|
511
|
-
else
|
|
512
|
-
____isWidgetProvided_38 = widgetOrDuration
|
|
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
|
|
513
550
|
end
|
|
514
|
-
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
515
|
-
____Effect_flash_41(
|
|
516
|
-
____Effect_40,
|
|
517
|
-
__TS__SparseArraySpread(____array_39)
|
|
518
|
-
)
|
|
519
551
|
end
|
|
520
|
-
function Buff.prototype.
|
|
521
|
-
|
|
522
|
-
local ____Effect_44 = Effect
|
|
523
|
-
local ____Effect_flash_45 = Effect.flash
|
|
524
|
-
local ____array_43 = __TS__SparseArrayNew(
|
|
552
|
+
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
553
|
+
self:flash(
|
|
525
554
|
self[105],
|
|
526
|
-
|
|
527
|
-
|
|
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
|
|
528
568
|
)
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
569
|
+
end
|
|
570
|
+
function Buff.prototype.flash(self, modelPath, attachmentPoint, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
571
|
+
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
572
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
532
573
|
else
|
|
533
|
-
|
|
574
|
+
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
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
|
|
579
|
+
if isWidgetProvided then
|
|
580
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
581
|
+
else
|
|
582
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
583
|
+
end
|
|
584
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
585
|
+
____Effect_flash_41(
|
|
586
|
+
____Effect_40,
|
|
587
|
+
__TS__SparseArraySpread(____array_39)
|
|
588
|
+
)
|
|
534
589
|
end
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
590
|
+
end
|
|
591
|
+
function Buff.prototype.expire(self)
|
|
592
|
+
expireBuff(self)
|
|
593
|
+
end
|
|
594
|
+
function Buff.prototype.onCreate(self)
|
|
540
595
|
end
|
|
541
596
|
function Buff.prototype.onDestroy(self)
|
|
597
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
598
|
+
self[100] = 2
|
|
542
599
|
local unit = self._unit
|
|
543
600
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
544
601
|
removeBuff(unit.handle, self.typeId)
|
|
545
602
|
end
|
|
546
603
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
547
|
-
local healingIntervalTimer = self[
|
|
604
|
+
local healingIntervalTimer = self[119]
|
|
548
605
|
if healingIntervalTimer ~= nil then
|
|
549
606
|
healingIntervalTimer:destroy()
|
|
550
|
-
self[
|
|
607
|
+
self[119] = nil
|
|
551
608
|
end
|
|
552
|
-
local damageIntervalTimer = self[
|
|
609
|
+
local damageIntervalTimer = self[114]
|
|
553
610
|
if damageIntervalTimer ~= nil then
|
|
554
611
|
damageIntervalTimer:destroy()
|
|
555
|
-
self[
|
|
612
|
+
self[114] = nil
|
|
556
613
|
end
|
|
557
614
|
if self._timer ~= nil then
|
|
558
615
|
self._timer:destroy()
|
|
@@ -562,25 +619,34 @@ function Buff.prototype.onDestroy(self)
|
|
|
562
619
|
behavior:destroy()
|
|
563
620
|
end
|
|
564
621
|
end
|
|
565
|
-
|
|
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
|
|
566
632
|
unit:decrementDisableAutoAttackCounter()
|
|
567
633
|
end
|
|
568
|
-
if self[
|
|
569
|
-
if self[
|
|
570
|
-
unit:
|
|
634
|
+
if self[140] then
|
|
635
|
+
if self[141] then
|
|
636
|
+
unit:decrementForceStunCounter()
|
|
571
637
|
end
|
|
572
638
|
unit:decrementStunCounter()
|
|
573
639
|
end
|
|
640
|
+
if self[139] then
|
|
641
|
+
unit:decrementGhostCounter()
|
|
642
|
+
end
|
|
574
643
|
if self._abilityTypeIds ~= nil then
|
|
575
|
-
for abilityTypeId in
|
|
644
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
576
645
|
unit:removeAbility(abilityTypeId)
|
|
577
646
|
end
|
|
578
647
|
end
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
582
|
-
end
|
|
583
|
-
end
|
|
648
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
649
|
+
self[100] = 3
|
|
584
650
|
return UnitBehavior.prototype.onDestroy(self)
|
|
585
651
|
end
|
|
586
652
|
function Buff.apply(self, ...)
|
|
@@ -608,8 +674,8 @@ function Buff.apply(self, ...)
|
|
|
608
674
|
end
|
|
609
675
|
end
|
|
610
676
|
function Buff.getByTypeId(self, unit, typeId)
|
|
611
|
-
local
|
|
612
|
-
local buff =
|
|
677
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
678
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
613
679
|
if __TS__InstanceOf(buff, self) then
|
|
614
680
|
return buff
|
|
615
681
|
end
|
|
@@ -617,72 +683,84 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
617
683
|
end
|
|
618
684
|
function Buff.prototype.onExpiration(self)
|
|
619
685
|
local unit = self.unit
|
|
620
|
-
if self[119] ~= nil then
|
|
621
|
-
(self[101] or unit):damageTarget(unit, self[119] or 0)
|
|
622
|
-
end
|
|
623
686
|
if self[120] ~= nil then
|
|
624
|
-
(self[
|
|
687
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
625
688
|
end
|
|
626
|
-
if self[
|
|
689
|
+
if self[121] ~= nil then
|
|
690
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
691
|
+
end
|
|
692
|
+
if self[145] then
|
|
627
693
|
unit:explode()
|
|
628
|
-
elseif self[
|
|
694
|
+
elseif self[144] then
|
|
629
695
|
unit:kill()
|
|
630
696
|
end
|
|
631
697
|
end
|
|
632
698
|
function Buff.prototype.onDeath(self, source)
|
|
633
699
|
local unit = self.unit
|
|
634
|
-
if self[
|
|
700
|
+
if self[122] ~= nil then
|
|
635
701
|
damageArea(
|
|
636
|
-
self[
|
|
637
|
-
self[
|
|
702
|
+
self[102] or unit,
|
|
703
|
+
self[122],
|
|
638
704
|
unit.x,
|
|
639
705
|
unit.y,
|
|
706
|
+
self[124] or 0,
|
|
640
707
|
self[123] or 0,
|
|
641
|
-
self[
|
|
708
|
+
self[126] or 0,
|
|
642
709
|
self[125] or 0,
|
|
643
|
-
self[
|
|
644
|
-
self[127] or 0
|
|
645
|
-
self[126] or 0
|
|
710
|
+
self[128] or 0,
|
|
711
|
+
self[127] or 0
|
|
646
712
|
)
|
|
647
713
|
end
|
|
648
714
|
end
|
|
649
715
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
650
716
|
if event.isAttack then
|
|
651
|
-
if self[
|
|
652
|
-
local durationIncrease = self[
|
|
653
|
-
local maximumDuration = self[
|
|
717
|
+
if self[107] ~= nil then
|
|
718
|
+
local durationIncrease = self[107]
|
|
719
|
+
local maximumDuration = self[108] or 0
|
|
654
720
|
if maximumDuration > 0 then
|
|
655
721
|
durationIncrease = min(
|
|
656
722
|
durationIncrease,
|
|
657
|
-
max(0, maximumDuration - self[
|
|
723
|
+
max(0, maximumDuration - self[103])
|
|
658
724
|
)
|
|
659
725
|
end
|
|
660
726
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
661
|
-
local maximumRemainingDuration = self[
|
|
727
|
+
local maximumRemainingDuration = self[109] or 0
|
|
662
728
|
if maximumRemainingDuration > 0 then
|
|
663
729
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
664
730
|
end
|
|
665
731
|
self.remainingDuration = remainingDuration
|
|
666
732
|
end
|
|
667
|
-
local autoAttackCount = (self[
|
|
668
|
-
self[
|
|
669
|
-
if autoAttackCount == self[
|
|
733
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
734
|
+
self[129] = autoAttackCount
|
|
735
|
+
if autoAttackCount == self[130] then
|
|
670
736
|
self:destroy()
|
|
671
737
|
end
|
|
672
738
|
end
|
|
673
739
|
if event.originalAmount ~= 0 then
|
|
674
|
-
local damageDealtEventCount = (self[
|
|
675
|
-
self[
|
|
676
|
-
if damageDealtEventCount == self[
|
|
740
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
741
|
+
self[131] = damageDealtEventCount
|
|
742
|
+
if damageDealtEventCount == self[132] then
|
|
677
743
|
self:destroy()
|
|
678
744
|
end
|
|
679
745
|
end
|
|
680
746
|
end
|
|
681
747
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
682
748
|
if event.originalAmount ~= 0 then
|
|
683
|
-
local
|
|
684
|
-
|
|
685
|
-
|
|
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
|
|
761
|
+
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
762
|
+
self[133] = damageReceivedEventCount
|
|
763
|
+
if damageReceivedEventCount == self[134] then
|
|
686
764
|
self:destroy()
|
|
687
765
|
end
|
|
688
766
|
end
|
|
@@ -692,7 +770,7 @@ __TS__SetDescriptor(
|
|
|
692
770
|
Buff.prototype,
|
|
693
771
|
"source",
|
|
694
772
|
{get = function(self)
|
|
695
|
-
return self[
|
|
773
|
+
return self[102] or self._unit
|
|
696
774
|
end},
|
|
697
775
|
true
|
|
698
776
|
)
|
|
@@ -709,13 +787,13 @@ __TS__SetDescriptor(
|
|
|
709
787
|
"remainingDamageOverDuration",
|
|
710
788
|
{
|
|
711
789
|
get = function(self)
|
|
712
|
-
return self[
|
|
790
|
+
return self[113] or 0
|
|
713
791
|
end,
|
|
714
792
|
set = function(self, remainingDamageOverDuration)
|
|
715
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
716
|
-
self[
|
|
717
|
-
local damageOverDuration = (self[
|
|
718
|
-
self[
|
|
793
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[113] or 0)
|
|
794
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
795
|
+
local damageOverDuration = (self[110] or 0) + remainingDamageOverDurationDelta
|
|
796
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
719
797
|
end
|
|
720
798
|
},
|
|
721
799
|
true
|
|
@@ -725,13 +803,13 @@ __TS__SetDescriptor(
|
|
|
725
803
|
"damageOverDuration",
|
|
726
804
|
{
|
|
727
805
|
get = function(self)
|
|
728
|
-
return self[
|
|
806
|
+
return self[110] or 0
|
|
729
807
|
end,
|
|
730
808
|
set = function(self, damageOverDuration)
|
|
731
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
732
|
-
self[
|
|
733
|
-
local remainingDamageOverDuration = (self[
|
|
734
|
-
self[
|
|
809
|
+
local damageOverDurationDelta = damageOverDuration - (self[110] or 0)
|
|
810
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
811
|
+
local remainingDamageOverDuration = (self[113] or 0) + damageOverDurationDelta
|
|
812
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
735
813
|
end
|
|
736
814
|
},
|
|
737
815
|
true
|
|
@@ -741,10 +819,10 @@ __TS__SetDescriptor(
|
|
|
741
819
|
"damagePerInterval",
|
|
742
820
|
{
|
|
743
821
|
get = function(self)
|
|
744
|
-
return self[
|
|
822
|
+
return self[111] or 0
|
|
745
823
|
end,
|
|
746
824
|
set = function(self, damagePerInterval)
|
|
747
|
-
self[
|
|
825
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
748
826
|
end
|
|
749
827
|
},
|
|
750
828
|
true
|
|
@@ -754,25 +832,25 @@ __TS__SetDescriptor(
|
|
|
754
832
|
"damageInterval",
|
|
755
833
|
{
|
|
756
834
|
get = function(self)
|
|
757
|
-
return self[
|
|
835
|
+
return self[112] or 0
|
|
758
836
|
end,
|
|
759
837
|
set = function(self, damageInterval)
|
|
760
838
|
if damageInterval <= 0 then
|
|
761
|
-
self[
|
|
762
|
-
local timer = self[
|
|
839
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
840
|
+
local timer = self[114]
|
|
763
841
|
if timer ~= nil then
|
|
764
842
|
timer:destroy()
|
|
765
|
-
self[
|
|
843
|
+
self[114] = nil
|
|
766
844
|
end
|
|
767
845
|
return
|
|
768
846
|
end
|
|
769
|
-
self[
|
|
770
|
-
local
|
|
771
|
-
local elapsed =
|
|
772
|
-
local timer = self[
|
|
847
|
+
self[112] = damageInterval
|
|
848
|
+
local ____opt_45 = self._timer
|
|
849
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
850
|
+
local timer = self[114]
|
|
773
851
|
if timer == nil then
|
|
774
852
|
timer = Timer:create()
|
|
775
|
-
self[
|
|
853
|
+
self[114] = timer
|
|
776
854
|
end
|
|
777
855
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
778
856
|
if initialDelay == damageInterval then
|
|
@@ -789,13 +867,13 @@ __TS__SetDescriptor(
|
|
|
789
867
|
"remainingHealingOverDuration",
|
|
790
868
|
{
|
|
791
869
|
get = function(self)
|
|
792
|
-
return self[
|
|
870
|
+
return self[118] or 0
|
|
793
871
|
end,
|
|
794
872
|
set = function(self, remainingHealingOverDuration)
|
|
795
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
796
|
-
self[
|
|
797
|
-
local healingOverDuration = (self[
|
|
798
|
-
self[
|
|
873
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[118] or 0)
|
|
874
|
+
self[113] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
875
|
+
local healingOverDuration = (self[115] or 0) + remainingHealingOverDurationDelta
|
|
876
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
799
877
|
end
|
|
800
878
|
},
|
|
801
879
|
true
|
|
@@ -805,13 +883,13 @@ __TS__SetDescriptor(
|
|
|
805
883
|
"healingOverDuration",
|
|
806
884
|
{
|
|
807
885
|
get = function(self)
|
|
808
|
-
return self[
|
|
886
|
+
return self[115] or 0
|
|
809
887
|
end,
|
|
810
888
|
set = function(self, healingOverDuration)
|
|
811
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
812
|
-
self[
|
|
813
|
-
local remainingHealingOverDuration = (self[
|
|
814
|
-
self[
|
|
889
|
+
local healingOverDurationDelta = healingOverDuration - (self[115] or 0)
|
|
890
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
891
|
+
local remainingHealingOverDuration = (self[118] or 0) + healingOverDurationDelta
|
|
892
|
+
self[118] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
815
893
|
end
|
|
816
894
|
},
|
|
817
895
|
true
|
|
@@ -821,10 +899,10 @@ __TS__SetDescriptor(
|
|
|
821
899
|
"healingPerInterval",
|
|
822
900
|
{
|
|
823
901
|
get = function(self)
|
|
824
|
-
return self[
|
|
902
|
+
return self[116] or 0
|
|
825
903
|
end,
|
|
826
904
|
set = function(self, healingPerInterval)
|
|
827
|
-
self[
|
|
905
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
828
906
|
end
|
|
829
907
|
},
|
|
830
908
|
true
|
|
@@ -834,25 +912,25 @@ __TS__SetDescriptor(
|
|
|
834
912
|
"healingInterval",
|
|
835
913
|
{
|
|
836
914
|
get = function(self)
|
|
837
|
-
return self[
|
|
915
|
+
return self[117] or 0
|
|
838
916
|
end,
|
|
839
917
|
set = function(self, healingInterval)
|
|
840
918
|
if healingInterval <= 0 then
|
|
841
|
-
self[
|
|
842
|
-
local timer = self[
|
|
919
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
920
|
+
local timer = self[119]
|
|
843
921
|
if timer ~= nil then
|
|
844
922
|
timer:destroy()
|
|
845
|
-
self[
|
|
923
|
+
self[119] = nil
|
|
846
924
|
end
|
|
847
925
|
return
|
|
848
926
|
end
|
|
849
|
-
self[
|
|
850
|
-
local
|
|
851
|
-
local elapsed =
|
|
852
|
-
local timer = self[
|
|
927
|
+
self[117] = healingInterval
|
|
928
|
+
local ____opt_47 = self._timer
|
|
929
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
930
|
+
local timer = self[119]
|
|
853
931
|
if timer == nil then
|
|
854
932
|
timer = Timer:create()
|
|
855
|
-
self[
|
|
933
|
+
self[119] = timer
|
|
856
934
|
end
|
|
857
935
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
858
936
|
if initialDelay == healingInterval then
|
|
@@ -869,10 +947,10 @@ __TS__SetDescriptor(
|
|
|
869
947
|
"damageOnExpiration",
|
|
870
948
|
{
|
|
871
949
|
get = function(self)
|
|
872
|
-
return self[
|
|
950
|
+
return self[120] or 0
|
|
873
951
|
end,
|
|
874
952
|
set = function(self, damageOnExpiration)
|
|
875
|
-
self[
|
|
953
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
876
954
|
end
|
|
877
955
|
},
|
|
878
956
|
true
|
|
@@ -882,10 +960,10 @@ __TS__SetDescriptor(
|
|
|
882
960
|
"healingOnExpiration",
|
|
883
961
|
{
|
|
884
962
|
get = function(self)
|
|
885
|
-
return self[
|
|
963
|
+
return self[121] or 0
|
|
886
964
|
end,
|
|
887
965
|
set = function(self, healingOnExpiration)
|
|
888
|
-
self[
|
|
966
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
889
967
|
end
|
|
890
968
|
},
|
|
891
969
|
true
|
|
@@ -929,30 +1007,79 @@ __TS__SetDescriptor(
|
|
|
929
1007
|
},
|
|
930
1008
|
true
|
|
931
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
|
+
)
|
|
932
1059
|
__TS__SetDescriptor(
|
|
933
1060
|
Buff.prototype,
|
|
934
1061
|
"stuns",
|
|
935
1062
|
{
|
|
936
1063
|
get = function(self)
|
|
937
|
-
local
|
|
938
|
-
if
|
|
939
|
-
|
|
1064
|
+
local ____self__140_50 = self[140]
|
|
1065
|
+
if ____self__140_50 == nil then
|
|
1066
|
+
____self__140_50 = false
|
|
940
1067
|
end
|
|
941
|
-
return
|
|
1068
|
+
return ____self__140_50
|
|
942
1069
|
end,
|
|
943
1070
|
set = function(self, stuns)
|
|
944
|
-
if not stuns and self[
|
|
945
|
-
if self[
|
|
946
|
-
self.object:
|
|
1071
|
+
if not stuns and self[140] then
|
|
1072
|
+
if self[141] then
|
|
1073
|
+
self.object:decrementForceStunCounter()
|
|
947
1074
|
end
|
|
948
1075
|
self.object:decrementStunCounter()
|
|
949
|
-
self[
|
|
950
|
-
elseif stuns and not self[
|
|
951
|
-
if self[
|
|
952
|
-
self.object:
|
|
1076
|
+
self[140] = nil
|
|
1077
|
+
elseif stuns and not self[140] then
|
|
1078
|
+
if self[141] then
|
|
1079
|
+
self.object:incrementForceStunCounter()
|
|
953
1080
|
end
|
|
954
1081
|
self.object:incrementStunCounter()
|
|
955
|
-
self[
|
|
1082
|
+
self[140] = true
|
|
956
1083
|
end
|
|
957
1084
|
end
|
|
958
1085
|
},
|
|
@@ -963,23 +1090,23 @@ __TS__SetDescriptor(
|
|
|
963
1090
|
"ignoresStunImmunity",
|
|
964
1091
|
{
|
|
965
1092
|
get = function(self)
|
|
966
|
-
local
|
|
967
|
-
if
|
|
968
|
-
|
|
1093
|
+
local ____self__141_51 = self[141]
|
|
1094
|
+
if ____self__141_51 == nil then
|
|
1095
|
+
____self__141_51 = false
|
|
969
1096
|
end
|
|
970
|
-
return
|
|
1097
|
+
return ____self__141_51
|
|
971
1098
|
end,
|
|
972
1099
|
set = function(self, ignoresStunImmunity)
|
|
973
|
-
if not ignoresStunImmunity and self[
|
|
974
|
-
if self[
|
|
975
|
-
self.object:
|
|
1100
|
+
if not ignoresStunImmunity and self[141] then
|
|
1101
|
+
if self[140] then
|
|
1102
|
+
self.object:decrementForceStunCounter()
|
|
976
1103
|
end
|
|
977
|
-
self[
|
|
978
|
-
elseif ignoresStunImmunity and not self[
|
|
979
|
-
if self[
|
|
980
|
-
self.object:
|
|
1104
|
+
self[141] = nil
|
|
1105
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1106
|
+
if self[140] then
|
|
1107
|
+
self.object:incrementForceStunCounter()
|
|
981
1108
|
end
|
|
982
|
-
self[
|
|
1109
|
+
self[141] = true
|
|
983
1110
|
end
|
|
984
1111
|
end
|
|
985
1112
|
},
|
|
@@ -990,19 +1117,19 @@ __TS__SetDescriptor(
|
|
|
990
1117
|
"disablesAutoAttack",
|
|
991
1118
|
{
|
|
992
1119
|
get = function(self)
|
|
993
|
-
local
|
|
994
|
-
if
|
|
995
|
-
|
|
1120
|
+
local ____self__142_52 = self[142]
|
|
1121
|
+
if ____self__142_52 == nil then
|
|
1122
|
+
____self__142_52 = false
|
|
996
1123
|
end
|
|
997
|
-
return
|
|
1124
|
+
return ____self__142_52
|
|
998
1125
|
end,
|
|
999
1126
|
set = function(self, disablesAutoAttack)
|
|
1000
|
-
if not disablesAutoAttack and self[
|
|
1127
|
+
if not disablesAutoAttack and self[142] then
|
|
1001
1128
|
self.object:decrementDisableAutoAttackCounter()
|
|
1002
|
-
self[
|
|
1003
|
-
elseif disablesAutoAttack and not self[
|
|
1129
|
+
self[142] = nil
|
|
1130
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1004
1131
|
self.object:incrementDisableAutoAttackCounter()
|
|
1005
|
-
self[
|
|
1132
|
+
self[142] = true
|
|
1006
1133
|
end
|
|
1007
1134
|
end
|
|
1008
1135
|
},
|
|
@@ -1013,19 +1140,19 @@ __TS__SetDescriptor(
|
|
|
1013
1140
|
"providesInvulnerability",
|
|
1014
1141
|
{
|
|
1015
1142
|
get = function(self)
|
|
1016
|
-
local
|
|
1017
|
-
if
|
|
1018
|
-
|
|
1143
|
+
local ____self__143_53 = self[143]
|
|
1144
|
+
if ____self__143_53 == nil then
|
|
1145
|
+
____self__143_53 = false
|
|
1019
1146
|
end
|
|
1020
|
-
return
|
|
1147
|
+
return ____self__143_53
|
|
1021
1148
|
end,
|
|
1022
1149
|
set = function(self, providesInvulnerability)
|
|
1023
|
-
if not providesInvulnerability and self[
|
|
1150
|
+
if not providesInvulnerability and self[143] then
|
|
1024
1151
|
self.object:decrementInvulnerabilityCounter()
|
|
1025
|
-
self[
|
|
1026
|
-
elseif providesInvulnerability and not self[
|
|
1152
|
+
self[143] = nil
|
|
1153
|
+
elseif providesInvulnerability and not self[143] then
|
|
1027
1154
|
self.object:incrementInvulnerabilityCounter()
|
|
1028
|
-
self[
|
|
1155
|
+
self[143] = true
|
|
1029
1156
|
end
|
|
1030
1157
|
end
|
|
1031
1158
|
},
|
|
@@ -1036,17 +1163,17 @@ __TS__SetDescriptor(
|
|
|
1036
1163
|
"killsOnExpiration",
|
|
1037
1164
|
{
|
|
1038
1165
|
get = function(self)
|
|
1039
|
-
local
|
|
1040
|
-
if
|
|
1041
|
-
|
|
1166
|
+
local ____self__144_54 = self[144]
|
|
1167
|
+
if ____self__144_54 == nil then
|
|
1168
|
+
____self__144_54 = false
|
|
1042
1169
|
end
|
|
1043
|
-
return
|
|
1170
|
+
return ____self__144_54
|
|
1044
1171
|
end,
|
|
1045
1172
|
set = function(self, killsOnExpiration)
|
|
1046
|
-
if not killsOnExpiration and self[
|
|
1047
|
-
self[
|
|
1048
|
-
elseif killsOnExpiration and not self[
|
|
1049
|
-
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
|
|
1050
1177
|
end
|
|
1051
1178
|
end
|
|
1052
1179
|
},
|
|
@@ -1057,17 +1184,17 @@ __TS__SetDescriptor(
|
|
|
1057
1184
|
"explodesOnExpiration",
|
|
1058
1185
|
{
|
|
1059
1186
|
get = function(self)
|
|
1060
|
-
local
|
|
1061
|
-
if
|
|
1062
|
-
|
|
1187
|
+
local ____self__145_55 = self[145]
|
|
1188
|
+
if ____self__145_55 == nil then
|
|
1189
|
+
____self__145_55 = false
|
|
1063
1190
|
end
|
|
1064
|
-
return
|
|
1191
|
+
return ____self__145_55
|
|
1065
1192
|
end,
|
|
1066
1193
|
set = function(self, killsOnExpiration)
|
|
1067
|
-
if not killsOnExpiration and self[
|
|
1068
|
-
self[
|
|
1069
|
-
elseif killsOnExpiration and not self[
|
|
1070
|
-
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
|
|
1071
1198
|
end
|
|
1072
1199
|
end
|
|
1073
1200
|
},
|
|
@@ -1078,13 +1205,13 @@ __TS__SetDescriptor(
|
|
|
1078
1205
|
"maximumDamageDealtEventCount",
|
|
1079
1206
|
{
|
|
1080
1207
|
get = function(self)
|
|
1081
|
-
return self[
|
|
1208
|
+
return self[132] or 0
|
|
1082
1209
|
end,
|
|
1083
1210
|
set = function(self, maximumDamageDealtEventCount)
|
|
1084
1211
|
if maximumDamageDealtEventCount == 0 then
|
|
1085
|
-
self[
|
|
1212
|
+
self[132] = nil
|
|
1086
1213
|
else
|
|
1087
|
-
self[
|
|
1214
|
+
self[132] = maximumDamageDealtEventCount
|
|
1088
1215
|
end
|
|
1089
1216
|
end
|
|
1090
1217
|
},
|
|
@@ -1095,13 +1222,13 @@ __TS__SetDescriptor(
|
|
|
1095
1222
|
"maximumDamageReceivedEventCount",
|
|
1096
1223
|
{
|
|
1097
1224
|
get = function(self)
|
|
1098
|
-
return self[
|
|
1225
|
+
return self[134] or 0
|
|
1099
1226
|
end,
|
|
1100
1227
|
set = function(self, maximumDamageReceivedEventCount)
|
|
1101
1228
|
if maximumDamageReceivedEventCount == 0 then
|
|
1102
|
-
self[
|
|
1229
|
+
self[134] = nil
|
|
1103
1230
|
else
|
|
1104
|
-
self[
|
|
1231
|
+
self[134] = maximumDamageReceivedEventCount
|
|
1105
1232
|
end
|
|
1106
1233
|
end
|
|
1107
1234
|
},
|
|
@@ -1112,13 +1239,13 @@ __TS__SetDescriptor(
|
|
|
1112
1239
|
"maximumAutoAttackCount",
|
|
1113
1240
|
{
|
|
1114
1241
|
get = function(self)
|
|
1115
|
-
return self[
|
|
1242
|
+
return self[130] or 0
|
|
1116
1243
|
end,
|
|
1117
1244
|
set = function(self, maximumAutoAttackCount)
|
|
1118
1245
|
if maximumAutoAttackCount == 0 then
|
|
1119
|
-
self[
|
|
1246
|
+
self[130] = nil
|
|
1120
1247
|
else
|
|
1121
|
-
self[
|
|
1248
|
+
self[130] = maximumAutoAttackCount
|
|
1122
1249
|
end
|
|
1123
1250
|
end
|
|
1124
1251
|
},
|
|
@@ -1129,10 +1256,10 @@ __TS__SetDescriptor(
|
|
|
1129
1256
|
"durationIncreaseOnAutoAttack",
|
|
1130
1257
|
{
|
|
1131
1258
|
get = function(self)
|
|
1132
|
-
return self[
|
|
1259
|
+
return self[107] or 0
|
|
1133
1260
|
end,
|
|
1134
1261
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1135
|
-
self[
|
|
1262
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
1136
1263
|
end
|
|
1137
1264
|
},
|
|
1138
1265
|
true
|
|
@@ -1163,12 +1290,52 @@ __TS__SetDescriptor(
|
|
|
1163
1290
|
},
|
|
1164
1291
|
true
|
|
1165
1292
|
)
|
|
1293
|
+
__TS__SetDescriptor(
|
|
1294
|
+
Buff.prototype,
|
|
1295
|
+
"evasionProbability",
|
|
1296
|
+
{
|
|
1297
|
+
get = function(self)
|
|
1298
|
+
return self:getUnitBonus(UnitBonusType.EVASION_PROBABILITY)
|
|
1299
|
+
end,
|
|
1300
|
+
set = function(self, evasionProbability)
|
|
1301
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.EVASION_PROBABILITY, evasionProbability)
|
|
1302
|
+
end
|
|
1303
|
+
},
|
|
1304
|
+
true
|
|
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
|
+
)
|
|
1166
1319
|
__TS__SetDescriptor(
|
|
1167
1320
|
Buff.prototype,
|
|
1168
1321
|
"duration",
|
|
1169
|
-
{
|
|
1170
|
-
|
|
1171
|
-
|
|
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
|
+
},
|
|
1172
1339
|
true
|
|
1173
1340
|
)
|
|
1174
1341
|
__TS__SetDescriptor(
|
|
@@ -1176,15 +1343,15 @@ __TS__SetDescriptor(
|
|
|
1176
1343
|
"remainingDuration",
|
|
1177
1344
|
{
|
|
1178
1345
|
get = function(self)
|
|
1179
|
-
local
|
|
1180
|
-
return
|
|
1346
|
+
local ____opt_56 = self._timer
|
|
1347
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1181
1348
|
end,
|
|
1182
1349
|
set = function(self, remainingDuration)
|
|
1183
|
-
local
|
|
1184
|
-
local
|
|
1185
|
-
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)
|
|
1186
1353
|
if remainingDurationDelta ~= 0 then
|
|
1187
|
-
self[
|
|
1354
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1188
1355
|
if remainingDuration <= 0 then
|
|
1189
1356
|
Timer:run(destroyBuff, self)
|
|
1190
1357
|
else
|
|
@@ -1196,7 +1363,8 @@ __TS__SetDescriptor(
|
|
|
1196
1363
|
self._level,
|
|
1197
1364
|
remainingDuration,
|
|
1198
1365
|
self._spellStealPriority,
|
|
1199
|
-
self._learnLevelMinimum
|
|
1366
|
+
self._learnLevelMinimum,
|
|
1367
|
+
self[146]
|
|
1200
1368
|
) then
|
|
1201
1369
|
local timer = self._timer
|
|
1202
1370
|
if timer == nil then
|
|
@@ -1210,10 +1378,103 @@ __TS__SetDescriptor(
|
|
|
1210
1378
|
end
|
|
1211
1379
|
},
|
|
1212
1380
|
true
|
|
1213
|
-
)
|
|
1381
|
+
)
|
|
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;
|
|
1214
1475
|
(function(self)
|
|
1215
1476
|
local function destroyBuffIfNeeded(buff)
|
|
1216
|
-
if getUnitAbility(buff[
|
|
1477
|
+
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
1217
1478
|
buff:destroy()
|
|
1218
1479
|
end
|
|
1219
1480
|
end
|
|
@@ -1264,5 +1525,11 @@ __TS__SetDescriptor(
|
|
|
1264
1525
|
____exports.checkBuffs(target)
|
|
1265
1526
|
end
|
|
1266
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)
|
|
1267
1534
|
end)(Buff)
|
|
1268
1535
|
return ____exports
|