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