warscript 0.0.1-dev.671d3cf → 0.0.1-dev.685e1bc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +4 -0
- package/core/types/frame.lua +142 -22
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +17 -1
- package/core/types/player.lua +70 -24
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +100 -25
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +16 -3
- package/engine/behavior.lua +233 -73
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +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 +12 -3
- package/engine/behaviour/ability/damage.lua +33 -39
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +44 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
- package/engine/behaviour/ability/remove-buffs.lua +49 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +28 -7
- package/engine/behaviour/ability.lua +137 -43
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +45 -2
- package/engine/behaviour/unit.lua +289 -6
- package/engine/buff.d.ts +141 -55
- package/engine/buff.lua +638 -290
- 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/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +18 -18
- package/engine/internal/item.lua +208 -94
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +128 -17
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +12 -2
- package/engine/internal/unit/bonus.lua +56 -4
- 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+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +70 -13
- package/engine/internal/unit.d.ts +64 -30
- package/engine/internal/unit.lua +490 -285
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +14 -2
- package/engine/local-client.lua +168 -1
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +21 -17
- package/engine/object-data/entry/ability-type.lua +177 -40
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +28 -2
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/item-type.d.ts +15 -1
- package/engine/object-data/entry/item-type.lua +93 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +25 -5
- package/engine/object-data/entry/unit-type.lua +258 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +28 -5
- package/engine/object-field/ability.lua +61 -7
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +362 -117
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +4 -2
- package/engine/standard/fields/ability.lua +4 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- 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 +9 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.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 +12 -11
- package/objutil/object.lua +1 -1
- package/objutil/unit.lua +8 -0
- package/operation.lua +1 -4
- package/package.json +5 -5
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +25 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +10 -1
- package/utility/arrays.lua +45 -3
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +16 -3
- package/utility/linked-set.lua +54 -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/records.lua +20 -1
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +4 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/buff.lua
CHANGED
|
@@ -16,6 +16,7 @@ local internalApplyBuff = ____applicable.internalApplyBuff
|
|
|
16
16
|
local removeBuff = ____applicable.removeBuff
|
|
17
17
|
local ____ability = require("engine.internal.ability")
|
|
18
18
|
local Ability = ____ability.Ability
|
|
19
|
+
local UnitAbility = ____ability.UnitAbility
|
|
19
20
|
local ____ability = require("engine.object-field.ability")
|
|
20
21
|
local AbilityBooleanField = ____ability.AbilityBooleanField
|
|
21
22
|
local AbilityNumberField = ____ability.AbilityNumberField
|
|
@@ -28,13 +29,11 @@ local ____math = require("math")
|
|
|
28
29
|
local max = ____math.max
|
|
29
30
|
local min = ____math.min
|
|
30
31
|
local ____bonus = require("engine.internal.unit.bonus")
|
|
31
|
-
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
32
|
-
local getUnitBonus = ____bonus.getUnitBonus
|
|
33
|
-
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
34
32
|
local UnitBonusType = ____bonus.UnitBonusType
|
|
35
33
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
34
|
local damageArea = ____area_2Ddamage.damageArea
|
|
37
35
|
local ____preconditions = require("utility.preconditions")
|
|
36
|
+
local check = ____preconditions.check
|
|
38
37
|
local checkNotNull = ____preconditions.checkNotNull
|
|
39
38
|
local ____effect = require("core.types.effect")
|
|
40
39
|
local Effect = ____effect.Effect
|
|
@@ -43,9 +42,22 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
43
42
|
local ____unit = require("engine.behaviour.unit")
|
|
44
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
45
44
|
local ____arrays = require("utility.arrays")
|
|
45
|
+
local emptyArray = ____arrays.emptyArray
|
|
46
46
|
local forEach = ____arrays.forEach
|
|
47
|
+
local ____event = require("event")
|
|
48
|
+
local Event = ____event.Event
|
|
47
49
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
50
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
51
|
+
local ____item = require("engine.internal.item")
|
|
52
|
+
local Item = ____item.Item
|
|
53
|
+
local ____destructable = require("core.types.destructable")
|
|
54
|
+
local Destructable = ____destructable.Destructable
|
|
55
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
56
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
57
|
+
local ____ability = require("engine.behaviour.ability")
|
|
58
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
59
|
+
local ____records = require("utility.records")
|
|
60
|
+
local sortedKeysUnnested = ____records.sortedKeysUnnested
|
|
49
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
50
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
51
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -91,14 +103,20 @@ local buffParametersKeys = {
|
|
|
91
103
|
damageIncrease = true,
|
|
92
104
|
damageIncreaseFactor = true,
|
|
93
105
|
armorIncrease = true,
|
|
94
|
-
|
|
106
|
+
maxHealthIncrease = true,
|
|
107
|
+
maxManaIncrease = true,
|
|
95
108
|
attackSpeedIncreaseFactor = true,
|
|
96
109
|
movementSpeedIncreaseFactor = true,
|
|
110
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
111
|
+
evasionProbability = true,
|
|
112
|
+
missProbability = true,
|
|
113
|
+
damageFactor = true,
|
|
97
114
|
receivedDamageFactor = true,
|
|
98
115
|
receivedMagicDamageFactor = true,
|
|
99
116
|
durationIncreaseOnAutoAttack = true,
|
|
100
117
|
maximumDuration = true,
|
|
101
118
|
maximumRemainingDuration = true,
|
|
119
|
+
turnsIntoGhost = true,
|
|
102
120
|
stuns = true,
|
|
103
121
|
ignoresStunImmunity = true,
|
|
104
122
|
providesStunImmunity = true,
|
|
@@ -107,12 +125,30 @@ local buffParametersKeys = {
|
|
|
107
125
|
disablesAutoAttack = true,
|
|
108
126
|
destroysOnDamage = true,
|
|
109
127
|
maximumAutoAttackCount = true,
|
|
128
|
+
maximumDamageDealtEventCount = true,
|
|
129
|
+
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
110
133
|
uniqueGroup = true,
|
|
111
134
|
damageOnExpiration = true,
|
|
112
135
|
healingOnExpiration = true,
|
|
113
136
|
killsOnExpiration = true,
|
|
114
|
-
explodesOnExpiration = true
|
|
137
|
+
explodesOnExpiration = true,
|
|
138
|
+
abilityCooldownFactor = true
|
|
115
139
|
}
|
|
140
|
+
local function resolveEnumValue(ability, level, value)
|
|
141
|
+
if value == nil or type(value) == "number" then
|
|
142
|
+
return value
|
|
143
|
+
end
|
|
144
|
+
if ability == nil then
|
|
145
|
+
error(
|
|
146
|
+
__TS__New(IllegalArgumentException),
|
|
147
|
+
0
|
|
148
|
+
)
|
|
149
|
+
end
|
|
150
|
+
return value:getValue(ability, level or ability.level)
|
|
151
|
+
end
|
|
116
152
|
local function resolveNumberValue(ability, level, value)
|
|
117
153
|
if value == nil or type(value) == "number" then
|
|
118
154
|
return value
|
|
@@ -150,6 +186,8 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
150
186
|
end
|
|
151
187
|
end
|
|
152
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
190
|
+
"turnsIntoGhost",
|
|
153
191
|
"stuns",
|
|
154
192
|
"ignoresStunImmunity",
|
|
155
193
|
"disablesAutoAttack",
|
|
@@ -161,9 +199,16 @@ local buffNumberParameters = {
|
|
|
161
199
|
"durationIncreaseOnAutoAttack",
|
|
162
200
|
"attackSpeedIncreaseFactor",
|
|
163
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
203
|
+
"evasionProbability",
|
|
164
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
207
|
+
"damageFactor",
|
|
165
208
|
"receivedDamageFactor",
|
|
166
209
|
"maximumAutoAttackCount",
|
|
210
|
+
"maximumDamageDealtEventCount",
|
|
211
|
+
"maximumDamageReceivedEventCount",
|
|
167
212
|
"damageInterval",
|
|
168
213
|
"damagePerInterval",
|
|
169
214
|
"damageOverDuration",
|
|
@@ -171,7 +216,10 @@ local buffNumberParameters = {
|
|
|
171
216
|
"healingPerInterval",
|
|
172
217
|
"healingOverDuration",
|
|
173
218
|
"damageOnExpiration",
|
|
174
|
-
"healingOnExpiration"
|
|
219
|
+
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
222
|
+
"abilityCooldownFactor"
|
|
175
223
|
}
|
|
176
224
|
local unsuccessfulApplicationMarker = {}
|
|
177
225
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -198,7 +246,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
198
246
|
return checkNotNull(firstNativeBuffTypeId)
|
|
199
247
|
end
|
|
200
248
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
201
|
-
if buff[
|
|
249
|
+
if buff[104] == uniqueGroup then
|
|
202
250
|
buff:destroy()
|
|
203
251
|
end
|
|
204
252
|
end
|
|
@@ -206,17 +254,17 @@ local function destroyBuff(buff)
|
|
|
206
254
|
buff:destroy()
|
|
207
255
|
end
|
|
208
256
|
local function expireBuff(buff)
|
|
209
|
-
local remainingDamageOverDuration = buff[
|
|
210
|
-
local remainingHealingOverDuration = buff[
|
|
257
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
258
|
+
local remainingHealingOverDuration = buff[113] or 0
|
|
211
259
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
212
260
|
buff:flashSpecialEffect()
|
|
213
261
|
if remainingDamageOverDuration ~= 0 then
|
|
214
|
-
(buff[
|
|
215
|
-
buff[
|
|
262
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
263
|
+
buff[113] = nil
|
|
216
264
|
end
|
|
217
265
|
if remainingHealingOverDuration ~= 0 then
|
|
218
|
-
(buff[
|
|
219
|
-
buff[
|
|
266
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
267
|
+
buff[118] = nil
|
|
220
268
|
end
|
|
221
269
|
end
|
|
222
270
|
Timer:run(destroyBuff, buff)
|
|
@@ -224,56 +272,58 @@ local function expireBuff(buff)
|
|
|
224
272
|
end
|
|
225
273
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
226
274
|
buffDamageIntervalTimerCallback(buff)
|
|
227
|
-
local timer = buff[
|
|
228
|
-
local damageInterval = buff[
|
|
275
|
+
local timer = buff[114]
|
|
276
|
+
local damageInterval = buff[112]
|
|
229
277
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
230
278
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
231
279
|
end
|
|
232
280
|
end
|
|
233
281
|
buffDamageIntervalTimerCallback = function(buff)
|
|
234
282
|
buff:flashSpecialEffect()
|
|
235
|
-
local source = buff[
|
|
236
|
-
local remainingDamageOverDuration = buff[
|
|
283
|
+
local source = buff[102] or buff[101]
|
|
284
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
237
285
|
if remainingDamageOverDuration ~= 0 then
|
|
238
|
-
local damageInterval = buff[
|
|
286
|
+
local damageInterval = buff[112] or 0
|
|
239
287
|
if damageInterval ~= 0 then
|
|
240
288
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
241
|
-
source:damageTarget(buff[
|
|
242
|
-
buff[
|
|
289
|
+
source:damageTarget(buff[101], damage)
|
|
290
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
243
291
|
end
|
|
244
292
|
end
|
|
245
|
-
local damagePerInterval = buff[
|
|
293
|
+
local damagePerInterval = buff[111] or 0
|
|
246
294
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
247
|
-
source:damageTarget(buff[
|
|
295
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
248
296
|
end
|
|
249
297
|
end
|
|
250
298
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
251
299
|
buffHealingIntervalTimerCallback(buff)
|
|
252
|
-
local timer = buff[
|
|
253
|
-
local healingInterval = buff[
|
|
300
|
+
local timer = buff[119]
|
|
301
|
+
local healingInterval = buff[117]
|
|
254
302
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
255
303
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
256
304
|
end
|
|
257
305
|
end
|
|
258
306
|
buffHealingIntervalTimerCallback = function(buff)
|
|
259
|
-
if buff[
|
|
307
|
+
if buff[117] ~= buff[112] then
|
|
260
308
|
buff:flashSpecialEffect()
|
|
261
309
|
end
|
|
262
|
-
local source = buff[
|
|
263
|
-
local remainingHealingOverDuration = buff[
|
|
310
|
+
local source = buff[102] or buff[101]
|
|
311
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
264
312
|
if remainingHealingOverDuration ~= 0 then
|
|
265
|
-
local healingInterval = buff[
|
|
313
|
+
local healingInterval = buff[117] or 0
|
|
266
314
|
if healingInterval ~= 0 then
|
|
267
315
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
268
|
-
source:healTarget(buff[
|
|
269
|
-
buff[
|
|
316
|
+
source:healTarget(buff[101], healing)
|
|
317
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
270
318
|
end
|
|
271
319
|
end
|
|
272
|
-
local healingPerInterval = buff[
|
|
320
|
+
local healingPerInterval = buff[116] or 0
|
|
273
321
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
274
|
-
source:healTarget(buff[
|
|
322
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
275
323
|
end
|
|
276
324
|
end
|
|
325
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
326
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
277
327
|
____exports.Buff = __TS__Class()
|
|
278
328
|
local Buff = ____exports.Buff
|
|
279
329
|
Buff.name = "Buff"
|
|
@@ -282,40 +332,44 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
282
332
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
283
333
|
self._unit = _unit
|
|
284
334
|
self.parameters = nil
|
|
285
|
-
self[100] =
|
|
335
|
+
self[100] = 0
|
|
336
|
+
self[101] = _unit
|
|
286
337
|
local typeId
|
|
287
338
|
local polarity
|
|
288
339
|
local resistanceType
|
|
289
340
|
local ability
|
|
341
|
+
local abilityBehavior
|
|
290
342
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
291
343
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
292
344
|
polarity = resistanceTypeOrPolarity
|
|
293
345
|
resistanceType = abilityOrParametersOrResistanceType
|
|
294
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
346
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
347
|
+
abilityBehavior = parametersOrAbility
|
|
348
|
+
ability = abilityBehavior.ability
|
|
349
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
295
350
|
ability = parametersOrAbility
|
|
296
|
-
|
|
297
|
-
ability = nil
|
|
351
|
+
elseif parametersOrAbility ~= nil then
|
|
298
352
|
parameters = parametersOrAbility
|
|
299
353
|
end
|
|
300
354
|
else
|
|
301
355
|
typeId = typeIdOrTypeIds
|
|
302
356
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
303
357
|
resistanceType = resistanceTypeOrPolarity
|
|
304
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
358
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
359
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
360
|
+
ability = abilityBehavior.ability
|
|
361
|
+
parameters = parametersOrAbility
|
|
362
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
305
363
|
ability = abilityOrParametersOrResistanceType
|
|
306
364
|
parameters = parametersOrAbility
|
|
307
|
-
|
|
308
|
-
ability = nil
|
|
365
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
309
366
|
parameters = abilityOrParametersOrResistanceType
|
|
367
|
+
else
|
|
368
|
+
parameters = parametersOrAbility
|
|
310
369
|
end
|
|
311
370
|
end
|
|
371
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
312
372
|
self.typeId = typeId
|
|
313
|
-
self.polarity = polarity
|
|
314
|
-
self.resistanceType = resistanceType
|
|
315
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
316
|
-
parameters = ability
|
|
317
|
-
ability = nil
|
|
318
|
-
end
|
|
319
373
|
local defaultParameters = self.constructor.defaultParameters
|
|
320
374
|
local level = parameters and parameters.level or defaultParameters.level
|
|
321
375
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -338,14 +392,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
338
392
|
learnLevelMinimum = learnLevelMinimum or ability:getField(ABILITY_IF_REQUIRED_LEVEL)
|
|
339
393
|
duration = duration or getAbilityDuration(ability, _unit)
|
|
340
394
|
end
|
|
395
|
+
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
396
|
+
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
397
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
398
|
+
if missProbability ~= nil then
|
|
399
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
400
|
+
self[146] = missProbability
|
|
401
|
+
end
|
|
341
402
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
342
403
|
if buffByTypeId == nil then
|
|
343
404
|
buffByTypeId = {}
|
|
344
405
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
345
406
|
end
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
407
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
408
|
+
local ____opt_15 = self.previousBuff
|
|
409
|
+
if ____opt_15 ~= nil then
|
|
410
|
+
____opt_15:destroy()
|
|
349
411
|
end
|
|
350
412
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
351
413
|
if uniqueGroup ~= nil then
|
|
@@ -354,18 +416,21 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
354
416
|
if not internalApplyBuff(
|
|
355
417
|
_unit,
|
|
356
418
|
typeId,
|
|
357
|
-
polarity,
|
|
358
|
-
resistanceType,
|
|
419
|
+
self.polarity,
|
|
420
|
+
self.resistanceType,
|
|
359
421
|
level,
|
|
360
422
|
duration,
|
|
361
423
|
spellStealPriority,
|
|
362
|
-
learnLevelMinimum
|
|
424
|
+
learnLevelMinimum,
|
|
425
|
+
missProbability
|
|
363
426
|
) then
|
|
427
|
+
self[100] = 1
|
|
364
428
|
UnitBehavior.prototype.destroy(self)
|
|
365
429
|
error(unsuccessfulApplicationMarker, 0)
|
|
366
430
|
end
|
|
367
431
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
368
432
|
if handle == nil then
|
|
433
|
+
self[100] = 1
|
|
369
434
|
UnitBehavior.prototype.destroy(self)
|
|
370
435
|
error(unsuccessfulApplicationMarker, 0)
|
|
371
436
|
end
|
|
@@ -374,20 +439,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
374
439
|
self._level = level
|
|
375
440
|
self._spellStealPriority = spellStealPriority
|
|
376
441
|
self._learnLevelMinimum = learnLevelMinimum
|
|
377
|
-
self[
|
|
378
|
-
self[
|
|
379
|
-
self[
|
|
380
|
-
self[
|
|
381
|
-
self[
|
|
442
|
+
self[102] = source
|
|
443
|
+
self[103] = duration or 0
|
|
444
|
+
self[104] = uniqueGroup
|
|
445
|
+
self[105] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
446
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
382
447
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
383
448
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
384
|
-
local
|
|
385
|
-
local
|
|
386
|
-
local
|
|
387
|
-
if
|
|
388
|
-
|
|
449
|
+
local ____ability_24 = ability
|
|
450
|
+
local ____level_25 = level
|
|
451
|
+
local ____temp_23 = parameters and parameters[buffBooleanParameter]
|
|
452
|
+
if ____temp_23 == nil then
|
|
453
|
+
____temp_23 = defaultParameters[buffBooleanParameter]
|
|
389
454
|
end
|
|
390
|
-
if resolveBooleanValue(
|
|
455
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
391
456
|
self[buffBooleanParameter] = true
|
|
392
457
|
end
|
|
393
458
|
end
|
|
@@ -403,11 +468,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
403
468
|
end
|
|
404
469
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
405
470
|
if maximumDuration ~= nil then
|
|
406
|
-
self[
|
|
471
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
407
472
|
end
|
|
408
473
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
409
474
|
if maximumRemainingDuration ~= nil then
|
|
410
|
-
self[
|
|
475
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
411
476
|
end
|
|
412
477
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
413
478
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -416,24 +481,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
416
481
|
abilityTypeIds = {}
|
|
417
482
|
self._abilityTypeIds = abilityTypeIds
|
|
418
483
|
end
|
|
419
|
-
for
|
|
484
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
485
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
420
486
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
421
487
|
if addedAbility ~= nil then
|
|
422
488
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
423
489
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
427
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
428
|
-
end
|
|
429
|
-
elseif abilityParameterKey ~= "level" then
|
|
430
|
-
abilityParameterKey:setValue(
|
|
431
|
-
addedAbility,
|
|
432
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
433
|
-
)
|
|
434
|
-
end
|
|
490
|
+
if abilityParameters.isButtonVisible == false then
|
|
491
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
435
492
|
end
|
|
436
|
-
|
|
493
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
494
|
+
field[1]:setValue(
|
|
495
|
+
addedAbility,
|
|
496
|
+
resolveNumberValue(ability, level, field[2])
|
|
497
|
+
)
|
|
498
|
+
end
|
|
499
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
437
500
|
end
|
|
438
501
|
end
|
|
439
502
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -445,18 +508,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
445
508
|
self._behaviors = behaviors
|
|
446
509
|
end
|
|
447
510
|
end
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
if
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
511
|
+
if parameters ~= nil then
|
|
512
|
+
local additionalParameters = {}
|
|
513
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
514
|
+
if not buffParametersKeys[key] then
|
|
515
|
+
if ability then
|
|
516
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
517
|
+
else
|
|
518
|
+
additionalParameters[key] = parameters[key]
|
|
519
|
+
end
|
|
455
520
|
end
|
|
456
521
|
end
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
522
|
+
if (next(additionalParameters)) ~= nil then
|
|
523
|
+
self.parameters = additionalParameters
|
|
524
|
+
end
|
|
460
525
|
end
|
|
461
526
|
end
|
|
462
527
|
if duration ~= nil and duration > 0 then
|
|
@@ -464,77 +529,87 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
464
529
|
timer:start(duration, false, expireBuff, self)
|
|
465
530
|
self._timer = timer
|
|
466
531
|
end
|
|
532
|
+
self:onCreate()
|
|
533
|
+
self[100] = 1
|
|
534
|
+
Event.invoke(buffCreatedEvent, self)
|
|
467
535
|
end
|
|
468
|
-
function Buff.prototype.
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
local bonusIdByBonusType = self._bonusIdByBonusType
|
|
475
|
-
if bonusIdByBonusType == nil then
|
|
476
|
-
bonusIdByBonusType = {}
|
|
477
|
-
self._bonusIdByBonusType = bonusIdByBonusType
|
|
536
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
537
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
538
|
+
local abilityCooldownModifier = self[148]
|
|
539
|
+
if abilityCooldownModifier then
|
|
540
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
541
|
+
end
|
|
478
542
|
end
|
|
479
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
480
543
|
end
|
|
481
|
-
function Buff.prototype.
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
488
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
489
|
-
)
|
|
490
|
-
local ____isWidgetProvided_38
|
|
491
|
-
if isWidgetProvided then
|
|
492
|
-
____isWidgetProvided_38 = duration
|
|
493
|
-
else
|
|
494
|
-
____isWidgetProvided_38 = widgetOrDuration
|
|
544
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
545
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
546
|
+
local abilityCooldownModifier = self[148]
|
|
547
|
+
if abilityCooldownModifier then
|
|
548
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
549
|
+
end
|
|
495
550
|
end
|
|
496
|
-
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
497
|
-
____Effect_flash_41(
|
|
498
|
-
____Effect_40,
|
|
499
|
-
__TS__SparseArraySpread(____array_39)
|
|
500
|
-
)
|
|
501
551
|
end
|
|
502
|
-
function Buff.prototype.
|
|
503
|
-
|
|
504
|
-
local ____Effect_44 = Effect
|
|
505
|
-
local ____Effect_flash_45 = Effect.flash
|
|
506
|
-
local ____array_43 = __TS__SparseArrayNew(
|
|
552
|
+
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
553
|
+
self:flash(
|
|
507
554
|
self[105],
|
|
508
|
-
|
|
509
|
-
|
|
555
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin",
|
|
556
|
+
widgetOrXOrParametersOrDuration,
|
|
557
|
+
yOrParametersOrDuration,
|
|
558
|
+
parametersOrDuration
|
|
559
|
+
)
|
|
560
|
+
end
|
|
561
|
+
function Buff.prototype.flashSpecialEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
562
|
+
self:flash(
|
|
563
|
+
self[106],
|
|
564
|
+
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin",
|
|
565
|
+
widgetOrXOrParametersOrDuration,
|
|
566
|
+
yOrParametersOrDuration,
|
|
567
|
+
parametersOrDuration
|
|
510
568
|
)
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
569
|
+
end
|
|
570
|
+
function Buff.prototype.flash(self, modelPath, attachmentPoint, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
571
|
+
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
572
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
514
573
|
else
|
|
515
|
-
|
|
574
|
+
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
575
|
+
local ____Effect_40 = Effect
|
|
576
|
+
local ____Effect_flash_41 = Effect.flash
|
|
577
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
578
|
+
local ____isWidgetProvided_38
|
|
579
|
+
if isWidgetProvided then
|
|
580
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
581
|
+
else
|
|
582
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
583
|
+
end
|
|
584
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
585
|
+
____Effect_flash_41(
|
|
586
|
+
____Effect_40,
|
|
587
|
+
__TS__SparseArraySpread(____array_39)
|
|
588
|
+
)
|
|
516
589
|
end
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
590
|
+
end
|
|
591
|
+
function Buff.prototype.expire(self)
|
|
592
|
+
expireBuff(self)
|
|
593
|
+
end
|
|
594
|
+
function Buff.prototype.onCreate(self)
|
|
522
595
|
end
|
|
523
596
|
function Buff.prototype.onDestroy(self)
|
|
597
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
598
|
+
self[100] = 2
|
|
524
599
|
local unit = self._unit
|
|
525
600
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
526
601
|
removeBuff(unit.handle, self.typeId)
|
|
527
602
|
end
|
|
528
603
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
529
|
-
local healingIntervalTimer = self[
|
|
604
|
+
local healingIntervalTimer = self[119]
|
|
530
605
|
if healingIntervalTimer ~= nil then
|
|
531
606
|
healingIntervalTimer:destroy()
|
|
532
|
-
self[
|
|
607
|
+
self[119] = nil
|
|
533
608
|
end
|
|
534
|
-
local damageIntervalTimer = self[
|
|
609
|
+
local damageIntervalTimer = self[114]
|
|
535
610
|
if damageIntervalTimer ~= nil then
|
|
536
611
|
damageIntervalTimer:destroy()
|
|
537
|
-
self[
|
|
612
|
+
self[114] = nil
|
|
538
613
|
end
|
|
539
614
|
if self._timer ~= nil then
|
|
540
615
|
self._timer:destroy()
|
|
@@ -544,25 +619,34 @@ function Buff.prototype.onDestroy(self)
|
|
|
544
619
|
behavior:destroy()
|
|
545
620
|
end
|
|
546
621
|
end
|
|
547
|
-
|
|
622
|
+
local previousAbilityCooldownModifier = self[148]
|
|
623
|
+
if previousAbilityCooldownModifier then
|
|
624
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
625
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
626
|
+
end
|
|
627
|
+
end
|
|
628
|
+
if self[143] then
|
|
629
|
+
unit:decrementInvulnerabilityCounter()
|
|
630
|
+
end
|
|
631
|
+
if self[142] then
|
|
548
632
|
unit:decrementDisableAutoAttackCounter()
|
|
549
633
|
end
|
|
550
|
-
if self[
|
|
551
|
-
if self[
|
|
552
|
-
unit:
|
|
634
|
+
if self[140] then
|
|
635
|
+
if self[141] then
|
|
636
|
+
unit:decrementForceStunCounter()
|
|
553
637
|
end
|
|
554
638
|
unit:decrementStunCounter()
|
|
555
639
|
end
|
|
640
|
+
if self[139] then
|
|
641
|
+
unit:decrementGhostCounter()
|
|
642
|
+
end
|
|
556
643
|
if self._abilityTypeIds ~= nil then
|
|
557
|
-
for abilityTypeId in
|
|
644
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
558
645
|
unit:removeAbility(abilityTypeId)
|
|
559
646
|
end
|
|
560
647
|
end
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
564
|
-
end
|
|
565
|
-
end
|
|
648
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
649
|
+
self[100] = 3
|
|
566
650
|
return UnitBehavior.prototype.onDestroy(self)
|
|
567
651
|
end
|
|
568
652
|
function Buff.apply(self, ...)
|
|
@@ -590,8 +674,8 @@ function Buff.apply(self, ...)
|
|
|
590
674
|
end
|
|
591
675
|
end
|
|
592
676
|
function Buff.getByTypeId(self, unit, typeId)
|
|
593
|
-
local
|
|
594
|
-
local buff =
|
|
677
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
678
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
595
679
|
if __TS__InstanceOf(buff, self) then
|
|
596
680
|
return buff
|
|
597
681
|
end
|
|
@@ -599,56 +683,84 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
599
683
|
end
|
|
600
684
|
function Buff.prototype.onExpiration(self)
|
|
601
685
|
local unit = self.unit
|
|
602
|
-
if self[119] ~= nil then
|
|
603
|
-
(self[101] or unit):damageTarget(unit, self[119] or 0)
|
|
604
|
-
end
|
|
605
686
|
if self[120] ~= nil then
|
|
606
|
-
(self[
|
|
687
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
688
|
+
end
|
|
689
|
+
if self[121] ~= nil then
|
|
690
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
607
691
|
end
|
|
608
|
-
if self[
|
|
692
|
+
if self[145] then
|
|
609
693
|
unit:explode()
|
|
610
|
-
elseif self[
|
|
694
|
+
elseif self[144] then
|
|
611
695
|
unit:kill()
|
|
612
696
|
end
|
|
613
697
|
end
|
|
614
698
|
function Buff.prototype.onDeath(self, source)
|
|
615
699
|
local unit = self.unit
|
|
616
|
-
if self[
|
|
700
|
+
if self[122] ~= nil then
|
|
617
701
|
damageArea(
|
|
618
|
-
self[
|
|
619
|
-
self[
|
|
702
|
+
self[102] or unit,
|
|
703
|
+
self[122],
|
|
620
704
|
unit.x,
|
|
621
705
|
unit.y,
|
|
706
|
+
self[124] or 0,
|
|
622
707
|
self[123] or 0,
|
|
623
|
-
self[
|
|
708
|
+
self[126] or 0,
|
|
624
709
|
self[125] or 0,
|
|
625
|
-
self[
|
|
626
|
-
self[127] or 0
|
|
627
|
-
self[126] or 0
|
|
710
|
+
self[128] or 0,
|
|
711
|
+
self[127] or 0
|
|
628
712
|
)
|
|
629
713
|
end
|
|
630
714
|
end
|
|
631
715
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
632
716
|
if event.isAttack then
|
|
633
|
-
if self[
|
|
634
|
-
local durationIncrease = self[
|
|
635
|
-
local maximumDuration = self[
|
|
717
|
+
if self[107] ~= nil then
|
|
718
|
+
local durationIncrease = self[107]
|
|
719
|
+
local maximumDuration = self[108] or 0
|
|
636
720
|
if maximumDuration > 0 then
|
|
637
721
|
durationIncrease = min(
|
|
638
722
|
durationIncrease,
|
|
639
|
-
max(0, maximumDuration - self[
|
|
723
|
+
max(0, maximumDuration - self[103])
|
|
640
724
|
)
|
|
641
725
|
end
|
|
642
726
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
643
|
-
local maximumRemainingDuration = self[
|
|
727
|
+
local maximumRemainingDuration = self[109] or 0
|
|
644
728
|
if maximumRemainingDuration > 0 then
|
|
645
729
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
646
730
|
end
|
|
647
731
|
self.remainingDuration = remainingDuration
|
|
648
732
|
end
|
|
649
|
-
local autoAttackCount = (self[
|
|
650
|
-
self[
|
|
651
|
-
if autoAttackCount == self[
|
|
733
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
734
|
+
self[129] = autoAttackCount
|
|
735
|
+
if autoAttackCount == self[130] then
|
|
736
|
+
self:destroy()
|
|
737
|
+
end
|
|
738
|
+
end
|
|
739
|
+
if event.originalAmount ~= 0 then
|
|
740
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
741
|
+
self[131] = damageDealtEventCount
|
|
742
|
+
if damageDealtEventCount == self[132] then
|
|
743
|
+
self:destroy()
|
|
744
|
+
end
|
|
745
|
+
end
|
|
746
|
+
end
|
|
747
|
+
function Buff.prototype.onDamageReceived(self, source, event)
|
|
748
|
+
if event.originalAmount ~= 0 then
|
|
749
|
+
local absorbedDamage = min(event.amount * (self[135] or 1), (self[136] or 0) - (self[137] or 0))
|
|
750
|
+
if absorbedDamage > 0 then
|
|
751
|
+
event.amount = event.amount - absorbedDamage
|
|
752
|
+
self[137] = (self[137] or 0) + absorbedDamage
|
|
753
|
+
local ____self__138_44 = self[138]
|
|
754
|
+
if ____self__138_44 == nil then
|
|
755
|
+
____self__138_44 = true
|
|
756
|
+
end
|
|
757
|
+
if ____self__138_44 and self[137] >= (self[136] or 0) then
|
|
758
|
+
self:destroy()
|
|
759
|
+
end
|
|
760
|
+
end
|
|
761
|
+
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
762
|
+
self[133] = damageReceivedEventCount
|
|
763
|
+
if damageReceivedEventCount == self[134] then
|
|
652
764
|
self:destroy()
|
|
653
765
|
end
|
|
654
766
|
end
|
|
@@ -658,7 +770,7 @@ __TS__SetDescriptor(
|
|
|
658
770
|
Buff.prototype,
|
|
659
771
|
"source",
|
|
660
772
|
{get = function(self)
|
|
661
|
-
return self[
|
|
773
|
+
return self[102] or self._unit
|
|
662
774
|
end},
|
|
663
775
|
true
|
|
664
776
|
)
|
|
@@ -675,13 +787,13 @@ __TS__SetDescriptor(
|
|
|
675
787
|
"remainingDamageOverDuration",
|
|
676
788
|
{
|
|
677
789
|
get = function(self)
|
|
678
|
-
return self[
|
|
790
|
+
return self[113] or 0
|
|
679
791
|
end,
|
|
680
792
|
set = function(self, remainingDamageOverDuration)
|
|
681
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
682
|
-
self[
|
|
683
|
-
local damageOverDuration = (self[
|
|
684
|
-
self[
|
|
793
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[113] or 0)
|
|
794
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
795
|
+
local damageOverDuration = (self[110] or 0) + remainingDamageOverDurationDelta
|
|
796
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
685
797
|
end
|
|
686
798
|
},
|
|
687
799
|
true
|
|
@@ -691,13 +803,13 @@ __TS__SetDescriptor(
|
|
|
691
803
|
"damageOverDuration",
|
|
692
804
|
{
|
|
693
805
|
get = function(self)
|
|
694
|
-
return self[
|
|
806
|
+
return self[110] or 0
|
|
695
807
|
end,
|
|
696
808
|
set = function(self, damageOverDuration)
|
|
697
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
698
|
-
self[
|
|
699
|
-
local remainingDamageOverDuration = (self[
|
|
700
|
-
self[
|
|
809
|
+
local damageOverDurationDelta = damageOverDuration - (self[110] or 0)
|
|
810
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
811
|
+
local remainingDamageOverDuration = (self[113] or 0) + damageOverDurationDelta
|
|
812
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
701
813
|
end
|
|
702
814
|
},
|
|
703
815
|
true
|
|
@@ -707,10 +819,10 @@ __TS__SetDescriptor(
|
|
|
707
819
|
"damagePerInterval",
|
|
708
820
|
{
|
|
709
821
|
get = function(self)
|
|
710
|
-
return self[
|
|
822
|
+
return self[111] or 0
|
|
711
823
|
end,
|
|
712
824
|
set = function(self, damagePerInterval)
|
|
713
|
-
self[
|
|
825
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
714
826
|
end
|
|
715
827
|
},
|
|
716
828
|
true
|
|
@@ -720,25 +832,25 @@ __TS__SetDescriptor(
|
|
|
720
832
|
"damageInterval",
|
|
721
833
|
{
|
|
722
834
|
get = function(self)
|
|
723
|
-
return self[
|
|
835
|
+
return self[112] or 0
|
|
724
836
|
end,
|
|
725
837
|
set = function(self, damageInterval)
|
|
726
838
|
if damageInterval <= 0 then
|
|
727
|
-
self[
|
|
728
|
-
local timer = self[
|
|
839
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
840
|
+
local timer = self[114]
|
|
729
841
|
if timer ~= nil then
|
|
730
842
|
timer:destroy()
|
|
731
|
-
self[
|
|
843
|
+
self[114] = nil
|
|
732
844
|
end
|
|
733
845
|
return
|
|
734
846
|
end
|
|
735
|
-
self[
|
|
736
|
-
local
|
|
737
|
-
local elapsed =
|
|
738
|
-
local timer = self[
|
|
847
|
+
self[112] = damageInterval
|
|
848
|
+
local ____opt_45 = self._timer
|
|
849
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
850
|
+
local timer = self[114]
|
|
739
851
|
if timer == nil then
|
|
740
852
|
timer = Timer:create()
|
|
741
|
-
self[
|
|
853
|
+
self[114] = timer
|
|
742
854
|
end
|
|
743
855
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
744
856
|
if initialDelay == damageInterval then
|
|
@@ -755,13 +867,13 @@ __TS__SetDescriptor(
|
|
|
755
867
|
"remainingHealingOverDuration",
|
|
756
868
|
{
|
|
757
869
|
get = function(self)
|
|
758
|
-
return self[
|
|
870
|
+
return self[118] or 0
|
|
759
871
|
end,
|
|
760
872
|
set = function(self, remainingHealingOverDuration)
|
|
761
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
762
|
-
self[
|
|
763
|
-
local healingOverDuration = (self[
|
|
764
|
-
self[
|
|
873
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[118] or 0)
|
|
874
|
+
self[113] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
875
|
+
local healingOverDuration = (self[115] or 0) + remainingHealingOverDurationDelta
|
|
876
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
765
877
|
end
|
|
766
878
|
},
|
|
767
879
|
true
|
|
@@ -771,13 +883,13 @@ __TS__SetDescriptor(
|
|
|
771
883
|
"healingOverDuration",
|
|
772
884
|
{
|
|
773
885
|
get = function(self)
|
|
774
|
-
return self[
|
|
886
|
+
return self[115] or 0
|
|
775
887
|
end,
|
|
776
888
|
set = function(self, healingOverDuration)
|
|
777
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
778
|
-
self[
|
|
779
|
-
local remainingHealingOverDuration = (self[
|
|
780
|
-
self[
|
|
889
|
+
local healingOverDurationDelta = healingOverDuration - (self[115] or 0)
|
|
890
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
891
|
+
local remainingHealingOverDuration = (self[118] or 0) + healingOverDurationDelta
|
|
892
|
+
self[118] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
781
893
|
end
|
|
782
894
|
},
|
|
783
895
|
true
|
|
@@ -787,10 +899,10 @@ __TS__SetDescriptor(
|
|
|
787
899
|
"healingPerInterval",
|
|
788
900
|
{
|
|
789
901
|
get = function(self)
|
|
790
|
-
return self[
|
|
902
|
+
return self[116] or 0
|
|
791
903
|
end,
|
|
792
904
|
set = function(self, healingPerInterval)
|
|
793
|
-
self[
|
|
905
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
794
906
|
end
|
|
795
907
|
},
|
|
796
908
|
true
|
|
@@ -800,25 +912,25 @@ __TS__SetDescriptor(
|
|
|
800
912
|
"healingInterval",
|
|
801
913
|
{
|
|
802
914
|
get = function(self)
|
|
803
|
-
return self[
|
|
915
|
+
return self[117] or 0
|
|
804
916
|
end,
|
|
805
917
|
set = function(self, healingInterval)
|
|
806
918
|
if healingInterval <= 0 then
|
|
807
|
-
self[
|
|
808
|
-
local timer = self[
|
|
919
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
920
|
+
local timer = self[119]
|
|
809
921
|
if timer ~= nil then
|
|
810
922
|
timer:destroy()
|
|
811
|
-
self[
|
|
923
|
+
self[119] = nil
|
|
812
924
|
end
|
|
813
925
|
return
|
|
814
926
|
end
|
|
815
|
-
self[
|
|
816
|
-
local
|
|
817
|
-
local elapsed =
|
|
818
|
-
local timer = self[
|
|
927
|
+
self[117] = healingInterval
|
|
928
|
+
local ____opt_47 = self._timer
|
|
929
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
930
|
+
local timer = self[119]
|
|
819
931
|
if timer == nil then
|
|
820
932
|
timer = Timer:create()
|
|
821
|
-
self[
|
|
933
|
+
self[119] = timer
|
|
822
934
|
end
|
|
823
935
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
824
936
|
if initialDelay == healingInterval then
|
|
@@ -835,10 +947,10 @@ __TS__SetDescriptor(
|
|
|
835
947
|
"damageOnExpiration",
|
|
836
948
|
{
|
|
837
949
|
get = function(self)
|
|
838
|
-
return self[
|
|
950
|
+
return self[120] or 0
|
|
839
951
|
end,
|
|
840
952
|
set = function(self, damageOnExpiration)
|
|
841
|
-
self[
|
|
953
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
842
954
|
end
|
|
843
955
|
},
|
|
844
956
|
true
|
|
@@ -848,10 +960,23 @@ __TS__SetDescriptor(
|
|
|
848
960
|
"healingOnExpiration",
|
|
849
961
|
{
|
|
850
962
|
get = function(self)
|
|
851
|
-
return self[
|
|
963
|
+
return self[121] or 0
|
|
852
964
|
end,
|
|
853
965
|
set = function(self, healingOnExpiration)
|
|
854
|
-
self[
|
|
966
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
967
|
+
end
|
|
968
|
+
},
|
|
969
|
+
true
|
|
970
|
+
)
|
|
971
|
+
__TS__SetDescriptor(
|
|
972
|
+
Buff.prototype,
|
|
973
|
+
"damageFactor",
|
|
974
|
+
{
|
|
975
|
+
get = function(self)
|
|
976
|
+
return self:getUnitBonus(UnitBonusType.DAMAGE_FACTOR)
|
|
977
|
+
end,
|
|
978
|
+
set = function(self, damageFactor)
|
|
979
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.DAMAGE_FACTOR, damageFactor)
|
|
855
980
|
end
|
|
856
981
|
},
|
|
857
982
|
true
|
|
@@ -882,30 +1007,79 @@ __TS__SetDescriptor(
|
|
|
882
1007
|
},
|
|
883
1008
|
true
|
|
884
1009
|
)
|
|
1010
|
+
__TS__SetDescriptor(
|
|
1011
|
+
Buff.prototype,
|
|
1012
|
+
"maxHealthIncrease",
|
|
1013
|
+
{
|
|
1014
|
+
get = function(self)
|
|
1015
|
+
return self:getUnitBonus(UnitBonusType.HEALTH)
|
|
1016
|
+
end,
|
|
1017
|
+
set = function(self, maxHealthIncrease)
|
|
1018
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.HEALTH, maxHealthIncrease)
|
|
1019
|
+
end
|
|
1020
|
+
},
|
|
1021
|
+
true
|
|
1022
|
+
)
|
|
1023
|
+
__TS__SetDescriptor(
|
|
1024
|
+
Buff.prototype,
|
|
1025
|
+
"maxManaIncrease",
|
|
1026
|
+
{
|
|
1027
|
+
get = function(self)
|
|
1028
|
+
return self:getUnitBonus(UnitBonusType.MANA)
|
|
1029
|
+
end,
|
|
1030
|
+
set = function(self, maxManaIncrease)
|
|
1031
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA, maxManaIncrease)
|
|
1032
|
+
end
|
|
1033
|
+
},
|
|
1034
|
+
true
|
|
1035
|
+
)
|
|
1036
|
+
__TS__SetDescriptor(
|
|
1037
|
+
Buff.prototype,
|
|
1038
|
+
"turnsIntoGhost",
|
|
1039
|
+
{
|
|
1040
|
+
get = function(self)
|
|
1041
|
+
local ____self__139_49 = self[139]
|
|
1042
|
+
if ____self__139_49 == nil then
|
|
1043
|
+
____self__139_49 = false
|
|
1044
|
+
end
|
|
1045
|
+
return ____self__139_49
|
|
1046
|
+
end,
|
|
1047
|
+
set = function(self, turnsIntoGhost)
|
|
1048
|
+
if not turnsIntoGhost and self[139] then
|
|
1049
|
+
self.object:decrementGhostCounter()
|
|
1050
|
+
self[139] = nil
|
|
1051
|
+
elseif turnsIntoGhost and not self[139] then
|
|
1052
|
+
self.object:incrementGhostCounter()
|
|
1053
|
+
self[139] = true
|
|
1054
|
+
end
|
|
1055
|
+
end
|
|
1056
|
+
},
|
|
1057
|
+
true
|
|
1058
|
+
)
|
|
885
1059
|
__TS__SetDescriptor(
|
|
886
1060
|
Buff.prototype,
|
|
887
1061
|
"stuns",
|
|
888
1062
|
{
|
|
889
1063
|
get = function(self)
|
|
890
|
-
local
|
|
891
|
-
if
|
|
892
|
-
|
|
1064
|
+
local ____self__140_50 = self[140]
|
|
1065
|
+
if ____self__140_50 == nil then
|
|
1066
|
+
____self__140_50 = false
|
|
893
1067
|
end
|
|
894
|
-
return
|
|
1068
|
+
return ____self__140_50
|
|
895
1069
|
end,
|
|
896
1070
|
set = function(self, stuns)
|
|
897
|
-
if not stuns and self[
|
|
898
|
-
if self[
|
|
899
|
-
self.object:
|
|
1071
|
+
if not stuns and self[140] then
|
|
1072
|
+
if self[141] then
|
|
1073
|
+
self.object:decrementForceStunCounter()
|
|
900
1074
|
end
|
|
901
1075
|
self.object:decrementStunCounter()
|
|
902
|
-
self[
|
|
903
|
-
elseif stuns and not self[
|
|
904
|
-
if self[
|
|
905
|
-
self.object:
|
|
1076
|
+
self[140] = nil
|
|
1077
|
+
elseif stuns and not self[140] then
|
|
1078
|
+
if self[141] then
|
|
1079
|
+
self.object:incrementForceStunCounter()
|
|
906
1080
|
end
|
|
907
1081
|
self.object:incrementStunCounter()
|
|
908
|
-
self[
|
|
1082
|
+
self[140] = true
|
|
909
1083
|
end
|
|
910
1084
|
end
|
|
911
1085
|
},
|
|
@@ -916,23 +1090,23 @@ __TS__SetDescriptor(
|
|
|
916
1090
|
"ignoresStunImmunity",
|
|
917
1091
|
{
|
|
918
1092
|
get = function(self)
|
|
919
|
-
local
|
|
920
|
-
if
|
|
921
|
-
|
|
1093
|
+
local ____self__141_51 = self[141]
|
|
1094
|
+
if ____self__141_51 == nil then
|
|
1095
|
+
____self__141_51 = false
|
|
922
1096
|
end
|
|
923
|
-
return
|
|
1097
|
+
return ____self__141_51
|
|
924
1098
|
end,
|
|
925
1099
|
set = function(self, ignoresStunImmunity)
|
|
926
|
-
if not ignoresStunImmunity and self[
|
|
927
|
-
if self[
|
|
928
|
-
self.object:
|
|
1100
|
+
if not ignoresStunImmunity and self[141] then
|
|
1101
|
+
if self[140] then
|
|
1102
|
+
self.object:decrementForceStunCounter()
|
|
929
1103
|
end
|
|
930
|
-
self[
|
|
931
|
-
elseif ignoresStunImmunity and not self[
|
|
932
|
-
if self[
|
|
933
|
-
self.object:
|
|
1104
|
+
self[141] = nil
|
|
1105
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1106
|
+
if self[140] then
|
|
1107
|
+
self.object:incrementForceStunCounter()
|
|
934
1108
|
end
|
|
935
|
-
self[
|
|
1109
|
+
self[141] = true
|
|
936
1110
|
end
|
|
937
1111
|
end
|
|
938
1112
|
},
|
|
@@ -943,19 +1117,19 @@ __TS__SetDescriptor(
|
|
|
943
1117
|
"disablesAutoAttack",
|
|
944
1118
|
{
|
|
945
1119
|
get = function(self)
|
|
946
|
-
local
|
|
947
|
-
if
|
|
948
|
-
|
|
1120
|
+
local ____self__142_52 = self[142]
|
|
1121
|
+
if ____self__142_52 == nil then
|
|
1122
|
+
____self__142_52 = false
|
|
949
1123
|
end
|
|
950
|
-
return
|
|
1124
|
+
return ____self__142_52
|
|
951
1125
|
end,
|
|
952
1126
|
set = function(self, disablesAutoAttack)
|
|
953
|
-
if not disablesAutoAttack and self[
|
|
1127
|
+
if not disablesAutoAttack and self[142] then
|
|
954
1128
|
self.object:decrementDisableAutoAttackCounter()
|
|
955
|
-
self[
|
|
956
|
-
elseif disablesAutoAttack and not self[
|
|
1129
|
+
self[142] = nil
|
|
1130
|
+
elseif disablesAutoAttack and not self[142] then
|
|
957
1131
|
self.object:incrementDisableAutoAttackCounter()
|
|
958
|
-
self[
|
|
1132
|
+
self[142] = true
|
|
959
1133
|
end
|
|
960
1134
|
end
|
|
961
1135
|
},
|
|
@@ -966,19 +1140,19 @@ __TS__SetDescriptor(
|
|
|
966
1140
|
"providesInvulnerability",
|
|
967
1141
|
{
|
|
968
1142
|
get = function(self)
|
|
969
|
-
local
|
|
970
|
-
if
|
|
971
|
-
|
|
1143
|
+
local ____self__143_53 = self[143]
|
|
1144
|
+
if ____self__143_53 == nil then
|
|
1145
|
+
____self__143_53 = false
|
|
972
1146
|
end
|
|
973
|
-
return
|
|
1147
|
+
return ____self__143_53
|
|
974
1148
|
end,
|
|
975
1149
|
set = function(self, providesInvulnerability)
|
|
976
|
-
if not providesInvulnerability and self[
|
|
1150
|
+
if not providesInvulnerability and self[143] then
|
|
977
1151
|
self.object:decrementInvulnerabilityCounter()
|
|
978
|
-
self[
|
|
979
|
-
elseif providesInvulnerability and not self[
|
|
1152
|
+
self[143] = nil
|
|
1153
|
+
elseif providesInvulnerability and not self[143] then
|
|
980
1154
|
self.object:incrementInvulnerabilityCounter()
|
|
981
|
-
self[
|
|
1155
|
+
self[143] = true
|
|
982
1156
|
end
|
|
983
1157
|
end
|
|
984
1158
|
},
|
|
@@ -989,17 +1163,17 @@ __TS__SetDescriptor(
|
|
|
989
1163
|
"killsOnExpiration",
|
|
990
1164
|
{
|
|
991
1165
|
get = function(self)
|
|
992
|
-
local
|
|
993
|
-
if
|
|
994
|
-
|
|
1166
|
+
local ____self__144_54 = self[144]
|
|
1167
|
+
if ____self__144_54 == nil then
|
|
1168
|
+
____self__144_54 = false
|
|
995
1169
|
end
|
|
996
|
-
return
|
|
1170
|
+
return ____self__144_54
|
|
997
1171
|
end,
|
|
998
1172
|
set = function(self, killsOnExpiration)
|
|
999
|
-
if not killsOnExpiration and self[
|
|
1000
|
-
self[
|
|
1001
|
-
elseif killsOnExpiration and not self[
|
|
1002
|
-
self[
|
|
1173
|
+
if not killsOnExpiration and self[144] then
|
|
1174
|
+
self[144] = nil
|
|
1175
|
+
elseif killsOnExpiration and not self[144] then
|
|
1176
|
+
self[144] = true
|
|
1003
1177
|
end
|
|
1004
1178
|
end
|
|
1005
1179
|
},
|
|
@@ -1010,17 +1184,51 @@ __TS__SetDescriptor(
|
|
|
1010
1184
|
"explodesOnExpiration",
|
|
1011
1185
|
{
|
|
1012
1186
|
get = function(self)
|
|
1013
|
-
local
|
|
1014
|
-
if
|
|
1015
|
-
|
|
1187
|
+
local ____self__145_55 = self[145]
|
|
1188
|
+
if ____self__145_55 == nil then
|
|
1189
|
+
____self__145_55 = false
|
|
1016
1190
|
end
|
|
1017
|
-
return
|
|
1191
|
+
return ____self__145_55
|
|
1018
1192
|
end,
|
|
1019
1193
|
set = function(self, killsOnExpiration)
|
|
1020
|
-
if not killsOnExpiration and self[
|
|
1021
|
-
self[
|
|
1022
|
-
elseif killsOnExpiration and not self[
|
|
1023
|
-
self[
|
|
1194
|
+
if not killsOnExpiration and self[145] then
|
|
1195
|
+
self[145] = nil
|
|
1196
|
+
elseif killsOnExpiration and not self[145] then
|
|
1197
|
+
self[145] = true
|
|
1198
|
+
end
|
|
1199
|
+
end
|
|
1200
|
+
},
|
|
1201
|
+
true
|
|
1202
|
+
)
|
|
1203
|
+
__TS__SetDescriptor(
|
|
1204
|
+
Buff.prototype,
|
|
1205
|
+
"maximumDamageDealtEventCount",
|
|
1206
|
+
{
|
|
1207
|
+
get = function(self)
|
|
1208
|
+
return self[132] or 0
|
|
1209
|
+
end,
|
|
1210
|
+
set = function(self, maximumDamageDealtEventCount)
|
|
1211
|
+
if maximumDamageDealtEventCount == 0 then
|
|
1212
|
+
self[132] = nil
|
|
1213
|
+
else
|
|
1214
|
+
self[132] = maximumDamageDealtEventCount
|
|
1215
|
+
end
|
|
1216
|
+
end
|
|
1217
|
+
},
|
|
1218
|
+
true
|
|
1219
|
+
)
|
|
1220
|
+
__TS__SetDescriptor(
|
|
1221
|
+
Buff.prototype,
|
|
1222
|
+
"maximumDamageReceivedEventCount",
|
|
1223
|
+
{
|
|
1224
|
+
get = function(self)
|
|
1225
|
+
return self[134] or 0
|
|
1226
|
+
end,
|
|
1227
|
+
set = function(self, maximumDamageReceivedEventCount)
|
|
1228
|
+
if maximumDamageReceivedEventCount == 0 then
|
|
1229
|
+
self[134] = nil
|
|
1230
|
+
else
|
|
1231
|
+
self[134] = maximumDamageReceivedEventCount
|
|
1024
1232
|
end
|
|
1025
1233
|
end
|
|
1026
1234
|
},
|
|
@@ -1031,13 +1239,13 @@ __TS__SetDescriptor(
|
|
|
1031
1239
|
"maximumAutoAttackCount",
|
|
1032
1240
|
{
|
|
1033
1241
|
get = function(self)
|
|
1034
|
-
return self[
|
|
1242
|
+
return self[130] or 0
|
|
1035
1243
|
end,
|
|
1036
1244
|
set = function(self, maximumAutoAttackCount)
|
|
1037
1245
|
if maximumAutoAttackCount == 0 then
|
|
1038
|
-
self[
|
|
1246
|
+
self[130] = nil
|
|
1039
1247
|
else
|
|
1040
|
-
self[
|
|
1248
|
+
self[130] = maximumAutoAttackCount
|
|
1041
1249
|
end
|
|
1042
1250
|
end
|
|
1043
1251
|
},
|
|
@@ -1048,10 +1256,10 @@ __TS__SetDescriptor(
|
|
|
1048
1256
|
"durationIncreaseOnAutoAttack",
|
|
1049
1257
|
{
|
|
1050
1258
|
get = function(self)
|
|
1051
|
-
return self[
|
|
1259
|
+
return self[107] or 0
|
|
1052
1260
|
end,
|
|
1053
1261
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1054
|
-
self[
|
|
1262
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
1055
1263
|
end
|
|
1056
1264
|
},
|
|
1057
1265
|
true
|
|
@@ -1082,12 +1290,52 @@ __TS__SetDescriptor(
|
|
|
1082
1290
|
},
|
|
1083
1291
|
true
|
|
1084
1292
|
)
|
|
1293
|
+
__TS__SetDescriptor(
|
|
1294
|
+
Buff.prototype,
|
|
1295
|
+
"evasionProbability",
|
|
1296
|
+
{
|
|
1297
|
+
get = function(self)
|
|
1298
|
+
return self:getUnitBonus(UnitBonusType.EVASION_PROBABILITY)
|
|
1299
|
+
end,
|
|
1300
|
+
set = function(self, evasionProbability)
|
|
1301
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.EVASION_PROBABILITY, evasionProbability)
|
|
1302
|
+
end
|
|
1303
|
+
},
|
|
1304
|
+
true
|
|
1305
|
+
)
|
|
1306
|
+
__TS__SetDescriptor(
|
|
1307
|
+
Buff.prototype,
|
|
1308
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1309
|
+
{
|
|
1310
|
+
get = function(self)
|
|
1311
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1312
|
+
end,
|
|
1313
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1314
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1315
|
+
end
|
|
1316
|
+
},
|
|
1317
|
+
true
|
|
1318
|
+
)
|
|
1085
1319
|
__TS__SetDescriptor(
|
|
1086
1320
|
Buff.prototype,
|
|
1087
1321
|
"duration",
|
|
1088
|
-
{
|
|
1089
|
-
|
|
1090
|
-
|
|
1322
|
+
{
|
|
1323
|
+
get = function(self)
|
|
1324
|
+
return self[103]
|
|
1325
|
+
end,
|
|
1326
|
+
set = function(self, duration)
|
|
1327
|
+
if duration <= 0 then
|
|
1328
|
+
local timer = self._timer
|
|
1329
|
+
if timer ~= nil then
|
|
1330
|
+
timer:destroy()
|
|
1331
|
+
self._timer = nil
|
|
1332
|
+
end
|
|
1333
|
+
self[103] = 0
|
|
1334
|
+
else
|
|
1335
|
+
self.remainingDuration = self.remainingDuration + (duration - self[103])
|
|
1336
|
+
end
|
|
1337
|
+
end
|
|
1338
|
+
},
|
|
1091
1339
|
true
|
|
1092
1340
|
)
|
|
1093
1341
|
__TS__SetDescriptor(
|
|
@@ -1095,15 +1343,15 @@ __TS__SetDescriptor(
|
|
|
1095
1343
|
"remainingDuration",
|
|
1096
1344
|
{
|
|
1097
1345
|
get = function(self)
|
|
1098
|
-
local
|
|
1099
|
-
return
|
|
1346
|
+
local ____opt_56 = self._timer
|
|
1347
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1100
1348
|
end,
|
|
1101
1349
|
set = function(self, remainingDuration)
|
|
1102
|
-
local
|
|
1103
|
-
local
|
|
1104
|
-
local remainingDurationDelta =
|
|
1350
|
+
local ____remainingDuration_60 = remainingDuration
|
|
1351
|
+
local ____opt_58 = self._timer
|
|
1352
|
+
local remainingDurationDelta = ____remainingDuration_60 - (____opt_58 and ____opt_58.remaining or 0)
|
|
1105
1353
|
if remainingDurationDelta ~= 0 then
|
|
1106
|
-
self[
|
|
1354
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1107
1355
|
if remainingDuration <= 0 then
|
|
1108
1356
|
Timer:run(destroyBuff, self)
|
|
1109
1357
|
else
|
|
@@ -1115,7 +1363,8 @@ __TS__SetDescriptor(
|
|
|
1115
1363
|
self._level,
|
|
1116
1364
|
remainingDuration,
|
|
1117
1365
|
self._spellStealPriority,
|
|
1118
|
-
self._learnLevelMinimum
|
|
1366
|
+
self._learnLevelMinimum,
|
|
1367
|
+
self[146]
|
|
1119
1368
|
) then
|
|
1120
1369
|
local timer = self._timer
|
|
1121
1370
|
if timer == nil then
|
|
@@ -1129,10 +1378,103 @@ __TS__SetDescriptor(
|
|
|
1129
1378
|
end
|
|
1130
1379
|
},
|
|
1131
1380
|
true
|
|
1132
|
-
)
|
|
1381
|
+
)
|
|
1382
|
+
__TS__SetDescriptor(
|
|
1383
|
+
Buff.prototype,
|
|
1384
|
+
"absorbedDamageFactor",
|
|
1385
|
+
{
|
|
1386
|
+
get = function(self)
|
|
1387
|
+
return self[135] or 1
|
|
1388
|
+
end,
|
|
1389
|
+
set = function(self, absorbedDamageFactor)
|
|
1390
|
+
if absorbedDamageFactor == 1 then
|
|
1391
|
+
self[135] = nil
|
|
1392
|
+
else
|
|
1393
|
+
self[135] = absorbedDamageFactor
|
|
1394
|
+
end
|
|
1395
|
+
end
|
|
1396
|
+
},
|
|
1397
|
+
true
|
|
1398
|
+
)
|
|
1399
|
+
__TS__SetDescriptor(
|
|
1400
|
+
Buff.prototype,
|
|
1401
|
+
"maximumDamageAbsorbed",
|
|
1402
|
+
{
|
|
1403
|
+
get = function(self)
|
|
1404
|
+
return self[136] or 0
|
|
1405
|
+
end,
|
|
1406
|
+
set = function(self, maximumDamageAbsorbed)
|
|
1407
|
+
if maximumDamageAbsorbed == 0 then
|
|
1408
|
+
self[136] = nil
|
|
1409
|
+
else
|
|
1410
|
+
self[136] = maximumDamageAbsorbed
|
|
1411
|
+
end
|
|
1412
|
+
end
|
|
1413
|
+
},
|
|
1414
|
+
true
|
|
1415
|
+
)
|
|
1416
|
+
__TS__SetDescriptor(
|
|
1417
|
+
Buff.prototype,
|
|
1418
|
+
"damageAbsorbed",
|
|
1419
|
+
{get = function(self)
|
|
1420
|
+
return self[137] or 0
|
|
1421
|
+
end},
|
|
1422
|
+
true
|
|
1423
|
+
)
|
|
1424
|
+
__TS__SetDescriptor(
|
|
1425
|
+
Buff.prototype,
|
|
1426
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
1427
|
+
{
|
|
1428
|
+
get = function(self)
|
|
1429
|
+
local ____self__138_61 = self[138]
|
|
1430
|
+
if ____self__138_61 == nil then
|
|
1431
|
+
____self__138_61 = true
|
|
1432
|
+
end
|
|
1433
|
+
return ____self__138_61
|
|
1434
|
+
end,
|
|
1435
|
+
set = function(self, destroysOnMaximumDamageAbsorbed)
|
|
1436
|
+
local ____destroysOnMaximumDamageAbsorbed_62
|
|
1437
|
+
if destroysOnMaximumDamageAbsorbed then
|
|
1438
|
+
____destroysOnMaximumDamageAbsorbed_62 = nil
|
|
1439
|
+
else
|
|
1440
|
+
____destroysOnMaximumDamageAbsorbed_62 = false
|
|
1441
|
+
end
|
|
1442
|
+
self[138] = ____destroysOnMaximumDamageAbsorbed_62
|
|
1443
|
+
end
|
|
1444
|
+
},
|
|
1445
|
+
true
|
|
1446
|
+
)
|
|
1447
|
+
__TS__SetDescriptor(
|
|
1448
|
+
Buff.prototype,
|
|
1449
|
+
"abilityCooldownFactor",
|
|
1450
|
+
{
|
|
1451
|
+
get = function(self)
|
|
1452
|
+
return self[147] or 1
|
|
1453
|
+
end,
|
|
1454
|
+
set = function(self, abilityCooldownFactor)
|
|
1455
|
+
local previousAbilityCooldownModifier = self[148]
|
|
1456
|
+
if previousAbilityCooldownModifier then
|
|
1457
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1458
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1459
|
+
end
|
|
1460
|
+
end
|
|
1461
|
+
local function modifier(ability, level, cooldown)
|
|
1462
|
+
return cooldown * abilityCooldownFactor
|
|
1463
|
+
end
|
|
1464
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1465
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1466
|
+
end
|
|
1467
|
+
self[148] = modifier
|
|
1468
|
+
self[147] = abilityCooldownFactor
|
|
1469
|
+
end
|
|
1470
|
+
},
|
|
1471
|
+
true
|
|
1472
|
+
)
|
|
1473
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1474
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1133
1475
|
(function(self)
|
|
1134
1476
|
local function destroyBuffIfNeeded(buff)
|
|
1135
|
-
if getUnitAbility(buff[
|
|
1477
|
+
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
1136
1478
|
buff:destroy()
|
|
1137
1479
|
end
|
|
1138
1480
|
end
|
|
@@ -1183,5 +1525,11 @@ __TS__SetDescriptor(
|
|
|
1183
1525
|
____exports.checkBuffs(target)
|
|
1184
1526
|
end
|
|
1185
1527
|
)
|
|
1528
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1529
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1530
|
+
end)
|
|
1531
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1532
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1533
|
+
end)
|
|
1186
1534
|
end)(Buff)
|
|
1187
1535
|
return ____exports
|