warscript 0.0.1-dev.91da42b → 0.0.1-dev.9381e62
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/core/dummy.lua +4 -2
- package/core/types/effect.d.ts +11 -1
- package/core/types/effect.lua +43 -77
- package/core/types/frame.d.ts +1 -0
- package/core/types/frame.lua +112 -37
- package/core/types/handle.lua +9 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +2 -1
- package/core/types/player.lua +18 -13
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +1 -1
- package/core/types/sound.lua +14 -9
- package/core/types/unit.d.ts +5 -0
- package/core/types/unit.lua +5 -0
- package/core/util.d.ts +3 -1
- package/core/util.lua +109 -3
- package/decl/native.d.ts +705 -7
- package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
- package/engine/behaviour/ability/damage.d.ts +4 -0
- package/engine/behaviour/ability/damage.lua +19 -15
- package/engine/behaviour/ability/emulate-impact.lua +5 -4
- package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
- package/engine/behaviour/ability/on-command-impact.lua +1 -0
- package/engine/behaviour/ability.d.ts +11 -5
- package/engine/behaviour/ability.lua +54 -0
- package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
- package/engine/behaviour/unit/stun-immunity.lua +5 -4
- package/engine/behaviour/unit.d.ts +1 -0
- package/engine/behaviour/unit.lua +14 -3
- package/engine/buff.d.ts +61 -25
- package/engine/buff.lua +330 -156
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +4 -0
- package/engine/internal/ability.lua +56 -36
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item/owner-cache.d.ts +5 -0
- package/engine/internal/item/owner-cache.lua +4 -0
- package/engine/internal/item+owner.d.ts +2 -0
- package/engine/internal/item+owner.lua +27 -4
- package/engine/internal/item.d.ts +20 -5
- package/engine/internal/item.lua +146 -57
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -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/unit/ability.lua +15 -3
- package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
- package/engine/internal/unit/add-item-to-slot.lua +53 -12
- package/engine/internal/unit/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/bonus.d.ts +12 -0
- package/engine/internal/unit/bonus.lua +92 -8
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +34 -19
- package/engine/internal/unit/equipment-inventory.d.ts +44 -0
- package/engine/internal/unit/equipment-inventory.lua +233 -0
- package/engine/internal/unit/expiration-timer.lua +1 -1
- package/engine/internal/unit/extended-inventory.d.ts +25 -0
- package/engine/internal/unit/extended-inventory.lua +99 -0
- package/engine/internal/unit/ignore-events-items.lua +10 -1
- package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
- package/engine/internal/unit/inventory.lua +87 -0
- package/engine/internal/unit/item-container.d.ts +25 -0
- package/engine/internal/unit/item-container.lua +11 -0
- package/engine/internal/unit/item-order-events.d.ts +17 -0
- package/engine/internal/unit/item-order-events.lua +67 -0
- package/engine/internal/unit/item-slot.d.ts +27 -0
- package/engine/internal/unit/item-slot.lua +92 -0
- package/engine/internal/unit/order.d.ts +3 -3
- package/engine/internal/unit/order.lua +10 -10
- package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
- package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit+ability.d.ts +2 -1
- package/engine/internal/unit+ability.lua +63 -2
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +9 -0
- package/engine/internal/unit+damage.lua +33 -0
- package/engine/internal/unit+rally.lua +9 -31
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +13 -13
- package/engine/internal/unit.d.ts +2 -10
- package/engine/internal/unit.lua +92 -133
- package/engine/local-client.d.ts +26 -0
- package/engine/local-client.lua +294 -54
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
- package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
- package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
- package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-type.lua +26 -0
- package/engine/object-data/auxiliary/item-class.d.ts +11 -0
- package/engine/object-data/auxiliary/item-class.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/order-type.d.ts +939 -0
- package/engine/object-data/auxiliary/order-type.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
- package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
- package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
- package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
- package/engine/object-data/entry/ability-type/consecration.lua +52 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
- package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment.lua +27 -0
- package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
- package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
- package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
- package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
- package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
- 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/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
- package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
- package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
- package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -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-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
- package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
- package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
- package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
- package/engine/object-data/entry/ability-type/provoke.lua +66 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -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/resolve.d.ts +12 -0
- package/engine/object-data/entry/ability-type/resolve.lua +39 -0
- package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
- package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
- package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
- package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
- package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
- package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
- package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
- package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
- package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
- package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
- package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
- package/engine/object-data/entry/ability-type/talents.lua +27 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
- package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
- package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
- package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
- package/engine/object-data/entry/ability-type/warcry.lua +26 -0
- package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
- package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
- package/engine/object-data/entry/ability-type.d.ts +25 -6
- package/engine/object-data/entry/ability-type.lua +244 -8
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- package/engine/object-data/entry/buff-type.d.ts +6 -2
- package/engine/object-data/entry/buff-type.lua +26 -0
- package/engine/object-data/entry/destructible-type.d.ts +6 -2
- package/engine/object-data/entry/destructible-type.lua +26 -0
- package/engine/object-data/entry/item-type.d.ts +18 -3
- package/engine/object-data/entry/item-type.lua +84 -0
- package/engine/object-data/entry/lightning-type.d.ts +6 -8
- package/engine/object-data/entry/lightning-type.lua +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +2 -2
- package/engine/object-data/entry/unit-type.d.ts +47 -2
- package/engine/object-data/entry/unit-type.lua +383 -49
- package/engine/object-data/entry/upgrade.d.ts +2 -2
- package/engine/object-data/entry.d.ts +6 -1
- package/engine/object-data/entry.lua +8 -0
- package/engine/object-field/ability.lua +2 -2
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field.d.ts +1 -1
- package/engine/object-field.lua +9 -7
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +8 -0
- package/engine/standard/entries/ability-type.d.ts +3102 -7
- package/engine/standard/entries/ability-type.lua +0 -6
- package/engine/standard/entries/buff-type.d.ts +45 -0
- package/engine/standard/entries/buff-type.lua +43 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/lightning-type.d.ts +42 -15
- package/engine/standard/entries/lightning-type.lua +0 -14
- package/engine/standard/entries/unit-type.d.ts +5 -0
- package/engine/standard/entries/unit-type.lua +5 -0
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/unit.d.ts +6 -1
- package/engine/unit.lua +6 -1
- package/event.d.ts +1 -1
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/network.lua +25 -1
- package/objutil/buff.lua +10 -8
- package/objutil/object.lua +1 -1
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +3 -23
- package/patch-lua.lua +15 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +3 -1
- package/utility/linked-set.lua +27 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/engine/internal/unit/item.lua +0 -78
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.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
|
@@ -42,6 +42,7 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
42
42
|
local ____unit = require("engine.behaviour.unit")
|
|
43
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
44
44
|
local ____arrays = require("utility.arrays")
|
|
45
|
+
local emptyArray = ____arrays.emptyArray
|
|
45
46
|
local forEach = ____arrays.forEach
|
|
46
47
|
local ____event = require("event")
|
|
47
48
|
local Event = ____event.Event
|
|
@@ -55,6 +56,8 @@ local ____ability = require("engine.standard.fields.ability")
|
|
|
55
56
|
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
56
57
|
local ____ability = require("engine.behaviour.ability")
|
|
57
58
|
local AbilityBehavior = ____ability.AbilityBehavior
|
|
59
|
+
local ____records = require("utility.records")
|
|
60
|
+
local sortedKeysUnnested = ____records.sortedKeysUnnested
|
|
58
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
59
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
60
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -100,7 +103,8 @@ local buffParametersKeys = {
|
|
|
100
103
|
damageIncrease = true,
|
|
101
104
|
damageIncreaseFactor = true,
|
|
102
105
|
armorIncrease = true,
|
|
103
|
-
|
|
106
|
+
maxHealthIncrease = true,
|
|
107
|
+
maxManaIncrease = true,
|
|
104
108
|
attackSpeedIncreaseFactor = true,
|
|
105
109
|
movementSpeedIncreaseFactor = true,
|
|
106
110
|
manaRegenerationRateIncreaseFactor = true,
|
|
@@ -123,6 +127,9 @@ local buffParametersKeys = {
|
|
|
123
127
|
maximumAutoAttackCount = true,
|
|
124
128
|
maximumDamageDealtEventCount = true,
|
|
125
129
|
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
126
133
|
uniqueGroup = true,
|
|
127
134
|
damageOnExpiration = true,
|
|
128
135
|
healingOnExpiration = true,
|
|
@@ -179,6 +186,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
179
186
|
end
|
|
180
187
|
end
|
|
181
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
182
190
|
"turnsIntoGhost",
|
|
183
191
|
"stuns",
|
|
184
192
|
"ignoresStunImmunity",
|
|
@@ -194,6 +202,8 @@ local buffNumberParameters = {
|
|
|
194
202
|
"manaRegenerationRateIncreaseFactor",
|
|
195
203
|
"evasionProbability",
|
|
196
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
197
207
|
"damageFactor",
|
|
198
208
|
"receivedDamageFactor",
|
|
199
209
|
"maximumAutoAttackCount",
|
|
@@ -207,6 +217,8 @@ local buffNumberParameters = {
|
|
|
207
217
|
"healingOverDuration",
|
|
208
218
|
"damageOnExpiration",
|
|
209
219
|
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
210
222
|
"abilityCooldownFactor"
|
|
211
223
|
}
|
|
212
224
|
local unsuccessfulApplicationMarker = {}
|
|
@@ -242,6 +254,10 @@ local function destroyBuff(buff)
|
|
|
242
254
|
buff:destroy()
|
|
243
255
|
end
|
|
244
256
|
local function expireBuff(buff)
|
|
257
|
+
if buff.isDestroyed or buff[100] ~= 1 then
|
|
258
|
+
return
|
|
259
|
+
end
|
|
260
|
+
buff[100] = 2
|
|
245
261
|
local remainingDamageOverDuration = buff[113] or 0
|
|
246
262
|
local remainingHealingOverDuration = buff[113] or 0
|
|
247
263
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
@@ -385,14 +401,15 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
385
401
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
386
402
|
if missProbability ~= nil then
|
|
387
403
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
388
|
-
self[
|
|
404
|
+
self[146] = missProbability
|
|
389
405
|
end
|
|
390
406
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
391
407
|
if buffByTypeId == nil then
|
|
392
408
|
buffByTypeId = {}
|
|
393
409
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
394
410
|
end
|
|
395
|
-
|
|
411
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
412
|
+
local ____opt_15 = self.previousBuff
|
|
396
413
|
if ____opt_15 ~= nil then
|
|
397
414
|
____opt_15:destroy()
|
|
398
415
|
end
|
|
@@ -468,24 +485,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
468
485
|
abilityTypeIds = {}
|
|
469
486
|
self._abilityTypeIds = abilityTypeIds
|
|
470
487
|
end
|
|
471
|
-
for
|
|
488
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
489
|
+
local abilityParameters = checkNotNull(parametersAbilityTypeIds[abilityTypeId])
|
|
472
490
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
473
491
|
if addedAbility ~= nil then
|
|
474
492
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
475
493
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
479
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
480
|
-
end
|
|
481
|
-
elseif abilityParameterKey ~= "level" then
|
|
482
|
-
abilityParameterKey:setValue(
|
|
483
|
-
addedAbility,
|
|
484
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
485
|
-
)
|
|
486
|
-
end
|
|
494
|
+
if abilityParameters.isButtonVisible == false then
|
|
495
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
487
496
|
end
|
|
488
|
-
|
|
497
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
498
|
+
field[1]:setValue(
|
|
499
|
+
addedAbility,
|
|
500
|
+
resolveNumberValue(ability, level, field[2])
|
|
501
|
+
)
|
|
502
|
+
end
|
|
503
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
489
504
|
end
|
|
490
505
|
end
|
|
491
506
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -497,18 +512,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
497
512
|
self._behaviors = behaviors
|
|
498
513
|
end
|
|
499
514
|
end
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
if
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
515
|
+
if parameters ~= nil then
|
|
516
|
+
local additionalParameters = {}
|
|
517
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
518
|
+
if not buffParametersKeys[key] then
|
|
519
|
+
if ability then
|
|
520
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
521
|
+
else
|
|
522
|
+
additionalParameters[key] = parameters[key]
|
|
523
|
+
end
|
|
507
524
|
end
|
|
508
525
|
end
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
526
|
+
if (next(additionalParameters)) ~= nil then
|
|
527
|
+
self.parameters = additionalParameters
|
|
528
|
+
end
|
|
512
529
|
end
|
|
513
530
|
end
|
|
514
531
|
if duration ~= nil and duration > 0 then
|
|
@@ -522,7 +539,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
522
539
|
end
|
|
523
540
|
function Buff.prototype.onAbilityGained(self, ability)
|
|
524
541
|
if __TS__InstanceOf(ability, UnitAbility) then
|
|
525
|
-
local abilityCooldownModifier = self[
|
|
542
|
+
local abilityCooldownModifier = self[148]
|
|
526
543
|
if abilityCooldownModifier then
|
|
527
544
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
528
545
|
end
|
|
@@ -530,24 +547,38 @@ function Buff.prototype.onAbilityGained(self, ability)
|
|
|
530
547
|
end
|
|
531
548
|
function Buff.prototype.onAbilityLost(self, ability)
|
|
532
549
|
if __TS__InstanceOf(ability, UnitAbility) then
|
|
533
|
-
local abilityCooldownModifier = self[
|
|
550
|
+
local abilityCooldownModifier = self[148]
|
|
534
551
|
if abilityCooldownModifier then
|
|
535
552
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
536
553
|
end
|
|
537
554
|
end
|
|
538
555
|
end
|
|
539
556
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
557
|
+
self:flash(
|
|
558
|
+
self[105],
|
|
559
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin",
|
|
560
|
+
widgetOrXOrParametersOrDuration,
|
|
561
|
+
yOrParametersOrDuration,
|
|
562
|
+
parametersOrDuration
|
|
563
|
+
)
|
|
564
|
+
end
|
|
565
|
+
function Buff.prototype.flashSpecialEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
566
|
+
self:flash(
|
|
567
|
+
self[106],
|
|
568
|
+
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin",
|
|
569
|
+
widgetOrXOrParametersOrDuration,
|
|
570
|
+
yOrParametersOrDuration,
|
|
571
|
+
parametersOrDuration
|
|
572
|
+
)
|
|
573
|
+
end
|
|
574
|
+
function Buff.prototype.flash(self, modelPath, attachmentPoint, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
540
575
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
541
|
-
Effect:flash(
|
|
576
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
542
577
|
else
|
|
543
578
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
544
579
|
local ____Effect_40 = Effect
|
|
545
580
|
local ____Effect_flash_41 = Effect.flash
|
|
546
|
-
local ____array_39 = __TS__SparseArrayNew(
|
|
547
|
-
self[105],
|
|
548
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
549
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
550
|
-
)
|
|
581
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
551
582
|
local ____isWidgetProvided_38
|
|
552
583
|
if isWidgetProvided then
|
|
553
584
|
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
@@ -561,26 +592,22 @@ function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrPa
|
|
|
561
592
|
)
|
|
562
593
|
end
|
|
563
594
|
end
|
|
564
|
-
function Buff.prototype.
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
595
|
+
function Buff.prototype.expire(self)
|
|
596
|
+
expireBuff(self)
|
|
597
|
+
end
|
|
598
|
+
function Buff.prototype.dispel(self, source)
|
|
599
|
+
if self.isDestroyed or self[100] ~= 1 then
|
|
600
|
+
return
|
|
601
|
+
end
|
|
602
|
+
self[100] = 2
|
|
603
|
+
do
|
|
604
|
+
pcall(function()
|
|
605
|
+
self:onDispel(source)
|
|
606
|
+
end)
|
|
607
|
+
do
|
|
608
|
+
self:destroy()
|
|
609
|
+
end
|
|
578
610
|
end
|
|
579
|
-
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
580
|
-
____Effect_flash_45(
|
|
581
|
-
____Effect_44,
|
|
582
|
-
__TS__SparseArraySpread(____array_43)
|
|
583
|
-
)
|
|
584
611
|
end
|
|
585
612
|
function Buff.prototype.onCreate(self)
|
|
586
613
|
end
|
|
@@ -610,29 +637,29 @@ function Buff.prototype.onDestroy(self)
|
|
|
610
637
|
behavior:destroy()
|
|
611
638
|
end
|
|
612
639
|
end
|
|
613
|
-
local previousAbilityCooldownModifier = self[
|
|
640
|
+
local previousAbilityCooldownModifier = self[148]
|
|
614
641
|
if previousAbilityCooldownModifier then
|
|
615
642
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
616
643
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
617
644
|
end
|
|
618
645
|
end
|
|
619
|
-
if self[
|
|
646
|
+
if self[143] then
|
|
620
647
|
unit:decrementInvulnerabilityCounter()
|
|
621
648
|
end
|
|
622
|
-
if self[
|
|
649
|
+
if self[142] then
|
|
623
650
|
unit:decrementDisableAutoAttackCounter()
|
|
624
651
|
end
|
|
625
|
-
if self[
|
|
626
|
-
if self[
|
|
652
|
+
if self[140] then
|
|
653
|
+
if self[141] then
|
|
627
654
|
unit:decrementForceStunCounter()
|
|
628
655
|
end
|
|
629
656
|
unit:decrementStunCounter()
|
|
630
657
|
end
|
|
631
|
-
if self[
|
|
658
|
+
if self[139] then
|
|
632
659
|
unit:decrementGhostCounter()
|
|
633
660
|
end
|
|
634
661
|
if self._abilityTypeIds ~= nil then
|
|
635
|
-
for abilityTypeId in
|
|
662
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
636
663
|
unit:removeAbility(abilityTypeId)
|
|
637
664
|
end
|
|
638
665
|
end
|
|
@@ -665,13 +692,15 @@ function Buff.apply(self, ...)
|
|
|
665
692
|
end
|
|
666
693
|
end
|
|
667
694
|
function Buff.getByTypeId(self, unit, typeId)
|
|
668
|
-
local
|
|
669
|
-
local buff =
|
|
695
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
696
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
670
697
|
if __TS__InstanceOf(buff, self) then
|
|
671
698
|
return buff
|
|
672
699
|
end
|
|
673
700
|
return nil
|
|
674
701
|
end
|
|
702
|
+
function Buff.prototype.onDispel(self, source)
|
|
703
|
+
end
|
|
675
704
|
function Buff.prototype.onExpiration(self)
|
|
676
705
|
local unit = self.unit
|
|
677
706
|
if self[120] ~= nil then
|
|
@@ -680,9 +709,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
680
709
|
if self[121] ~= nil then
|
|
681
710
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
682
711
|
end
|
|
683
|
-
if self[
|
|
712
|
+
if self[145] then
|
|
684
713
|
unit:explode()
|
|
685
|
-
elseif self[
|
|
714
|
+
elseif self[144] then
|
|
686
715
|
unit:kill()
|
|
687
716
|
end
|
|
688
717
|
end
|
|
@@ -737,6 +766,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
737
766
|
end
|
|
738
767
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
739
768
|
if event.originalAmount ~= 0 then
|
|
769
|
+
local absorbedDamage = min(event.amount * (self[135] or 1), (self[136] or 0) - (self[137] or 0))
|
|
770
|
+
if absorbedDamage > 0 then
|
|
771
|
+
event.amount = event.amount - absorbedDamage
|
|
772
|
+
self[137] = (self[137] or 0) + absorbedDamage
|
|
773
|
+
local ____self__138_44 = self[138]
|
|
774
|
+
if ____self__138_44 == nil then
|
|
775
|
+
____self__138_44 = true
|
|
776
|
+
end
|
|
777
|
+
if ____self__138_44 and self[137] >= (self[136] or 0) then
|
|
778
|
+
self:destroy()
|
|
779
|
+
end
|
|
780
|
+
end
|
|
740
781
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
741
782
|
self[133] = damageReceivedEventCount
|
|
742
783
|
if damageReceivedEventCount == self[134] then
|
|
@@ -824,8 +865,8 @@ __TS__SetDescriptor(
|
|
|
824
865
|
return
|
|
825
866
|
end
|
|
826
867
|
self[112] = damageInterval
|
|
827
|
-
local
|
|
828
|
-
local elapsed =
|
|
868
|
+
local ____opt_45 = self._timer
|
|
869
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
829
870
|
local timer = self[114]
|
|
830
871
|
if timer == nil then
|
|
831
872
|
timer = Timer:create()
|
|
@@ -904,8 +945,8 @@ __TS__SetDescriptor(
|
|
|
904
945
|
return
|
|
905
946
|
end
|
|
906
947
|
self[117] = healingInterval
|
|
907
|
-
local
|
|
908
|
-
local elapsed =
|
|
948
|
+
local ____opt_47 = self._timer
|
|
949
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
909
950
|
local timer = self[119]
|
|
910
951
|
if timer == nil then
|
|
911
952
|
timer = Timer:create()
|
|
@@ -986,24 +1027,50 @@ __TS__SetDescriptor(
|
|
|
986
1027
|
},
|
|
987
1028
|
true
|
|
988
1029
|
)
|
|
1030
|
+
__TS__SetDescriptor(
|
|
1031
|
+
Buff.prototype,
|
|
1032
|
+
"maxHealthIncrease",
|
|
1033
|
+
{
|
|
1034
|
+
get = function(self)
|
|
1035
|
+
return self:getUnitBonus(UnitBonusType.HEALTH)
|
|
1036
|
+
end,
|
|
1037
|
+
set = function(self, maxHealthIncrease)
|
|
1038
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.HEALTH, maxHealthIncrease)
|
|
1039
|
+
end
|
|
1040
|
+
},
|
|
1041
|
+
true
|
|
1042
|
+
)
|
|
1043
|
+
__TS__SetDescriptor(
|
|
1044
|
+
Buff.prototype,
|
|
1045
|
+
"maxManaIncrease",
|
|
1046
|
+
{
|
|
1047
|
+
get = function(self)
|
|
1048
|
+
return self:getUnitBonus(UnitBonusType.MANA)
|
|
1049
|
+
end,
|
|
1050
|
+
set = function(self, maxManaIncrease)
|
|
1051
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA, maxManaIncrease)
|
|
1052
|
+
end
|
|
1053
|
+
},
|
|
1054
|
+
true
|
|
1055
|
+
)
|
|
989
1056
|
__TS__SetDescriptor(
|
|
990
1057
|
Buff.prototype,
|
|
991
1058
|
"turnsIntoGhost",
|
|
992
1059
|
{
|
|
993
1060
|
get = function(self)
|
|
994
|
-
local
|
|
995
|
-
if
|
|
996
|
-
|
|
1061
|
+
local ____self__139_49 = self[139]
|
|
1062
|
+
if ____self__139_49 == nil then
|
|
1063
|
+
____self__139_49 = false
|
|
997
1064
|
end
|
|
998
|
-
return
|
|
1065
|
+
return ____self__139_49
|
|
999
1066
|
end,
|
|
1000
1067
|
set = function(self, turnsIntoGhost)
|
|
1001
|
-
if not turnsIntoGhost and self[
|
|
1068
|
+
if not turnsIntoGhost and self[139] then
|
|
1002
1069
|
self.object:decrementGhostCounter()
|
|
1003
|
-
self[
|
|
1004
|
-
elseif turnsIntoGhost and not self[
|
|
1070
|
+
self[139] = nil
|
|
1071
|
+
elseif turnsIntoGhost and not self[139] then
|
|
1005
1072
|
self.object:incrementGhostCounter()
|
|
1006
|
-
self[
|
|
1073
|
+
self[139] = true
|
|
1007
1074
|
end
|
|
1008
1075
|
end
|
|
1009
1076
|
},
|
|
@@ -1014,25 +1081,25 @@ __TS__SetDescriptor(
|
|
|
1014
1081
|
"stuns",
|
|
1015
1082
|
{
|
|
1016
1083
|
get = function(self)
|
|
1017
|
-
local
|
|
1018
|
-
if
|
|
1019
|
-
|
|
1084
|
+
local ____self__140_50 = self[140]
|
|
1085
|
+
if ____self__140_50 == nil then
|
|
1086
|
+
____self__140_50 = false
|
|
1020
1087
|
end
|
|
1021
|
-
return
|
|
1088
|
+
return ____self__140_50
|
|
1022
1089
|
end,
|
|
1023
1090
|
set = function(self, stuns)
|
|
1024
|
-
if not stuns and self[
|
|
1025
|
-
if self[
|
|
1091
|
+
if not stuns and self[140] then
|
|
1092
|
+
if self[141] then
|
|
1026
1093
|
self.object:decrementForceStunCounter()
|
|
1027
1094
|
end
|
|
1028
1095
|
self.object:decrementStunCounter()
|
|
1029
|
-
self[
|
|
1030
|
-
elseif stuns and not self[
|
|
1031
|
-
if self[
|
|
1096
|
+
self[140] = nil
|
|
1097
|
+
elseif stuns and not self[140] then
|
|
1098
|
+
if self[141] then
|
|
1032
1099
|
self.object:incrementForceStunCounter()
|
|
1033
1100
|
end
|
|
1034
1101
|
self.object:incrementStunCounter()
|
|
1035
|
-
self[
|
|
1102
|
+
self[140] = true
|
|
1036
1103
|
end
|
|
1037
1104
|
end
|
|
1038
1105
|
},
|
|
@@ -1043,23 +1110,23 @@ __TS__SetDescriptor(
|
|
|
1043
1110
|
"ignoresStunImmunity",
|
|
1044
1111
|
{
|
|
1045
1112
|
get = function(self)
|
|
1046
|
-
local
|
|
1047
|
-
if
|
|
1048
|
-
|
|
1113
|
+
local ____self__141_51 = self[141]
|
|
1114
|
+
if ____self__141_51 == nil then
|
|
1115
|
+
____self__141_51 = false
|
|
1049
1116
|
end
|
|
1050
|
-
return
|
|
1117
|
+
return ____self__141_51
|
|
1051
1118
|
end,
|
|
1052
1119
|
set = function(self, ignoresStunImmunity)
|
|
1053
|
-
if not ignoresStunImmunity and self[
|
|
1054
|
-
if self[
|
|
1120
|
+
if not ignoresStunImmunity and self[141] then
|
|
1121
|
+
if self[140] then
|
|
1055
1122
|
self.object:decrementForceStunCounter()
|
|
1056
1123
|
end
|
|
1057
|
-
self[
|
|
1058
|
-
elseif ignoresStunImmunity and not self[
|
|
1059
|
-
if self[
|
|
1124
|
+
self[141] = nil
|
|
1125
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1126
|
+
if self[140] then
|
|
1060
1127
|
self.object:incrementForceStunCounter()
|
|
1061
1128
|
end
|
|
1062
|
-
self[
|
|
1129
|
+
self[141] = true
|
|
1063
1130
|
end
|
|
1064
1131
|
end
|
|
1065
1132
|
},
|
|
@@ -1070,19 +1137,19 @@ __TS__SetDescriptor(
|
|
|
1070
1137
|
"disablesAutoAttack",
|
|
1071
1138
|
{
|
|
1072
1139
|
get = function(self)
|
|
1073
|
-
local
|
|
1074
|
-
if
|
|
1075
|
-
|
|
1140
|
+
local ____self__142_52 = self[142]
|
|
1141
|
+
if ____self__142_52 == nil then
|
|
1142
|
+
____self__142_52 = false
|
|
1076
1143
|
end
|
|
1077
|
-
return
|
|
1144
|
+
return ____self__142_52
|
|
1078
1145
|
end,
|
|
1079
1146
|
set = function(self, disablesAutoAttack)
|
|
1080
|
-
if not disablesAutoAttack and self[
|
|
1147
|
+
if not disablesAutoAttack and self[142] then
|
|
1081
1148
|
self.object:decrementDisableAutoAttackCounter()
|
|
1082
|
-
self[
|
|
1083
|
-
elseif disablesAutoAttack and not self[
|
|
1149
|
+
self[142] = nil
|
|
1150
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1084
1151
|
self.object:incrementDisableAutoAttackCounter()
|
|
1085
|
-
self[
|
|
1152
|
+
self[142] = true
|
|
1086
1153
|
end
|
|
1087
1154
|
end
|
|
1088
1155
|
},
|
|
@@ -1093,19 +1160,19 @@ __TS__SetDescriptor(
|
|
|
1093
1160
|
"providesInvulnerability",
|
|
1094
1161
|
{
|
|
1095
1162
|
get = function(self)
|
|
1096
|
-
local
|
|
1097
|
-
if
|
|
1098
|
-
|
|
1163
|
+
local ____self__143_53 = self[143]
|
|
1164
|
+
if ____self__143_53 == nil then
|
|
1165
|
+
____self__143_53 = false
|
|
1099
1166
|
end
|
|
1100
|
-
return
|
|
1167
|
+
return ____self__143_53
|
|
1101
1168
|
end,
|
|
1102
1169
|
set = function(self, providesInvulnerability)
|
|
1103
|
-
if not providesInvulnerability and self[
|
|
1170
|
+
if not providesInvulnerability and self[143] then
|
|
1104
1171
|
self.object:decrementInvulnerabilityCounter()
|
|
1105
|
-
self[
|
|
1106
|
-
elseif providesInvulnerability and not self[
|
|
1172
|
+
self[143] = nil
|
|
1173
|
+
elseif providesInvulnerability and not self[143] then
|
|
1107
1174
|
self.object:incrementInvulnerabilityCounter()
|
|
1108
|
-
self[
|
|
1175
|
+
self[143] = true
|
|
1109
1176
|
end
|
|
1110
1177
|
end
|
|
1111
1178
|
},
|
|
@@ -1116,17 +1183,17 @@ __TS__SetDescriptor(
|
|
|
1116
1183
|
"killsOnExpiration",
|
|
1117
1184
|
{
|
|
1118
1185
|
get = function(self)
|
|
1119
|
-
local
|
|
1120
|
-
if
|
|
1121
|
-
|
|
1186
|
+
local ____self__144_54 = self[144]
|
|
1187
|
+
if ____self__144_54 == nil then
|
|
1188
|
+
____self__144_54 = false
|
|
1122
1189
|
end
|
|
1123
|
-
return
|
|
1190
|
+
return ____self__144_54
|
|
1124
1191
|
end,
|
|
1125
1192
|
set = function(self, killsOnExpiration)
|
|
1126
|
-
if not killsOnExpiration and self[
|
|
1127
|
-
self[
|
|
1128
|
-
elseif killsOnExpiration and not self[
|
|
1129
|
-
self[
|
|
1193
|
+
if not killsOnExpiration and self[144] then
|
|
1194
|
+
self[144] = nil
|
|
1195
|
+
elseif killsOnExpiration and not self[144] then
|
|
1196
|
+
self[144] = true
|
|
1130
1197
|
end
|
|
1131
1198
|
end
|
|
1132
1199
|
},
|
|
@@ -1137,17 +1204,17 @@ __TS__SetDescriptor(
|
|
|
1137
1204
|
"explodesOnExpiration",
|
|
1138
1205
|
{
|
|
1139
1206
|
get = function(self)
|
|
1140
|
-
local
|
|
1141
|
-
if
|
|
1142
|
-
|
|
1207
|
+
local ____self__145_55 = self[145]
|
|
1208
|
+
if ____self__145_55 == nil then
|
|
1209
|
+
____self__145_55 = false
|
|
1143
1210
|
end
|
|
1144
|
-
return
|
|
1211
|
+
return ____self__145_55
|
|
1145
1212
|
end,
|
|
1146
1213
|
set = function(self, killsOnExpiration)
|
|
1147
|
-
if not killsOnExpiration and self[
|
|
1148
|
-
self[
|
|
1149
|
-
elseif killsOnExpiration and not self[
|
|
1150
|
-
self[
|
|
1214
|
+
if not killsOnExpiration and self[145] then
|
|
1215
|
+
self[145] = nil
|
|
1216
|
+
elseif killsOnExpiration and not self[145] then
|
|
1217
|
+
self[145] = true
|
|
1151
1218
|
end
|
|
1152
1219
|
end
|
|
1153
1220
|
},
|
|
@@ -1272,9 +1339,23 @@ __TS__SetDescriptor(
|
|
|
1272
1339
|
__TS__SetDescriptor(
|
|
1273
1340
|
Buff.prototype,
|
|
1274
1341
|
"duration",
|
|
1275
|
-
{
|
|
1276
|
-
|
|
1277
|
-
|
|
1342
|
+
{
|
|
1343
|
+
get = function(self)
|
|
1344
|
+
return self[103]
|
|
1345
|
+
end,
|
|
1346
|
+
set = function(self, duration)
|
|
1347
|
+
if duration <= 0 then
|
|
1348
|
+
local timer = self._timer
|
|
1349
|
+
if timer ~= nil then
|
|
1350
|
+
timer:destroy()
|
|
1351
|
+
self._timer = nil
|
|
1352
|
+
end
|
|
1353
|
+
self[103] = 0
|
|
1354
|
+
else
|
|
1355
|
+
self.remainingDuration = self.remainingDuration + (duration - self[103])
|
|
1356
|
+
end
|
|
1357
|
+
end
|
|
1358
|
+
},
|
|
1278
1359
|
true
|
|
1279
1360
|
)
|
|
1280
1361
|
__TS__SetDescriptor(
|
|
@@ -1282,13 +1363,13 @@ __TS__SetDescriptor(
|
|
|
1282
1363
|
"remainingDuration",
|
|
1283
1364
|
{
|
|
1284
1365
|
get = function(self)
|
|
1285
|
-
local
|
|
1286
|
-
return
|
|
1366
|
+
local ____opt_56 = self._timer
|
|
1367
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1287
1368
|
end,
|
|
1288
1369
|
set = function(self, remainingDuration)
|
|
1289
|
-
local
|
|
1290
|
-
local
|
|
1291
|
-
local remainingDurationDelta =
|
|
1370
|
+
local ____remainingDuration_60 = remainingDuration
|
|
1371
|
+
local ____opt_58 = self._timer
|
|
1372
|
+
local remainingDurationDelta = ____remainingDuration_60 - (____opt_58 and ____opt_58.remaining or 0)
|
|
1292
1373
|
if remainingDurationDelta ~= 0 then
|
|
1293
1374
|
self[103] = self[103] + remainingDurationDelta
|
|
1294
1375
|
if remainingDuration <= 0 then
|
|
@@ -1303,7 +1384,7 @@ __TS__SetDescriptor(
|
|
|
1303
1384
|
remainingDuration,
|
|
1304
1385
|
self._spellStealPriority,
|
|
1305
1386
|
self._learnLevelMinimum,
|
|
1306
|
-
self[
|
|
1387
|
+
self[146]
|
|
1307
1388
|
) then
|
|
1308
1389
|
local timer = self._timer
|
|
1309
1390
|
if timer == nil then
|
|
@@ -1318,15 +1399,80 @@ __TS__SetDescriptor(
|
|
|
1318
1399
|
},
|
|
1319
1400
|
true
|
|
1320
1401
|
)
|
|
1402
|
+
__TS__SetDescriptor(
|
|
1403
|
+
Buff.prototype,
|
|
1404
|
+
"absorbedDamageFactor",
|
|
1405
|
+
{
|
|
1406
|
+
get = function(self)
|
|
1407
|
+
return self[135] or 1
|
|
1408
|
+
end,
|
|
1409
|
+
set = function(self, absorbedDamageFactor)
|
|
1410
|
+
if absorbedDamageFactor == 1 then
|
|
1411
|
+
self[135] = nil
|
|
1412
|
+
else
|
|
1413
|
+
self[135] = absorbedDamageFactor
|
|
1414
|
+
end
|
|
1415
|
+
end
|
|
1416
|
+
},
|
|
1417
|
+
true
|
|
1418
|
+
)
|
|
1419
|
+
__TS__SetDescriptor(
|
|
1420
|
+
Buff.prototype,
|
|
1421
|
+
"maximumDamageAbsorbed",
|
|
1422
|
+
{
|
|
1423
|
+
get = function(self)
|
|
1424
|
+
return self[136] or 0
|
|
1425
|
+
end,
|
|
1426
|
+
set = function(self, maximumDamageAbsorbed)
|
|
1427
|
+
if maximumDamageAbsorbed == 0 then
|
|
1428
|
+
self[136] = nil
|
|
1429
|
+
else
|
|
1430
|
+
self[136] = maximumDamageAbsorbed
|
|
1431
|
+
end
|
|
1432
|
+
end
|
|
1433
|
+
},
|
|
1434
|
+
true
|
|
1435
|
+
)
|
|
1436
|
+
__TS__SetDescriptor(
|
|
1437
|
+
Buff.prototype,
|
|
1438
|
+
"damageAbsorbed",
|
|
1439
|
+
{get = function(self)
|
|
1440
|
+
return self[137] or 0
|
|
1441
|
+
end},
|
|
1442
|
+
true
|
|
1443
|
+
)
|
|
1444
|
+
__TS__SetDescriptor(
|
|
1445
|
+
Buff.prototype,
|
|
1446
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
1447
|
+
{
|
|
1448
|
+
get = function(self)
|
|
1449
|
+
local ____self__138_61 = self[138]
|
|
1450
|
+
if ____self__138_61 == nil then
|
|
1451
|
+
____self__138_61 = true
|
|
1452
|
+
end
|
|
1453
|
+
return ____self__138_61
|
|
1454
|
+
end,
|
|
1455
|
+
set = function(self, destroysOnMaximumDamageAbsorbed)
|
|
1456
|
+
local ____destroysOnMaximumDamageAbsorbed_62
|
|
1457
|
+
if destroysOnMaximumDamageAbsorbed then
|
|
1458
|
+
____destroysOnMaximumDamageAbsorbed_62 = nil
|
|
1459
|
+
else
|
|
1460
|
+
____destroysOnMaximumDamageAbsorbed_62 = false
|
|
1461
|
+
end
|
|
1462
|
+
self[138] = ____destroysOnMaximumDamageAbsorbed_62
|
|
1463
|
+
end
|
|
1464
|
+
},
|
|
1465
|
+
true
|
|
1466
|
+
)
|
|
1321
1467
|
__TS__SetDescriptor(
|
|
1322
1468
|
Buff.prototype,
|
|
1323
1469
|
"abilityCooldownFactor",
|
|
1324
1470
|
{
|
|
1325
1471
|
get = function(self)
|
|
1326
|
-
return self[
|
|
1472
|
+
return self[147] or 1
|
|
1327
1473
|
end,
|
|
1328
1474
|
set = function(self, abilityCooldownFactor)
|
|
1329
|
-
local previousAbilityCooldownModifier = self[
|
|
1475
|
+
local previousAbilityCooldownModifier = self[148]
|
|
1330
1476
|
if previousAbilityCooldownModifier then
|
|
1331
1477
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
1332
1478
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
@@ -1338,8 +1484,8 @@ __TS__SetDescriptor(
|
|
|
1338
1484
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
1339
1485
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1340
1486
|
end
|
|
1341
|
-
self[
|
|
1342
|
-
self[
|
|
1487
|
+
self[148] = modifier
|
|
1488
|
+
self[147] = abilityCooldownFactor
|
|
1343
1489
|
end
|
|
1344
1490
|
},
|
|
1345
1491
|
true
|
|
@@ -1347,35 +1493,40 @@ __TS__SetDescriptor(
|
|
|
1347
1493
|
Buff.createdEvent = buffCreatedEvent
|
|
1348
1494
|
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1349
1495
|
(function(self)
|
|
1350
|
-
local function destroyBuffIfNeeded(buff)
|
|
1351
|
-
|
|
1352
|
-
|
|
1496
|
+
local function destroyBuffIfNeeded(buff, isDispel, source)
|
|
1497
|
+
local currentHandle = getUnitAbility(buff[101].handle, buff.typeId)
|
|
1498
|
+
if currentHandle ~= buff.handle and buff[100] == 1 then
|
|
1499
|
+
if isDispel and currentHandle == nil and buff.unit.isAlive and buff.resistanceType == 1 and (buff._timer == nil or buff.remainingDuration > 0) then
|
|
1500
|
+
buff:dispel(source)
|
|
1501
|
+
else
|
|
1502
|
+
buff:destroy()
|
|
1503
|
+
end
|
|
1353
1504
|
end
|
|
1354
1505
|
end
|
|
1355
|
-
____exports.checkBuff = function(unit, buffTypeId)
|
|
1506
|
+
____exports.checkBuff = function(unit, buffTypeId, isDispel, source)
|
|
1356
1507
|
local buffByTypeId = buffByTypeIdByUnit[unit]
|
|
1357
1508
|
if buffByTypeId ~= nil then
|
|
1358
1509
|
local buff = buffByTypeId[buffTypeId]
|
|
1359
1510
|
if buff ~= nil then
|
|
1360
|
-
destroyBuffIfNeeded(buff)
|
|
1511
|
+
destroyBuffIfNeeded(buff, isDispel, source)
|
|
1361
1512
|
end
|
|
1362
1513
|
end
|
|
1363
1514
|
end
|
|
1364
|
-
____exports.checkBuffs = function(unit)
|
|
1365
|
-
____exports.Buff:forAll(unit, destroyBuffIfNeeded)
|
|
1515
|
+
____exports.checkBuffs = function(unit, isDispel, source)
|
|
1516
|
+
____exports.Buff:forAll(unit, destroyBuffIfNeeded, isDispel, source)
|
|
1366
1517
|
end
|
|
1367
1518
|
Unit.abilityChannelingStartEvent:addListener(
|
|
1368
1519
|
0,
|
|
1369
1520
|
function(caster)
|
|
1370
|
-
____exports.checkBuffs(caster)
|
|
1371
|
-
Timer:run(____exports.checkBuffs, caster)
|
|
1521
|
+
____exports.checkBuffs(caster, true, caster)
|
|
1522
|
+
Timer:run(____exports.checkBuffs, caster, true, caster)
|
|
1372
1523
|
end
|
|
1373
1524
|
)
|
|
1374
1525
|
Unit.abilityUnitTargetChannelingStartEvent:addListener(
|
|
1375
1526
|
0,
|
|
1376
1527
|
function(caster, ability, target)
|
|
1377
|
-
____exports.checkBuffs(target)
|
|
1378
|
-
Timer:run(____exports.checkBuffs, target)
|
|
1528
|
+
____exports.checkBuffs(target, true, caster)
|
|
1529
|
+
Timer:run(____exports.checkBuffs, target, true, caster)
|
|
1379
1530
|
end
|
|
1380
1531
|
)
|
|
1381
1532
|
Unit.abilityPointTargetChannelingStartEvent:addListener(
|
|
@@ -1386,17 +1537,40 @@ Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
|
1386
1537
|
y,
|
|
1387
1538
|
ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1388
1539
|
)
|
|
1389
|
-
forEach(units, ____exports.checkBuffs)
|
|
1390
|
-
Timer:run(
|
|
1540
|
+
forEach(units, ____exports.checkBuffs, true, caster)
|
|
1541
|
+
Timer:run(
|
|
1542
|
+
forEach,
|
|
1543
|
+
units,
|
|
1544
|
+
____exports.checkBuffs,
|
|
1545
|
+
true,
|
|
1546
|
+
caster
|
|
1547
|
+
)
|
|
1548
|
+
end
|
|
1549
|
+
)
|
|
1550
|
+
Unit.abilityNoTargetChannelingStartEvent:addListener(
|
|
1551
|
+
0,
|
|
1552
|
+
function(caster, ability)
|
|
1553
|
+
local radius = ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1554
|
+
if radius > 0 then
|
|
1555
|
+
local units = Unit:getInCollisionRange(caster.x, caster.y, radius)
|
|
1556
|
+
forEach(units, ____exports.checkBuffs, true, caster)
|
|
1557
|
+
Timer:run(
|
|
1558
|
+
forEach,
|
|
1559
|
+
units,
|
|
1560
|
+
____exports.checkBuffs,
|
|
1561
|
+
true,
|
|
1562
|
+
caster
|
|
1563
|
+
)
|
|
1564
|
+
end
|
|
1391
1565
|
end
|
|
1392
1566
|
)
|
|
1393
1567
|
Unit.onDamage:addListener(
|
|
1394
1568
|
0,
|
|
1395
1569
|
function(source, target)
|
|
1396
1570
|
if source ~= nil then
|
|
1397
|
-
____exports.checkBuffs
|
|
1571
|
+
Timer:run(____exports.checkBuffs, source, false)
|
|
1398
1572
|
end
|
|
1399
|
-
____exports.checkBuffs
|
|
1573
|
+
Timer:run(____exports.checkBuffs, target, false)
|
|
1400
1574
|
end
|
|
1401
1575
|
)
|
|
1402
1576
|
buffCreatedEvent:addListener(function(buff)
|