warscript 0.0.1-dev.8fe1307 → 0.0.1-dev.90da649
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/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- 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 +8 -0
- package/core/types/frame.lua +117 -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 +99 -24
- 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 +8 -5
- 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 +39 -11
- package/engine/behaviour/ability/damage.lua +83 -37
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- 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 +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +22 -5
- package/engine/behaviour/ability.lua +113 -48
- package/engine/behaviour/unit/stun-immunity.d.ts +11 -5
- package/engine/behaviour/unit/stun-immunity.lua +53 -28
- package/engine/behaviour/unit.d.ts +45 -2
- package/engine/behaviour/unit.lua +279 -6
- package/engine/buff.d.ts +115 -42
- package/engine/buff.lua +533 -215
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- 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/misc/ability-disable-counter.d.ts +2 -0
- 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/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/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/bonus.d.ts +8 -2
- package/engine/internal/unit/bonus.lua +33 -1
- 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/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- 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/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +12 -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+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +63 -13
- package/engine/internal/unit.d.ts +65 -23
- package/engine/internal/unit.lua +462 -202
- 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 +9 -2
- package/engine/local-client.lua +112 -0
- 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/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/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/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 +19 -17
- package/engine/object-data/entry/ability-type.lua +93 -36
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- 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 +28 -5
- package/engine/object-field/ability.lua +59 -5
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +25 -6
- package/engine/object-field.lua +359 -116
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -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 +6 -0
- package/engine/unit.lua +6 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +7 -2
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/buff.lua +3 -4
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/patch-lualib.lua +1 -1
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- 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-set.d.ts +13 -2
- package/utility/linked-set.lua +27 -3
- 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/reflection.lua +11 -7
- package/utility/types.d.ts +4 -0
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
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
|
|
@@ -44,8 +43,18 @@ local ____unit = require("engine.behaviour.unit")
|
|
|
44
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
45
44
|
local ____arrays = require("utility.arrays")
|
|
46
45
|
local forEach = ____arrays.forEach
|
|
46
|
+
local ____event = require("event")
|
|
47
|
+
local Event = ____event.Event
|
|
47
48
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
49
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
50
|
+
local ____item = require("engine.internal.item")
|
|
51
|
+
local Item = ____item.Item
|
|
52
|
+
local ____destructable = require("core.types.destructable")
|
|
53
|
+
local Destructable = ____destructable.Destructable
|
|
54
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
55
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
56
|
+
local ____ability = require("engine.behaviour.ability")
|
|
57
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
49
58
|
local getUnitAbility = BlzGetUnitAbility
|
|
50
59
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
51
60
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -94,11 +103,16 @@ local buffParametersKeys = {
|
|
|
94
103
|
armorIncreaseFactor = true,
|
|
95
104
|
attackSpeedIncreaseFactor = true,
|
|
96
105
|
movementSpeedIncreaseFactor = true,
|
|
106
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
107
|
+
evasionProbability = true,
|
|
108
|
+
missProbability = true,
|
|
109
|
+
damageFactor = true,
|
|
97
110
|
receivedDamageFactor = true,
|
|
98
111
|
receivedMagicDamageFactor = true,
|
|
99
112
|
durationIncreaseOnAutoAttack = true,
|
|
100
113
|
maximumDuration = true,
|
|
101
114
|
maximumRemainingDuration = true,
|
|
115
|
+
turnsIntoGhost = true,
|
|
102
116
|
stuns = true,
|
|
103
117
|
ignoresStunImmunity = true,
|
|
104
118
|
providesStunImmunity = true,
|
|
@@ -107,8 +121,27 @@ local buffParametersKeys = {
|
|
|
107
121
|
disablesAutoAttack = true,
|
|
108
122
|
destroysOnDamage = true,
|
|
109
123
|
maximumAutoAttackCount = true,
|
|
110
|
-
|
|
124
|
+
maximumDamageDealtEventCount = true,
|
|
125
|
+
maximumDamageReceivedEventCount = true,
|
|
126
|
+
uniqueGroup = true,
|
|
127
|
+
damageOnExpiration = true,
|
|
128
|
+
healingOnExpiration = true,
|
|
129
|
+
killsOnExpiration = true,
|
|
130
|
+
explodesOnExpiration = true,
|
|
131
|
+
abilityCooldownFactor = true
|
|
111
132
|
}
|
|
133
|
+
local function resolveEnumValue(ability, level, value)
|
|
134
|
+
if value == nil or type(value) == "number" then
|
|
135
|
+
return value
|
|
136
|
+
end
|
|
137
|
+
if ability == nil then
|
|
138
|
+
error(
|
|
139
|
+
__TS__New(IllegalArgumentException),
|
|
140
|
+
0
|
|
141
|
+
)
|
|
142
|
+
end
|
|
143
|
+
return value:getValue(ability, level or ability.level)
|
|
144
|
+
end
|
|
112
145
|
local function resolveNumberValue(ability, level, value)
|
|
113
146
|
if value == nil or type(value) == "number" then
|
|
114
147
|
return value
|
|
@@ -145,20 +178,36 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
145
178
|
buff[property] = resolvedValue
|
|
146
179
|
end
|
|
147
180
|
end
|
|
148
|
-
local buffBooleanParameters = {
|
|
181
|
+
local buffBooleanParameters = {
|
|
182
|
+
"turnsIntoGhost",
|
|
183
|
+
"stuns",
|
|
184
|
+
"ignoresStunImmunity",
|
|
185
|
+
"disablesAutoAttack",
|
|
186
|
+
"providesInvulnerability",
|
|
187
|
+
"killsOnExpiration",
|
|
188
|
+
"explodesOnExpiration"
|
|
189
|
+
}
|
|
149
190
|
local buffNumberParameters = {
|
|
150
191
|
"durationIncreaseOnAutoAttack",
|
|
151
192
|
"attackSpeedIncreaseFactor",
|
|
152
193
|
"movementSpeedIncreaseFactor",
|
|
194
|
+
"manaRegenerationRateIncreaseFactor",
|
|
195
|
+
"evasionProbability",
|
|
153
196
|
"armorIncrease",
|
|
197
|
+
"damageFactor",
|
|
154
198
|
"receivedDamageFactor",
|
|
155
199
|
"maximumAutoAttackCount",
|
|
200
|
+
"maximumDamageDealtEventCount",
|
|
201
|
+
"maximumDamageReceivedEventCount",
|
|
156
202
|
"damageInterval",
|
|
157
203
|
"damagePerInterval",
|
|
158
204
|
"damageOverDuration",
|
|
159
205
|
"healingInterval",
|
|
160
206
|
"healingPerInterval",
|
|
161
|
-
"healingOverDuration"
|
|
207
|
+
"healingOverDuration",
|
|
208
|
+
"damageOnExpiration",
|
|
209
|
+
"healingOnExpiration",
|
|
210
|
+
"abilityCooldownFactor"
|
|
162
211
|
}
|
|
163
212
|
local unsuccessfulApplicationMarker = {}
|
|
164
213
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -185,7 +234,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
185
234
|
return checkNotNull(firstNativeBuffTypeId)
|
|
186
235
|
end
|
|
187
236
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
188
|
-
if buff[
|
|
237
|
+
if buff[104] == uniqueGroup then
|
|
189
238
|
buff:destroy()
|
|
190
239
|
end
|
|
191
240
|
end
|
|
@@ -193,73 +242,76 @@ local function destroyBuff(buff)
|
|
|
193
242
|
buff:destroy()
|
|
194
243
|
end
|
|
195
244
|
local function expireBuff(buff)
|
|
196
|
-
local remainingDamageOverDuration = buff[
|
|
197
|
-
local remainingHealingOverDuration = buff[
|
|
245
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
246
|
+
local remainingHealingOverDuration = buff[113] or 0
|
|
198
247
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
199
248
|
buff:flashSpecialEffect()
|
|
200
249
|
if remainingDamageOverDuration ~= 0 then
|
|
201
|
-
(buff[
|
|
202
|
-
buff[
|
|
250
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
251
|
+
buff[113] = nil
|
|
203
252
|
end
|
|
204
253
|
if remainingHealingOverDuration ~= 0 then
|
|
205
|
-
(buff[
|
|
206
|
-
buff[
|
|
254
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
255
|
+
buff[118] = nil
|
|
207
256
|
end
|
|
208
257
|
end
|
|
209
258
|
Timer:run(destroyBuff, buff)
|
|
259
|
+
buff:onExpiration()
|
|
210
260
|
end
|
|
211
261
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
212
262
|
buffDamageIntervalTimerCallback(buff)
|
|
213
|
-
local timer = buff[
|
|
214
|
-
local damageInterval = buff[
|
|
263
|
+
local timer = buff[114]
|
|
264
|
+
local damageInterval = buff[112]
|
|
215
265
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
216
266
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
217
267
|
end
|
|
218
268
|
end
|
|
219
269
|
buffDamageIntervalTimerCallback = function(buff)
|
|
220
270
|
buff:flashSpecialEffect()
|
|
221
|
-
local source = buff[
|
|
222
|
-
local remainingDamageOverDuration = buff[
|
|
271
|
+
local source = buff[102] or buff[101]
|
|
272
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
223
273
|
if remainingDamageOverDuration ~= 0 then
|
|
224
|
-
local damageInterval = buff[
|
|
274
|
+
local damageInterval = buff[112] or 0
|
|
225
275
|
if damageInterval ~= 0 then
|
|
226
276
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
227
|
-
source:damageTarget(buff[
|
|
228
|
-
buff[
|
|
277
|
+
source:damageTarget(buff[101], damage)
|
|
278
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
229
279
|
end
|
|
230
280
|
end
|
|
231
|
-
local damagePerInterval = buff[
|
|
281
|
+
local damagePerInterval = buff[111] or 0
|
|
232
282
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
233
|
-
source:damageTarget(buff[
|
|
283
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
234
284
|
end
|
|
235
285
|
end
|
|
236
286
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
237
287
|
buffHealingIntervalTimerCallback(buff)
|
|
238
|
-
local timer = buff[
|
|
239
|
-
local healingInterval = buff[
|
|
288
|
+
local timer = buff[119]
|
|
289
|
+
local healingInterval = buff[117]
|
|
240
290
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
241
291
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
242
292
|
end
|
|
243
293
|
end
|
|
244
294
|
buffHealingIntervalTimerCallback = function(buff)
|
|
245
|
-
if buff[
|
|
295
|
+
if buff[117] ~= buff[112] then
|
|
246
296
|
buff:flashSpecialEffect()
|
|
247
297
|
end
|
|
248
|
-
local source = buff[
|
|
249
|
-
local remainingHealingOverDuration = buff[
|
|
298
|
+
local source = buff[102] or buff[101]
|
|
299
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
250
300
|
if remainingHealingOverDuration ~= 0 then
|
|
251
|
-
local healingInterval = buff[
|
|
301
|
+
local healingInterval = buff[117] or 0
|
|
252
302
|
if healingInterval ~= 0 then
|
|
253
303
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
254
|
-
source:healTarget(buff[
|
|
255
|
-
buff[
|
|
304
|
+
source:healTarget(buff[101], healing)
|
|
305
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
256
306
|
end
|
|
257
307
|
end
|
|
258
|
-
local healingPerInterval = buff[
|
|
308
|
+
local healingPerInterval = buff[116] or 0
|
|
259
309
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
260
|
-
source:healTarget(buff[
|
|
310
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
261
311
|
end
|
|
262
312
|
end
|
|
313
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
314
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
263
315
|
____exports.Buff = __TS__Class()
|
|
264
316
|
local Buff = ____exports.Buff
|
|
265
317
|
Buff.name = "Buff"
|
|
@@ -268,40 +320,44 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
268
320
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
269
321
|
self._unit = _unit
|
|
270
322
|
self.parameters = nil
|
|
271
|
-
self[100] =
|
|
323
|
+
self[100] = 0
|
|
324
|
+
self[101] = _unit
|
|
272
325
|
local typeId
|
|
273
326
|
local polarity
|
|
274
327
|
local resistanceType
|
|
275
328
|
local ability
|
|
329
|
+
local abilityBehavior
|
|
276
330
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
277
331
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
278
332
|
polarity = resistanceTypeOrPolarity
|
|
279
333
|
resistanceType = abilityOrParametersOrResistanceType
|
|
280
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
334
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
335
|
+
abilityBehavior = parametersOrAbility
|
|
336
|
+
ability = abilityBehavior.ability
|
|
337
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
281
338
|
ability = parametersOrAbility
|
|
282
|
-
|
|
283
|
-
ability = nil
|
|
339
|
+
elseif parametersOrAbility ~= nil then
|
|
284
340
|
parameters = parametersOrAbility
|
|
285
341
|
end
|
|
286
342
|
else
|
|
287
343
|
typeId = typeIdOrTypeIds
|
|
288
344
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
289
345
|
resistanceType = resistanceTypeOrPolarity
|
|
290
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
346
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
347
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
348
|
+
ability = abilityBehavior.ability
|
|
349
|
+
parameters = parametersOrAbility
|
|
350
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
291
351
|
ability = abilityOrParametersOrResistanceType
|
|
292
352
|
parameters = parametersOrAbility
|
|
293
|
-
|
|
294
|
-
ability = nil
|
|
353
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
295
354
|
parameters = abilityOrParametersOrResistanceType
|
|
355
|
+
else
|
|
356
|
+
parameters = parametersOrAbility
|
|
296
357
|
end
|
|
297
358
|
end
|
|
359
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
298
360
|
self.typeId = typeId
|
|
299
|
-
self.polarity = polarity
|
|
300
|
-
self.resistanceType = resistanceType
|
|
301
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
302
|
-
parameters = ability
|
|
303
|
-
ability = nil
|
|
304
|
-
end
|
|
305
361
|
local defaultParameters = self.constructor.defaultParameters
|
|
306
362
|
local level = parameters and parameters.level or defaultParameters.level
|
|
307
363
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -324,14 +380,21 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
324
380
|
learnLevelMinimum = learnLevelMinimum or ability:getField(ABILITY_IF_REQUIRED_LEVEL)
|
|
325
381
|
duration = duration or getAbilityDuration(ability, _unit)
|
|
326
382
|
end
|
|
383
|
+
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
384
|
+
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
385
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
386
|
+
if missProbability ~= nil then
|
|
387
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
388
|
+
self[142] = missProbability
|
|
389
|
+
end
|
|
327
390
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
328
391
|
if buffByTypeId == nil then
|
|
329
392
|
buffByTypeId = {}
|
|
330
393
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
331
394
|
end
|
|
332
|
-
local
|
|
333
|
-
if
|
|
334
|
-
|
|
395
|
+
local ____opt_15 = buffByTypeId[typeId]
|
|
396
|
+
if ____opt_15 ~= nil then
|
|
397
|
+
____opt_15:destroy()
|
|
335
398
|
end
|
|
336
399
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
337
400
|
if uniqueGroup ~= nil then
|
|
@@ -340,18 +403,21 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
340
403
|
if not internalApplyBuff(
|
|
341
404
|
_unit,
|
|
342
405
|
typeId,
|
|
343
|
-
polarity,
|
|
344
|
-
resistanceType,
|
|
406
|
+
self.polarity,
|
|
407
|
+
self.resistanceType,
|
|
345
408
|
level,
|
|
346
409
|
duration,
|
|
347
410
|
spellStealPriority,
|
|
348
|
-
learnLevelMinimum
|
|
411
|
+
learnLevelMinimum,
|
|
412
|
+
missProbability
|
|
349
413
|
) then
|
|
414
|
+
self[100] = 1
|
|
350
415
|
UnitBehavior.prototype.destroy(self)
|
|
351
416
|
error(unsuccessfulApplicationMarker, 0)
|
|
352
417
|
end
|
|
353
418
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
354
419
|
if handle == nil then
|
|
420
|
+
self[100] = 1
|
|
355
421
|
UnitBehavior.prototype.destroy(self)
|
|
356
422
|
error(unsuccessfulApplicationMarker, 0)
|
|
357
423
|
end
|
|
@@ -360,20 +426,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
360
426
|
self._level = level
|
|
361
427
|
self._spellStealPriority = spellStealPriority
|
|
362
428
|
self._learnLevelMinimum = learnLevelMinimum
|
|
363
|
-
self[
|
|
364
|
-
self[
|
|
365
|
-
self[
|
|
366
|
-
self[
|
|
367
|
-
self[
|
|
429
|
+
self[102] = source
|
|
430
|
+
self[103] = duration or 0
|
|
431
|
+
self[104] = uniqueGroup
|
|
432
|
+
self[105] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
433
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
368
434
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
369
435
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
370
|
-
local
|
|
371
|
-
local
|
|
372
|
-
local
|
|
373
|
-
if
|
|
374
|
-
|
|
436
|
+
local ____ability_24 = ability
|
|
437
|
+
local ____level_25 = level
|
|
438
|
+
local ____temp_23 = parameters and parameters[buffBooleanParameter]
|
|
439
|
+
if ____temp_23 == nil then
|
|
440
|
+
____temp_23 = defaultParameters[buffBooleanParameter]
|
|
375
441
|
end
|
|
376
|
-
if resolveBooleanValue(
|
|
442
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
377
443
|
self[buffBooleanParameter] = true
|
|
378
444
|
end
|
|
379
445
|
end
|
|
@@ -389,11 +455,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
389
455
|
end
|
|
390
456
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
391
457
|
if maximumDuration ~= nil then
|
|
392
|
-
self[
|
|
458
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
393
459
|
end
|
|
394
460
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
395
461
|
if maximumRemainingDuration ~= nil then
|
|
396
|
-
self[
|
|
462
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
397
463
|
end
|
|
398
464
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
399
465
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -450,47 +516,57 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
450
516
|
timer:start(duration, false, expireBuff, self)
|
|
451
517
|
self._timer = timer
|
|
452
518
|
end
|
|
519
|
+
self:onCreate()
|
|
520
|
+
self[100] = 1
|
|
521
|
+
Event.invoke(buffCreatedEvent, self)
|
|
453
522
|
end
|
|
454
|
-
function Buff.prototype.
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
523
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
524
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
525
|
+
local abilityCooldownModifier = self[144]
|
|
526
|
+
if abilityCooldownModifier then
|
|
527
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
528
|
+
end
|
|
529
|
+
end
|
|
458
530
|
end
|
|
459
|
-
function Buff.prototype.
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
531
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
532
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
533
|
+
local abilityCooldownModifier = self[144]
|
|
534
|
+
if abilityCooldownModifier then
|
|
535
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
536
|
+
end
|
|
464
537
|
end
|
|
465
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
466
538
|
end
|
|
467
|
-
function Buff.prototype.flashEffect(self,
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
local ____Effect_flash_41 = Effect.flash
|
|
471
|
-
local ____array_39 = __TS__SparseArrayNew(
|
|
472
|
-
self[104],
|
|
473
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
474
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
475
|
-
)
|
|
476
|
-
local ____isWidgetProvided_38
|
|
477
|
-
if isWidgetProvided then
|
|
478
|
-
____isWidgetProvided_38 = duration
|
|
539
|
+
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
540
|
+
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
541
|
+
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
479
542
|
else
|
|
480
|
-
|
|
543
|
+
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
544
|
+
local ____Effect_40 = Effect
|
|
545
|
+
local ____Effect_flash_41 = Effect.flash
|
|
546
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
547
|
+
self[105],
|
|
548
|
+
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
549
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
550
|
+
)
|
|
551
|
+
local ____isWidgetProvided_38
|
|
552
|
+
if isWidgetProvided then
|
|
553
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
554
|
+
else
|
|
555
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
556
|
+
end
|
|
557
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
558
|
+
____Effect_flash_41(
|
|
559
|
+
____Effect_40,
|
|
560
|
+
__TS__SparseArraySpread(____array_39)
|
|
561
|
+
)
|
|
481
562
|
end
|
|
482
|
-
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
483
|
-
____Effect_flash_41(
|
|
484
|
-
____Effect_40,
|
|
485
|
-
__TS__SparseArraySpread(____array_39)
|
|
486
|
-
)
|
|
487
563
|
end
|
|
488
564
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
489
565
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
490
566
|
local ____Effect_44 = Effect
|
|
491
567
|
local ____Effect_flash_45 = Effect.flash
|
|
492
568
|
local ____array_43 = __TS__SparseArrayNew(
|
|
493
|
-
self[
|
|
569
|
+
self[106],
|
|
494
570
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
495
571
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
496
572
|
)
|
|
@@ -506,21 +582,25 @@ function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
|
506
582
|
__TS__SparseArraySpread(____array_43)
|
|
507
583
|
)
|
|
508
584
|
end
|
|
585
|
+
function Buff.prototype.onCreate(self)
|
|
586
|
+
end
|
|
509
587
|
function Buff.prototype.onDestroy(self)
|
|
588
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
589
|
+
self[100] = 2
|
|
510
590
|
local unit = self._unit
|
|
511
591
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
512
592
|
removeBuff(unit.handle, self.typeId)
|
|
513
593
|
end
|
|
514
594
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
515
|
-
local healingIntervalTimer = self[
|
|
595
|
+
local healingIntervalTimer = self[119]
|
|
516
596
|
if healingIntervalTimer ~= nil then
|
|
517
597
|
healingIntervalTimer:destroy()
|
|
518
|
-
self[
|
|
598
|
+
self[119] = nil
|
|
519
599
|
end
|
|
520
|
-
local damageIntervalTimer = self[
|
|
600
|
+
local damageIntervalTimer = self[114]
|
|
521
601
|
if damageIntervalTimer ~= nil then
|
|
522
602
|
damageIntervalTimer:destroy()
|
|
523
|
-
self[
|
|
603
|
+
self[114] = nil
|
|
524
604
|
end
|
|
525
605
|
if self._timer ~= nil then
|
|
526
606
|
self._timer:destroy()
|
|
@@ -530,25 +610,34 @@ function Buff.prototype.onDestroy(self)
|
|
|
530
610
|
behavior:destroy()
|
|
531
611
|
end
|
|
532
612
|
end
|
|
533
|
-
|
|
613
|
+
local previousAbilityCooldownModifier = self[144]
|
|
614
|
+
if previousAbilityCooldownModifier then
|
|
615
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
616
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
617
|
+
end
|
|
618
|
+
end
|
|
619
|
+
if self[139] then
|
|
620
|
+
unit:decrementInvulnerabilityCounter()
|
|
621
|
+
end
|
|
622
|
+
if self[138] then
|
|
534
623
|
unit:decrementDisableAutoAttackCounter()
|
|
535
624
|
end
|
|
536
|
-
if self[
|
|
537
|
-
if self[
|
|
538
|
-
unit:
|
|
625
|
+
if self[136] then
|
|
626
|
+
if self[137] then
|
|
627
|
+
unit:decrementForceStunCounter()
|
|
539
628
|
end
|
|
540
629
|
unit:decrementStunCounter()
|
|
541
630
|
end
|
|
631
|
+
if self[135] then
|
|
632
|
+
unit:decrementGhostCounter()
|
|
633
|
+
end
|
|
542
634
|
if self._abilityTypeIds ~= nil then
|
|
543
635
|
for abilityTypeId in pairs(self._abilityTypeIds) do
|
|
544
636
|
unit:removeAbility(abilityTypeId)
|
|
545
637
|
end
|
|
546
638
|
end
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
550
|
-
end
|
|
551
|
-
end
|
|
639
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
640
|
+
self[100] = 3
|
|
552
641
|
return UnitBehavior.prototype.onDestroy(self)
|
|
553
642
|
end
|
|
554
643
|
function Buff.apply(self, ...)
|
|
@@ -583,44 +672,74 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
583
672
|
end
|
|
584
673
|
return nil
|
|
585
674
|
end
|
|
675
|
+
function Buff.prototype.onExpiration(self)
|
|
676
|
+
local unit = self.unit
|
|
677
|
+
if self[120] ~= nil then
|
|
678
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
679
|
+
end
|
|
680
|
+
if self[121] ~= nil then
|
|
681
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
682
|
+
end
|
|
683
|
+
if self[141] then
|
|
684
|
+
unit:explode()
|
|
685
|
+
elseif self[140] then
|
|
686
|
+
unit:kill()
|
|
687
|
+
end
|
|
688
|
+
end
|
|
586
689
|
function Buff.prototype.onDeath(self, source)
|
|
587
690
|
local unit = self.unit
|
|
588
|
-
if self[
|
|
691
|
+
if self[122] ~= nil then
|
|
589
692
|
damageArea(
|
|
590
|
-
self[
|
|
591
|
-
self[
|
|
693
|
+
self[102] or unit,
|
|
694
|
+
self[122],
|
|
592
695
|
unit.x,
|
|
593
696
|
unit.y,
|
|
594
|
-
self[
|
|
595
|
-
self[120] or 0,
|
|
697
|
+
self[124] or 0,
|
|
596
698
|
self[123] or 0,
|
|
597
|
-
self[
|
|
699
|
+
self[126] or 0,
|
|
598
700
|
self[125] or 0,
|
|
599
|
-
self[
|
|
701
|
+
self[128] or 0,
|
|
702
|
+
self[127] or 0
|
|
600
703
|
)
|
|
601
704
|
end
|
|
602
705
|
end
|
|
603
706
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
604
707
|
if event.isAttack then
|
|
605
|
-
if self[
|
|
606
|
-
local durationIncrease = self[
|
|
607
|
-
local maximumDuration = self[
|
|
708
|
+
if self[107] ~= nil then
|
|
709
|
+
local durationIncrease = self[107]
|
|
710
|
+
local maximumDuration = self[108] or 0
|
|
608
711
|
if maximumDuration > 0 then
|
|
609
712
|
durationIncrease = min(
|
|
610
713
|
durationIncrease,
|
|
611
|
-
max(0, maximumDuration - self[
|
|
714
|
+
max(0, maximumDuration - self[103])
|
|
612
715
|
)
|
|
613
716
|
end
|
|
614
717
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
615
|
-
local maximumRemainingDuration = self[
|
|
718
|
+
local maximumRemainingDuration = self[109] or 0
|
|
616
719
|
if maximumRemainingDuration > 0 then
|
|
617
720
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
618
721
|
end
|
|
619
722
|
self.remainingDuration = remainingDuration
|
|
620
723
|
end
|
|
621
|
-
local autoAttackCount = (self[
|
|
622
|
-
self[
|
|
623
|
-
if autoAttackCount == self[
|
|
724
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
725
|
+
self[129] = autoAttackCount
|
|
726
|
+
if autoAttackCount == self[130] then
|
|
727
|
+
self:destroy()
|
|
728
|
+
end
|
|
729
|
+
end
|
|
730
|
+
if event.originalAmount ~= 0 then
|
|
731
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
732
|
+
self[131] = damageDealtEventCount
|
|
733
|
+
if damageDealtEventCount == self[132] then
|
|
734
|
+
self:destroy()
|
|
735
|
+
end
|
|
736
|
+
end
|
|
737
|
+
end
|
|
738
|
+
function Buff.prototype.onDamageReceived(self, source, event)
|
|
739
|
+
if event.originalAmount ~= 0 then
|
|
740
|
+
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
741
|
+
self[133] = damageReceivedEventCount
|
|
742
|
+
if damageReceivedEventCount == self[134] then
|
|
624
743
|
self:destroy()
|
|
625
744
|
end
|
|
626
745
|
end
|
|
@@ -630,7 +749,7 @@ __TS__SetDescriptor(
|
|
|
630
749
|
Buff.prototype,
|
|
631
750
|
"source",
|
|
632
751
|
{get = function(self)
|
|
633
|
-
return self[
|
|
752
|
+
return self[102] or self._unit
|
|
634
753
|
end},
|
|
635
754
|
true
|
|
636
755
|
)
|
|
@@ -647,13 +766,13 @@ __TS__SetDescriptor(
|
|
|
647
766
|
"remainingDamageOverDuration",
|
|
648
767
|
{
|
|
649
768
|
get = function(self)
|
|
650
|
-
return self[
|
|
769
|
+
return self[113] or 0
|
|
651
770
|
end,
|
|
652
771
|
set = function(self, remainingDamageOverDuration)
|
|
653
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
654
|
-
self[
|
|
655
|
-
local damageOverDuration = (self[
|
|
656
|
-
self[
|
|
772
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[113] or 0)
|
|
773
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
774
|
+
local damageOverDuration = (self[110] or 0) + remainingDamageOverDurationDelta
|
|
775
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
657
776
|
end
|
|
658
777
|
},
|
|
659
778
|
true
|
|
@@ -663,13 +782,13 @@ __TS__SetDescriptor(
|
|
|
663
782
|
"damageOverDuration",
|
|
664
783
|
{
|
|
665
784
|
get = function(self)
|
|
666
|
-
return self[
|
|
785
|
+
return self[110] or 0
|
|
667
786
|
end,
|
|
668
787
|
set = function(self, damageOverDuration)
|
|
669
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
670
|
-
self[
|
|
671
|
-
local remainingDamageOverDuration = (self[
|
|
672
|
-
self[
|
|
788
|
+
local damageOverDurationDelta = damageOverDuration - (self[110] or 0)
|
|
789
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
790
|
+
local remainingDamageOverDuration = (self[113] or 0) + damageOverDurationDelta
|
|
791
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
673
792
|
end
|
|
674
793
|
},
|
|
675
794
|
true
|
|
@@ -679,10 +798,10 @@ __TS__SetDescriptor(
|
|
|
679
798
|
"damagePerInterval",
|
|
680
799
|
{
|
|
681
800
|
get = function(self)
|
|
682
|
-
return self[
|
|
801
|
+
return self[111] or 0
|
|
683
802
|
end,
|
|
684
803
|
set = function(self, damagePerInterval)
|
|
685
|
-
self[
|
|
804
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
686
805
|
end
|
|
687
806
|
},
|
|
688
807
|
true
|
|
@@ -692,25 +811,25 @@ __TS__SetDescriptor(
|
|
|
692
811
|
"damageInterval",
|
|
693
812
|
{
|
|
694
813
|
get = function(self)
|
|
695
|
-
return self[
|
|
814
|
+
return self[112] or 0
|
|
696
815
|
end,
|
|
697
816
|
set = function(self, damageInterval)
|
|
698
817
|
if damageInterval <= 0 then
|
|
699
|
-
self[
|
|
700
|
-
local timer = self[
|
|
818
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
819
|
+
local timer = self[114]
|
|
701
820
|
if timer ~= nil then
|
|
702
821
|
timer:destroy()
|
|
703
|
-
self[
|
|
822
|
+
self[114] = nil
|
|
704
823
|
end
|
|
705
824
|
return
|
|
706
825
|
end
|
|
707
|
-
self[
|
|
826
|
+
self[112] = damageInterval
|
|
708
827
|
local ____opt_48 = self._timer
|
|
709
828
|
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
710
|
-
local timer = self[
|
|
829
|
+
local timer = self[114]
|
|
711
830
|
if timer == nil then
|
|
712
831
|
timer = Timer:create()
|
|
713
|
-
self[
|
|
832
|
+
self[114] = timer
|
|
714
833
|
end
|
|
715
834
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
716
835
|
if initialDelay == damageInterval then
|
|
@@ -727,13 +846,13 @@ __TS__SetDescriptor(
|
|
|
727
846
|
"remainingHealingOverDuration",
|
|
728
847
|
{
|
|
729
848
|
get = function(self)
|
|
730
|
-
return self[
|
|
849
|
+
return self[118] or 0
|
|
731
850
|
end,
|
|
732
851
|
set = function(self, remainingHealingOverDuration)
|
|
733
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
734
|
-
self[
|
|
735
|
-
local healingOverDuration = (self[
|
|
736
|
-
self[
|
|
852
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[118] or 0)
|
|
853
|
+
self[113] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
854
|
+
local healingOverDuration = (self[115] or 0) + remainingHealingOverDurationDelta
|
|
855
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
737
856
|
end
|
|
738
857
|
},
|
|
739
858
|
true
|
|
@@ -743,13 +862,13 @@ __TS__SetDescriptor(
|
|
|
743
862
|
"healingOverDuration",
|
|
744
863
|
{
|
|
745
864
|
get = function(self)
|
|
746
|
-
return self[
|
|
865
|
+
return self[115] or 0
|
|
747
866
|
end,
|
|
748
867
|
set = function(self, healingOverDuration)
|
|
749
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
750
|
-
self[
|
|
751
|
-
local remainingHealingOverDuration = (self[
|
|
752
|
-
self[
|
|
868
|
+
local healingOverDurationDelta = healingOverDuration - (self[115] or 0)
|
|
869
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
870
|
+
local remainingHealingOverDuration = (self[118] or 0) + healingOverDurationDelta
|
|
871
|
+
self[118] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
753
872
|
end
|
|
754
873
|
},
|
|
755
874
|
true
|
|
@@ -759,10 +878,10 @@ __TS__SetDescriptor(
|
|
|
759
878
|
"healingPerInterval",
|
|
760
879
|
{
|
|
761
880
|
get = function(self)
|
|
762
|
-
return self[
|
|
881
|
+
return self[116] or 0
|
|
763
882
|
end,
|
|
764
883
|
set = function(self, healingPerInterval)
|
|
765
|
-
self[
|
|
884
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
766
885
|
end
|
|
767
886
|
},
|
|
768
887
|
true
|
|
@@ -772,25 +891,25 @@ __TS__SetDescriptor(
|
|
|
772
891
|
"healingInterval",
|
|
773
892
|
{
|
|
774
893
|
get = function(self)
|
|
775
|
-
return self[
|
|
894
|
+
return self[117] or 0
|
|
776
895
|
end,
|
|
777
896
|
set = function(self, healingInterval)
|
|
778
897
|
if healingInterval <= 0 then
|
|
779
|
-
self[
|
|
780
|
-
local timer = self[
|
|
898
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
899
|
+
local timer = self[119]
|
|
781
900
|
if timer ~= nil then
|
|
782
901
|
timer:destroy()
|
|
783
|
-
self[
|
|
902
|
+
self[119] = nil
|
|
784
903
|
end
|
|
785
904
|
return
|
|
786
905
|
end
|
|
787
|
-
self[
|
|
906
|
+
self[117] = healingInterval
|
|
788
907
|
local ____opt_50 = self._timer
|
|
789
908
|
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
790
|
-
local timer = self[
|
|
909
|
+
local timer = self[119]
|
|
791
910
|
if timer == nil then
|
|
792
911
|
timer = Timer:create()
|
|
793
|
-
self[
|
|
912
|
+
self[119] = timer
|
|
794
913
|
end
|
|
795
914
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
796
915
|
if initialDelay == healingInterval then
|
|
@@ -802,6 +921,45 @@ __TS__SetDescriptor(
|
|
|
802
921
|
},
|
|
803
922
|
true
|
|
804
923
|
)
|
|
924
|
+
__TS__SetDescriptor(
|
|
925
|
+
Buff.prototype,
|
|
926
|
+
"damageOnExpiration",
|
|
927
|
+
{
|
|
928
|
+
get = function(self)
|
|
929
|
+
return self[120] or 0
|
|
930
|
+
end,
|
|
931
|
+
set = function(self, damageOnExpiration)
|
|
932
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
933
|
+
end
|
|
934
|
+
},
|
|
935
|
+
true
|
|
936
|
+
)
|
|
937
|
+
__TS__SetDescriptor(
|
|
938
|
+
Buff.prototype,
|
|
939
|
+
"healingOnExpiration",
|
|
940
|
+
{
|
|
941
|
+
get = function(self)
|
|
942
|
+
return self[121] or 0
|
|
943
|
+
end,
|
|
944
|
+
set = function(self, healingOnExpiration)
|
|
945
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
946
|
+
end
|
|
947
|
+
},
|
|
948
|
+
true
|
|
949
|
+
)
|
|
950
|
+
__TS__SetDescriptor(
|
|
951
|
+
Buff.prototype,
|
|
952
|
+
"damageFactor",
|
|
953
|
+
{
|
|
954
|
+
get = function(self)
|
|
955
|
+
return self:getUnitBonus(UnitBonusType.DAMAGE_FACTOR)
|
|
956
|
+
end,
|
|
957
|
+
set = function(self, damageFactor)
|
|
958
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.DAMAGE_FACTOR, damageFactor)
|
|
959
|
+
end
|
|
960
|
+
},
|
|
961
|
+
true
|
|
962
|
+
)
|
|
805
963
|
__TS__SetDescriptor(
|
|
806
964
|
Buff.prototype,
|
|
807
965
|
"receivedDamageFactor",
|
|
@@ -828,30 +986,53 @@ __TS__SetDescriptor(
|
|
|
828
986
|
},
|
|
829
987
|
true
|
|
830
988
|
)
|
|
989
|
+
__TS__SetDescriptor(
|
|
990
|
+
Buff.prototype,
|
|
991
|
+
"turnsIntoGhost",
|
|
992
|
+
{
|
|
993
|
+
get = function(self)
|
|
994
|
+
local ____self__135_52 = self[135]
|
|
995
|
+
if ____self__135_52 == nil then
|
|
996
|
+
____self__135_52 = false
|
|
997
|
+
end
|
|
998
|
+
return ____self__135_52
|
|
999
|
+
end,
|
|
1000
|
+
set = function(self, turnsIntoGhost)
|
|
1001
|
+
if not turnsIntoGhost and self[135] then
|
|
1002
|
+
self.object:decrementGhostCounter()
|
|
1003
|
+
self[135] = nil
|
|
1004
|
+
elseif turnsIntoGhost and not self[135] then
|
|
1005
|
+
self.object:incrementGhostCounter()
|
|
1006
|
+
self[135] = true
|
|
1007
|
+
end
|
|
1008
|
+
end
|
|
1009
|
+
},
|
|
1010
|
+
true
|
|
1011
|
+
)
|
|
831
1012
|
__TS__SetDescriptor(
|
|
832
1013
|
Buff.prototype,
|
|
833
1014
|
"stuns",
|
|
834
1015
|
{
|
|
835
1016
|
get = function(self)
|
|
836
|
-
local
|
|
837
|
-
if
|
|
838
|
-
|
|
1017
|
+
local ____self__136_53 = self[136]
|
|
1018
|
+
if ____self__136_53 == nil then
|
|
1019
|
+
____self__136_53 = false
|
|
839
1020
|
end
|
|
840
|
-
return
|
|
1021
|
+
return ____self__136_53
|
|
841
1022
|
end,
|
|
842
1023
|
set = function(self, stuns)
|
|
843
|
-
if not stuns and self[
|
|
844
|
-
if self[
|
|
845
|
-
self.object:
|
|
1024
|
+
if not stuns and self[136] then
|
|
1025
|
+
if self[137] then
|
|
1026
|
+
self.object:decrementForceStunCounter()
|
|
846
1027
|
end
|
|
847
1028
|
self.object:decrementStunCounter()
|
|
848
|
-
self[
|
|
849
|
-
elseif stuns and not self[
|
|
850
|
-
if self[
|
|
851
|
-
self.object:
|
|
1029
|
+
self[136] = nil
|
|
1030
|
+
elseif stuns and not self[136] then
|
|
1031
|
+
if self[137] then
|
|
1032
|
+
self.object:incrementForceStunCounter()
|
|
852
1033
|
end
|
|
853
1034
|
self.object:incrementStunCounter()
|
|
854
|
-
self[
|
|
1035
|
+
self[136] = true
|
|
855
1036
|
end
|
|
856
1037
|
end
|
|
857
1038
|
},
|
|
@@ -862,23 +1043,23 @@ __TS__SetDescriptor(
|
|
|
862
1043
|
"ignoresStunImmunity",
|
|
863
1044
|
{
|
|
864
1045
|
get = function(self)
|
|
865
|
-
local
|
|
866
|
-
if
|
|
867
|
-
|
|
1046
|
+
local ____self__137_54 = self[137]
|
|
1047
|
+
if ____self__137_54 == nil then
|
|
1048
|
+
____self__137_54 = false
|
|
868
1049
|
end
|
|
869
|
-
return
|
|
1050
|
+
return ____self__137_54
|
|
870
1051
|
end,
|
|
871
1052
|
set = function(self, ignoresStunImmunity)
|
|
872
|
-
if not ignoresStunImmunity and self[
|
|
873
|
-
if self[
|
|
874
|
-
self.object:
|
|
1053
|
+
if not ignoresStunImmunity and self[137] then
|
|
1054
|
+
if self[136] then
|
|
1055
|
+
self.object:decrementForceStunCounter()
|
|
875
1056
|
end
|
|
876
|
-
self[
|
|
877
|
-
elseif ignoresStunImmunity and not self[
|
|
878
|
-
if self[
|
|
879
|
-
self.object:
|
|
1057
|
+
self[137] = nil
|
|
1058
|
+
elseif ignoresStunImmunity and not self[137] then
|
|
1059
|
+
if self[136] then
|
|
1060
|
+
self.object:incrementForceStunCounter()
|
|
880
1061
|
end
|
|
881
|
-
self[
|
|
1062
|
+
self[137] = true
|
|
882
1063
|
end
|
|
883
1064
|
end
|
|
884
1065
|
},
|
|
@@ -889,19 +1070,19 @@ __TS__SetDescriptor(
|
|
|
889
1070
|
"disablesAutoAttack",
|
|
890
1071
|
{
|
|
891
1072
|
get = function(self)
|
|
892
|
-
local
|
|
893
|
-
if
|
|
894
|
-
|
|
1073
|
+
local ____self__138_55 = self[138]
|
|
1074
|
+
if ____self__138_55 == nil then
|
|
1075
|
+
____self__138_55 = false
|
|
895
1076
|
end
|
|
896
|
-
return
|
|
1077
|
+
return ____self__138_55
|
|
897
1078
|
end,
|
|
898
1079
|
set = function(self, disablesAutoAttack)
|
|
899
|
-
if not disablesAutoAttack and self[
|
|
1080
|
+
if not disablesAutoAttack and self[138] then
|
|
900
1081
|
self.object:decrementDisableAutoAttackCounter()
|
|
901
|
-
self[
|
|
902
|
-
elseif disablesAutoAttack and not self[
|
|
1082
|
+
self[138] = nil
|
|
1083
|
+
elseif disablesAutoAttack and not self[138] then
|
|
903
1084
|
self.object:incrementDisableAutoAttackCounter()
|
|
904
|
-
self[
|
|
1085
|
+
self[138] = true
|
|
905
1086
|
end
|
|
906
1087
|
end
|
|
907
1088
|
},
|
|
@@ -912,19 +1093,95 @@ __TS__SetDescriptor(
|
|
|
912
1093
|
"providesInvulnerability",
|
|
913
1094
|
{
|
|
914
1095
|
get = function(self)
|
|
915
|
-
local
|
|
916
|
-
if
|
|
917
|
-
|
|
1096
|
+
local ____self__139_56 = self[139]
|
|
1097
|
+
if ____self__139_56 == nil then
|
|
1098
|
+
____self__139_56 = false
|
|
918
1099
|
end
|
|
919
|
-
return
|
|
1100
|
+
return ____self__139_56
|
|
920
1101
|
end,
|
|
921
1102
|
set = function(self, providesInvulnerability)
|
|
922
|
-
if not providesInvulnerability and self[
|
|
1103
|
+
if not providesInvulnerability and self[139] then
|
|
923
1104
|
self.object:decrementInvulnerabilityCounter()
|
|
924
|
-
self[
|
|
925
|
-
elseif providesInvulnerability and not self[
|
|
1105
|
+
self[139] = nil
|
|
1106
|
+
elseif providesInvulnerability and not self[139] then
|
|
926
1107
|
self.object:incrementInvulnerabilityCounter()
|
|
927
|
-
self[
|
|
1108
|
+
self[139] = true
|
|
1109
|
+
end
|
|
1110
|
+
end
|
|
1111
|
+
},
|
|
1112
|
+
true
|
|
1113
|
+
)
|
|
1114
|
+
__TS__SetDescriptor(
|
|
1115
|
+
Buff.prototype,
|
|
1116
|
+
"killsOnExpiration",
|
|
1117
|
+
{
|
|
1118
|
+
get = function(self)
|
|
1119
|
+
local ____self__140_57 = self[140]
|
|
1120
|
+
if ____self__140_57 == nil then
|
|
1121
|
+
____self__140_57 = false
|
|
1122
|
+
end
|
|
1123
|
+
return ____self__140_57
|
|
1124
|
+
end,
|
|
1125
|
+
set = function(self, killsOnExpiration)
|
|
1126
|
+
if not killsOnExpiration and self[140] then
|
|
1127
|
+
self[140] = nil
|
|
1128
|
+
elseif killsOnExpiration and not self[140] then
|
|
1129
|
+
self[140] = true
|
|
1130
|
+
end
|
|
1131
|
+
end
|
|
1132
|
+
},
|
|
1133
|
+
true
|
|
1134
|
+
)
|
|
1135
|
+
__TS__SetDescriptor(
|
|
1136
|
+
Buff.prototype,
|
|
1137
|
+
"explodesOnExpiration",
|
|
1138
|
+
{
|
|
1139
|
+
get = function(self)
|
|
1140
|
+
local ____self__141_58 = self[141]
|
|
1141
|
+
if ____self__141_58 == nil then
|
|
1142
|
+
____self__141_58 = false
|
|
1143
|
+
end
|
|
1144
|
+
return ____self__141_58
|
|
1145
|
+
end,
|
|
1146
|
+
set = function(self, killsOnExpiration)
|
|
1147
|
+
if not killsOnExpiration and self[141] then
|
|
1148
|
+
self[141] = nil
|
|
1149
|
+
elseif killsOnExpiration and not self[141] then
|
|
1150
|
+
self[141] = true
|
|
1151
|
+
end
|
|
1152
|
+
end
|
|
1153
|
+
},
|
|
1154
|
+
true
|
|
1155
|
+
)
|
|
1156
|
+
__TS__SetDescriptor(
|
|
1157
|
+
Buff.prototype,
|
|
1158
|
+
"maximumDamageDealtEventCount",
|
|
1159
|
+
{
|
|
1160
|
+
get = function(self)
|
|
1161
|
+
return self[132] or 0
|
|
1162
|
+
end,
|
|
1163
|
+
set = function(self, maximumDamageDealtEventCount)
|
|
1164
|
+
if maximumDamageDealtEventCount == 0 then
|
|
1165
|
+
self[132] = nil
|
|
1166
|
+
else
|
|
1167
|
+
self[132] = maximumDamageDealtEventCount
|
|
1168
|
+
end
|
|
1169
|
+
end
|
|
1170
|
+
},
|
|
1171
|
+
true
|
|
1172
|
+
)
|
|
1173
|
+
__TS__SetDescriptor(
|
|
1174
|
+
Buff.prototype,
|
|
1175
|
+
"maximumDamageReceivedEventCount",
|
|
1176
|
+
{
|
|
1177
|
+
get = function(self)
|
|
1178
|
+
return self[134] or 0
|
|
1179
|
+
end,
|
|
1180
|
+
set = function(self, maximumDamageReceivedEventCount)
|
|
1181
|
+
if maximumDamageReceivedEventCount == 0 then
|
|
1182
|
+
self[134] = nil
|
|
1183
|
+
else
|
|
1184
|
+
self[134] = maximumDamageReceivedEventCount
|
|
928
1185
|
end
|
|
929
1186
|
end
|
|
930
1187
|
},
|
|
@@ -935,13 +1192,13 @@ __TS__SetDescriptor(
|
|
|
935
1192
|
"maximumAutoAttackCount",
|
|
936
1193
|
{
|
|
937
1194
|
get = function(self)
|
|
938
|
-
return self[
|
|
1195
|
+
return self[130] or 0
|
|
939
1196
|
end,
|
|
940
1197
|
set = function(self, maximumAutoAttackCount)
|
|
941
1198
|
if maximumAutoAttackCount == 0 then
|
|
942
|
-
self[
|
|
1199
|
+
self[130] = nil
|
|
943
1200
|
else
|
|
944
|
-
self[
|
|
1201
|
+
self[130] = maximumAutoAttackCount
|
|
945
1202
|
end
|
|
946
1203
|
end
|
|
947
1204
|
},
|
|
@@ -952,10 +1209,10 @@ __TS__SetDescriptor(
|
|
|
952
1209
|
"durationIncreaseOnAutoAttack",
|
|
953
1210
|
{
|
|
954
1211
|
get = function(self)
|
|
955
|
-
return self[
|
|
1212
|
+
return self[107] or 0
|
|
956
1213
|
end,
|
|
957
1214
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
958
|
-
self[
|
|
1215
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
959
1216
|
end
|
|
960
1217
|
},
|
|
961
1218
|
true
|
|
@@ -986,11 +1243,37 @@ __TS__SetDescriptor(
|
|
|
986
1243
|
},
|
|
987
1244
|
true
|
|
988
1245
|
)
|
|
1246
|
+
__TS__SetDescriptor(
|
|
1247
|
+
Buff.prototype,
|
|
1248
|
+
"evasionProbability",
|
|
1249
|
+
{
|
|
1250
|
+
get = function(self)
|
|
1251
|
+
return self:getUnitBonus(UnitBonusType.EVASION_PROBABILITY)
|
|
1252
|
+
end,
|
|
1253
|
+
set = function(self, evasionProbability)
|
|
1254
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.EVASION_PROBABILITY, evasionProbability)
|
|
1255
|
+
end
|
|
1256
|
+
},
|
|
1257
|
+
true
|
|
1258
|
+
)
|
|
1259
|
+
__TS__SetDescriptor(
|
|
1260
|
+
Buff.prototype,
|
|
1261
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1262
|
+
{
|
|
1263
|
+
get = function(self)
|
|
1264
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1265
|
+
end,
|
|
1266
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1267
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1268
|
+
end
|
|
1269
|
+
},
|
|
1270
|
+
true
|
|
1271
|
+
)
|
|
989
1272
|
__TS__SetDescriptor(
|
|
990
1273
|
Buff.prototype,
|
|
991
1274
|
"duration",
|
|
992
1275
|
{get = function(self)
|
|
993
|
-
return self[
|
|
1276
|
+
return self[103]
|
|
994
1277
|
end},
|
|
995
1278
|
true
|
|
996
1279
|
)
|
|
@@ -999,15 +1282,15 @@ __TS__SetDescriptor(
|
|
|
999
1282
|
"remainingDuration",
|
|
1000
1283
|
{
|
|
1001
1284
|
get = function(self)
|
|
1002
|
-
local
|
|
1003
|
-
return
|
|
1285
|
+
local ____opt_59 = self._timer
|
|
1286
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1004
1287
|
end,
|
|
1005
1288
|
set = function(self, remainingDuration)
|
|
1006
|
-
local
|
|
1007
|
-
local
|
|
1008
|
-
local remainingDurationDelta =
|
|
1289
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1290
|
+
local ____opt_61 = self._timer
|
|
1291
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1009
1292
|
if remainingDurationDelta ~= 0 then
|
|
1010
|
-
self[
|
|
1293
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1011
1294
|
if remainingDuration <= 0 then
|
|
1012
1295
|
Timer:run(destroyBuff, self)
|
|
1013
1296
|
else
|
|
@@ -1019,7 +1302,8 @@ __TS__SetDescriptor(
|
|
|
1019
1302
|
self._level,
|
|
1020
1303
|
remainingDuration,
|
|
1021
1304
|
self._spellStealPriority,
|
|
1022
|
-
self._learnLevelMinimum
|
|
1305
|
+
self._learnLevelMinimum,
|
|
1306
|
+
self[142]
|
|
1023
1307
|
) then
|
|
1024
1308
|
local timer = self._timer
|
|
1025
1309
|
if timer == nil then
|
|
@@ -1033,10 +1317,38 @@ __TS__SetDescriptor(
|
|
|
1033
1317
|
end
|
|
1034
1318
|
},
|
|
1035
1319
|
true
|
|
1036
|
-
)
|
|
1320
|
+
)
|
|
1321
|
+
__TS__SetDescriptor(
|
|
1322
|
+
Buff.prototype,
|
|
1323
|
+
"abilityCooldownFactor",
|
|
1324
|
+
{
|
|
1325
|
+
get = function(self)
|
|
1326
|
+
return self[143] or 1
|
|
1327
|
+
end,
|
|
1328
|
+
set = function(self, abilityCooldownFactor)
|
|
1329
|
+
local previousAbilityCooldownModifier = self[144]
|
|
1330
|
+
if previousAbilityCooldownModifier then
|
|
1331
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1332
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1333
|
+
end
|
|
1334
|
+
end
|
|
1335
|
+
local function modifier(ability, level, cooldown)
|
|
1336
|
+
return cooldown * abilityCooldownFactor
|
|
1337
|
+
end
|
|
1338
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1339
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1340
|
+
end
|
|
1341
|
+
self[144] = modifier
|
|
1342
|
+
self[143] = abilityCooldownFactor
|
|
1343
|
+
end
|
|
1344
|
+
},
|
|
1345
|
+
true
|
|
1346
|
+
)
|
|
1347
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1348
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1037
1349
|
(function(self)
|
|
1038
1350
|
local function destroyBuffIfNeeded(buff)
|
|
1039
|
-
if getUnitAbility(buff[
|
|
1351
|
+
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
1040
1352
|
buff:destroy()
|
|
1041
1353
|
end
|
|
1042
1354
|
end
|
|
@@ -1087,5 +1399,11 @@ __TS__SetDescriptor(
|
|
|
1087
1399
|
____exports.checkBuffs(target)
|
|
1088
1400
|
end
|
|
1089
1401
|
)
|
|
1402
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1403
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1404
|
+
end)
|
|
1405
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1406
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1407
|
+
end)
|
|
1090
1408
|
end)(Buff)
|
|
1091
1409
|
return ____exports
|