warscript 0.0.1-dev.d6e2c10 → 0.0.1-dev.d77b529
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/behavior.d.ts +4 -2
- package/engine/behavior.lua +69 -11
- 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 +64 -25
- package/engine/buff.lua +345 -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/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.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/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +14 -0
- package/engine/internal/unit/bonus.lua +102 -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/fly-height.lua +3 -3
- package/engine/internal/unit/ignore-events-items.lua +10 -1
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- 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/scale.lua +3 -3
- 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 +25 -18
- package/engine/internal/unit.d.ts +3 -18
- package/engine/internal/unit.lua +97 -195
- package/engine/local-client.d.ts +27 -1
- package/engine/local-client.lua +298 -58
- 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/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -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/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/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/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/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/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/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-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 +18 -3
- package/engine/object-data/entry/ability-type.lua +222 -5
- 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 +16 -2
- package/engine/object-data/entry/destructible-type.lua +91 -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/unit.d.ts +7 -4
- package/engine/object-field/unit.lua +4 -0
- package/engine/object-field.d.ts +3 -1
- package/engine/object-field.lua +177 -119
- 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/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/standard/fields/unit.d.ts +11 -5
- package/engine/standard/fields/unit.lua +13 -4
- package/engine/unit.d.ts +8 -1
- package/engine/unit.lua +8 -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,9 +103,11 @@ 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,
|
|
110
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
106
111
|
evasionProbability = true,
|
|
107
112
|
missProbability = true,
|
|
108
113
|
damageFactor = true,
|
|
@@ -122,6 +127,9 @@ local buffParametersKeys = {
|
|
|
122
127
|
maximumAutoAttackCount = true,
|
|
123
128
|
maximumDamageDealtEventCount = true,
|
|
124
129
|
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
125
133
|
uniqueGroup = true,
|
|
126
134
|
damageOnExpiration = true,
|
|
127
135
|
healingOnExpiration = true,
|
|
@@ -178,6 +186,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
178
186
|
end
|
|
179
187
|
end
|
|
180
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
181
190
|
"turnsIntoGhost",
|
|
182
191
|
"stuns",
|
|
183
192
|
"ignoresStunImmunity",
|
|
@@ -190,8 +199,11 @@ local buffNumberParameters = {
|
|
|
190
199
|
"durationIncreaseOnAutoAttack",
|
|
191
200
|
"attackSpeedIncreaseFactor",
|
|
192
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
193
203
|
"evasionProbability",
|
|
194
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
195
207
|
"damageFactor",
|
|
196
208
|
"receivedDamageFactor",
|
|
197
209
|
"maximumAutoAttackCount",
|
|
@@ -205,6 +217,8 @@ local buffNumberParameters = {
|
|
|
205
217
|
"healingOverDuration",
|
|
206
218
|
"damageOnExpiration",
|
|
207
219
|
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
208
222
|
"abilityCooldownFactor"
|
|
209
223
|
}
|
|
210
224
|
local unsuccessfulApplicationMarker = {}
|
|
@@ -240,6 +254,10 @@ local function destroyBuff(buff)
|
|
|
240
254
|
buff:destroy()
|
|
241
255
|
end
|
|
242
256
|
local function expireBuff(buff)
|
|
257
|
+
if buff.isDestroyed or buff[100] ~= 1 then
|
|
258
|
+
return
|
|
259
|
+
end
|
|
260
|
+
buff[100] = 2
|
|
243
261
|
local remainingDamageOverDuration = buff[113] or 0
|
|
244
262
|
local remainingHealingOverDuration = buff[113] or 0
|
|
245
263
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
@@ -383,14 +401,15 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
383
401
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
384
402
|
if missProbability ~= nil then
|
|
385
403
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
386
|
-
self[
|
|
404
|
+
self[146] = missProbability
|
|
387
405
|
end
|
|
388
406
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
389
407
|
if buffByTypeId == nil then
|
|
390
408
|
buffByTypeId = {}
|
|
391
409
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
392
410
|
end
|
|
393
|
-
|
|
411
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
412
|
+
local ____opt_15 = self.previousBuff
|
|
394
413
|
if ____opt_15 ~= nil then
|
|
395
414
|
____opt_15:destroy()
|
|
396
415
|
end
|
|
@@ -466,24 +485,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
466
485
|
abilityTypeIds = {}
|
|
467
486
|
self._abilityTypeIds = abilityTypeIds
|
|
468
487
|
end
|
|
469
|
-
for
|
|
488
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
489
|
+
local abilityParameters = checkNotNull(parametersAbilityTypeIds[abilityTypeId])
|
|
470
490
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
471
491
|
if addedAbility ~= nil then
|
|
472
492
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
473
493
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
483
|
-
)
|
|
484
|
-
end
|
|
494
|
+
if abilityParameters.isButtonVisible == false then
|
|
495
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
496
|
+
end
|
|
497
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
498
|
+
field[1]:setValue(
|
|
499
|
+
addedAbility,
|
|
500
|
+
resolveNumberValue(ability, level, field[2])
|
|
501
|
+
)
|
|
485
502
|
end
|
|
486
|
-
abilityTypeIds[
|
|
503
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
487
504
|
end
|
|
488
505
|
end
|
|
489
506
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -495,18 +512,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
495
512
|
self._behaviors = behaviors
|
|
496
513
|
end
|
|
497
514
|
end
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
if
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
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
|
|
505
524
|
end
|
|
506
525
|
end
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
526
|
+
if (next(additionalParameters)) ~= nil then
|
|
527
|
+
self.parameters = additionalParameters
|
|
528
|
+
end
|
|
510
529
|
end
|
|
511
530
|
end
|
|
512
531
|
if duration ~= nil and duration > 0 then
|
|
@@ -520,7 +539,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
520
539
|
end
|
|
521
540
|
function Buff.prototype.onAbilityGained(self, ability)
|
|
522
541
|
if __TS__InstanceOf(ability, UnitAbility) then
|
|
523
|
-
local abilityCooldownModifier = self[
|
|
542
|
+
local abilityCooldownModifier = self[148]
|
|
524
543
|
if abilityCooldownModifier then
|
|
525
544
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
526
545
|
end
|
|
@@ -528,24 +547,38 @@ function Buff.prototype.onAbilityGained(self, ability)
|
|
|
528
547
|
end
|
|
529
548
|
function Buff.prototype.onAbilityLost(self, ability)
|
|
530
549
|
if __TS__InstanceOf(ability, UnitAbility) then
|
|
531
|
-
local abilityCooldownModifier = self[
|
|
550
|
+
local abilityCooldownModifier = self[148]
|
|
532
551
|
if abilityCooldownModifier then
|
|
533
552
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
534
553
|
end
|
|
535
554
|
end
|
|
536
555
|
end
|
|
537
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)
|
|
538
575
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
539
|
-
Effect:flash(
|
|
576
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
540
577
|
else
|
|
541
578
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
542
579
|
local ____Effect_40 = Effect
|
|
543
580
|
local ____Effect_flash_41 = Effect.flash
|
|
544
|
-
local ____array_39 = __TS__SparseArrayNew(
|
|
545
|
-
self[105],
|
|
546
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
547
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
548
|
-
)
|
|
581
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
549
582
|
local ____isWidgetProvided_38
|
|
550
583
|
if isWidgetProvided then
|
|
551
584
|
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
@@ -559,26 +592,22 @@ function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrPa
|
|
|
559
592
|
)
|
|
560
593
|
end
|
|
561
594
|
end
|
|
562
|
-
function Buff.prototype.
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
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
|
|
576
610
|
end
|
|
577
|
-
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
578
|
-
____Effect_flash_45(
|
|
579
|
-
____Effect_44,
|
|
580
|
-
__TS__SparseArraySpread(____array_43)
|
|
581
|
-
)
|
|
582
611
|
end
|
|
583
612
|
function Buff.prototype.onCreate(self)
|
|
584
613
|
end
|
|
@@ -608,29 +637,29 @@ function Buff.prototype.onDestroy(self)
|
|
|
608
637
|
behavior:destroy()
|
|
609
638
|
end
|
|
610
639
|
end
|
|
611
|
-
local previousAbilityCooldownModifier = self[
|
|
640
|
+
local previousAbilityCooldownModifier = self[148]
|
|
612
641
|
if previousAbilityCooldownModifier then
|
|
613
642
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
614
643
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
615
644
|
end
|
|
616
645
|
end
|
|
617
|
-
if self[
|
|
646
|
+
if self[143] then
|
|
618
647
|
unit:decrementInvulnerabilityCounter()
|
|
619
648
|
end
|
|
620
|
-
if self[
|
|
649
|
+
if self[142] then
|
|
621
650
|
unit:decrementDisableAutoAttackCounter()
|
|
622
651
|
end
|
|
623
|
-
if self[
|
|
624
|
-
if self[
|
|
652
|
+
if self[140] then
|
|
653
|
+
if self[141] then
|
|
625
654
|
unit:decrementForceStunCounter()
|
|
626
655
|
end
|
|
627
656
|
unit:decrementStunCounter()
|
|
628
657
|
end
|
|
629
|
-
if self[
|
|
658
|
+
if self[139] then
|
|
630
659
|
unit:decrementGhostCounter()
|
|
631
660
|
end
|
|
632
661
|
if self._abilityTypeIds ~= nil then
|
|
633
|
-
for abilityTypeId in
|
|
662
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
634
663
|
unit:removeAbility(abilityTypeId)
|
|
635
664
|
end
|
|
636
665
|
end
|
|
@@ -663,13 +692,15 @@ function Buff.apply(self, ...)
|
|
|
663
692
|
end
|
|
664
693
|
end
|
|
665
694
|
function Buff.getByTypeId(self, unit, typeId)
|
|
666
|
-
local
|
|
667
|
-
local buff =
|
|
695
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
696
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
668
697
|
if __TS__InstanceOf(buff, self) then
|
|
669
698
|
return buff
|
|
670
699
|
end
|
|
671
700
|
return nil
|
|
672
701
|
end
|
|
702
|
+
function Buff.prototype.onDispel(self, source)
|
|
703
|
+
end
|
|
673
704
|
function Buff.prototype.onExpiration(self)
|
|
674
705
|
local unit = self.unit
|
|
675
706
|
if self[120] ~= nil then
|
|
@@ -678,9 +709,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
678
709
|
if self[121] ~= nil then
|
|
679
710
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
680
711
|
end
|
|
681
|
-
if self[
|
|
712
|
+
if self[145] then
|
|
682
713
|
unit:explode()
|
|
683
|
-
elseif self[
|
|
714
|
+
elseif self[144] then
|
|
684
715
|
unit:kill()
|
|
685
716
|
end
|
|
686
717
|
end
|
|
@@ -735,6 +766,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
735
766
|
end
|
|
736
767
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
737
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
|
|
738
781
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
739
782
|
self[133] = damageReceivedEventCount
|
|
740
783
|
if damageReceivedEventCount == self[134] then
|
|
@@ -822,8 +865,8 @@ __TS__SetDescriptor(
|
|
|
822
865
|
return
|
|
823
866
|
end
|
|
824
867
|
self[112] = damageInterval
|
|
825
|
-
local
|
|
826
|
-
local elapsed =
|
|
868
|
+
local ____opt_45 = self._timer
|
|
869
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
827
870
|
local timer = self[114]
|
|
828
871
|
if timer == nil then
|
|
829
872
|
timer = Timer:create()
|
|
@@ -902,8 +945,8 @@ __TS__SetDescriptor(
|
|
|
902
945
|
return
|
|
903
946
|
end
|
|
904
947
|
self[117] = healingInterval
|
|
905
|
-
local
|
|
906
|
-
local elapsed =
|
|
948
|
+
local ____opt_47 = self._timer
|
|
949
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
907
950
|
local timer = self[119]
|
|
908
951
|
if timer == nil then
|
|
909
952
|
timer = Timer:create()
|
|
@@ -984,24 +1027,50 @@ __TS__SetDescriptor(
|
|
|
984
1027
|
},
|
|
985
1028
|
true
|
|
986
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
|
+
)
|
|
987
1056
|
__TS__SetDescriptor(
|
|
988
1057
|
Buff.prototype,
|
|
989
1058
|
"turnsIntoGhost",
|
|
990
1059
|
{
|
|
991
1060
|
get = function(self)
|
|
992
|
-
local
|
|
993
|
-
if
|
|
994
|
-
|
|
1061
|
+
local ____self__139_49 = self[139]
|
|
1062
|
+
if ____self__139_49 == nil then
|
|
1063
|
+
____self__139_49 = false
|
|
995
1064
|
end
|
|
996
|
-
return
|
|
1065
|
+
return ____self__139_49
|
|
997
1066
|
end,
|
|
998
1067
|
set = function(self, turnsIntoGhost)
|
|
999
|
-
if not turnsIntoGhost and self[
|
|
1068
|
+
if not turnsIntoGhost and self[139] then
|
|
1000
1069
|
self.object:decrementGhostCounter()
|
|
1001
|
-
self[
|
|
1002
|
-
elseif turnsIntoGhost and not self[
|
|
1070
|
+
self[139] = nil
|
|
1071
|
+
elseif turnsIntoGhost and not self[139] then
|
|
1003
1072
|
self.object:incrementGhostCounter()
|
|
1004
|
-
self[
|
|
1073
|
+
self[139] = true
|
|
1005
1074
|
end
|
|
1006
1075
|
end
|
|
1007
1076
|
},
|
|
@@ -1012,25 +1081,25 @@ __TS__SetDescriptor(
|
|
|
1012
1081
|
"stuns",
|
|
1013
1082
|
{
|
|
1014
1083
|
get = function(self)
|
|
1015
|
-
local
|
|
1016
|
-
if
|
|
1017
|
-
|
|
1084
|
+
local ____self__140_50 = self[140]
|
|
1085
|
+
if ____self__140_50 == nil then
|
|
1086
|
+
____self__140_50 = false
|
|
1018
1087
|
end
|
|
1019
|
-
return
|
|
1088
|
+
return ____self__140_50
|
|
1020
1089
|
end,
|
|
1021
1090
|
set = function(self, stuns)
|
|
1022
|
-
if not stuns and self[
|
|
1023
|
-
if self[
|
|
1091
|
+
if not stuns and self[140] then
|
|
1092
|
+
if self[141] then
|
|
1024
1093
|
self.object:decrementForceStunCounter()
|
|
1025
1094
|
end
|
|
1026
1095
|
self.object:decrementStunCounter()
|
|
1027
|
-
self[
|
|
1028
|
-
elseif stuns and not self[
|
|
1029
|
-
if self[
|
|
1096
|
+
self[140] = nil
|
|
1097
|
+
elseif stuns and not self[140] then
|
|
1098
|
+
if self[141] then
|
|
1030
1099
|
self.object:incrementForceStunCounter()
|
|
1031
1100
|
end
|
|
1032
1101
|
self.object:incrementStunCounter()
|
|
1033
|
-
self[
|
|
1102
|
+
self[140] = true
|
|
1034
1103
|
end
|
|
1035
1104
|
end
|
|
1036
1105
|
},
|
|
@@ -1041,23 +1110,23 @@ __TS__SetDescriptor(
|
|
|
1041
1110
|
"ignoresStunImmunity",
|
|
1042
1111
|
{
|
|
1043
1112
|
get = function(self)
|
|
1044
|
-
local
|
|
1045
|
-
if
|
|
1046
|
-
|
|
1113
|
+
local ____self__141_51 = self[141]
|
|
1114
|
+
if ____self__141_51 == nil then
|
|
1115
|
+
____self__141_51 = false
|
|
1047
1116
|
end
|
|
1048
|
-
return
|
|
1117
|
+
return ____self__141_51
|
|
1049
1118
|
end,
|
|
1050
1119
|
set = function(self, ignoresStunImmunity)
|
|
1051
|
-
if not ignoresStunImmunity and self[
|
|
1052
|
-
if self[
|
|
1120
|
+
if not ignoresStunImmunity and self[141] then
|
|
1121
|
+
if self[140] then
|
|
1053
1122
|
self.object:decrementForceStunCounter()
|
|
1054
1123
|
end
|
|
1055
|
-
self[
|
|
1056
|
-
elseif ignoresStunImmunity and not self[
|
|
1057
|
-
if self[
|
|
1124
|
+
self[141] = nil
|
|
1125
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1126
|
+
if self[140] then
|
|
1058
1127
|
self.object:incrementForceStunCounter()
|
|
1059
1128
|
end
|
|
1060
|
-
self[
|
|
1129
|
+
self[141] = true
|
|
1061
1130
|
end
|
|
1062
1131
|
end
|
|
1063
1132
|
},
|
|
@@ -1068,19 +1137,19 @@ __TS__SetDescriptor(
|
|
|
1068
1137
|
"disablesAutoAttack",
|
|
1069
1138
|
{
|
|
1070
1139
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1140
|
+
local ____self__142_52 = self[142]
|
|
1141
|
+
if ____self__142_52 == nil then
|
|
1142
|
+
____self__142_52 = false
|
|
1074
1143
|
end
|
|
1075
|
-
return
|
|
1144
|
+
return ____self__142_52
|
|
1076
1145
|
end,
|
|
1077
1146
|
set = function(self, disablesAutoAttack)
|
|
1078
|
-
if not disablesAutoAttack and self[
|
|
1147
|
+
if not disablesAutoAttack and self[142] then
|
|
1079
1148
|
self.object:decrementDisableAutoAttackCounter()
|
|
1080
|
-
self[
|
|
1081
|
-
elseif disablesAutoAttack and not self[
|
|
1149
|
+
self[142] = nil
|
|
1150
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1082
1151
|
self.object:incrementDisableAutoAttackCounter()
|
|
1083
|
-
self[
|
|
1152
|
+
self[142] = true
|
|
1084
1153
|
end
|
|
1085
1154
|
end
|
|
1086
1155
|
},
|
|
@@ -1091,19 +1160,19 @@ __TS__SetDescriptor(
|
|
|
1091
1160
|
"providesInvulnerability",
|
|
1092
1161
|
{
|
|
1093
1162
|
get = function(self)
|
|
1094
|
-
local
|
|
1095
|
-
if
|
|
1096
|
-
|
|
1163
|
+
local ____self__143_53 = self[143]
|
|
1164
|
+
if ____self__143_53 == nil then
|
|
1165
|
+
____self__143_53 = false
|
|
1097
1166
|
end
|
|
1098
|
-
return
|
|
1167
|
+
return ____self__143_53
|
|
1099
1168
|
end,
|
|
1100
1169
|
set = function(self, providesInvulnerability)
|
|
1101
|
-
if not providesInvulnerability and self[
|
|
1170
|
+
if not providesInvulnerability and self[143] then
|
|
1102
1171
|
self.object:decrementInvulnerabilityCounter()
|
|
1103
|
-
self[
|
|
1104
|
-
elseif providesInvulnerability and not self[
|
|
1172
|
+
self[143] = nil
|
|
1173
|
+
elseif providesInvulnerability and not self[143] then
|
|
1105
1174
|
self.object:incrementInvulnerabilityCounter()
|
|
1106
|
-
self[
|
|
1175
|
+
self[143] = true
|
|
1107
1176
|
end
|
|
1108
1177
|
end
|
|
1109
1178
|
},
|
|
@@ -1114,17 +1183,17 @@ __TS__SetDescriptor(
|
|
|
1114
1183
|
"killsOnExpiration",
|
|
1115
1184
|
{
|
|
1116
1185
|
get = function(self)
|
|
1117
|
-
local
|
|
1118
|
-
if
|
|
1119
|
-
|
|
1186
|
+
local ____self__144_54 = self[144]
|
|
1187
|
+
if ____self__144_54 == nil then
|
|
1188
|
+
____self__144_54 = false
|
|
1120
1189
|
end
|
|
1121
|
-
return
|
|
1190
|
+
return ____self__144_54
|
|
1122
1191
|
end,
|
|
1123
1192
|
set = function(self, killsOnExpiration)
|
|
1124
|
-
if not killsOnExpiration and self[
|
|
1125
|
-
self[
|
|
1126
|
-
elseif killsOnExpiration and not self[
|
|
1127
|
-
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
|
|
1128
1197
|
end
|
|
1129
1198
|
end
|
|
1130
1199
|
},
|
|
@@ -1135,17 +1204,17 @@ __TS__SetDescriptor(
|
|
|
1135
1204
|
"explodesOnExpiration",
|
|
1136
1205
|
{
|
|
1137
1206
|
get = function(self)
|
|
1138
|
-
local
|
|
1139
|
-
if
|
|
1140
|
-
|
|
1207
|
+
local ____self__145_55 = self[145]
|
|
1208
|
+
if ____self__145_55 == nil then
|
|
1209
|
+
____self__145_55 = false
|
|
1141
1210
|
end
|
|
1142
|
-
return
|
|
1211
|
+
return ____self__145_55
|
|
1143
1212
|
end,
|
|
1144
1213
|
set = function(self, killsOnExpiration)
|
|
1145
|
-
if not killsOnExpiration and self[
|
|
1146
|
-
self[
|
|
1147
|
-
elseif killsOnExpiration and not self[
|
|
1148
|
-
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
|
|
1149
1218
|
end
|
|
1150
1219
|
end
|
|
1151
1220
|
},
|
|
@@ -1254,12 +1323,39 @@ __TS__SetDescriptor(
|
|
|
1254
1323
|
},
|
|
1255
1324
|
true
|
|
1256
1325
|
)
|
|
1326
|
+
__TS__SetDescriptor(
|
|
1327
|
+
Buff.prototype,
|
|
1328
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1329
|
+
{
|
|
1330
|
+
get = function(self)
|
|
1331
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1332
|
+
end,
|
|
1333
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1334
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1335
|
+
end
|
|
1336
|
+
},
|
|
1337
|
+
true
|
|
1338
|
+
)
|
|
1257
1339
|
__TS__SetDescriptor(
|
|
1258
1340
|
Buff.prototype,
|
|
1259
1341
|
"duration",
|
|
1260
|
-
{
|
|
1261
|
-
|
|
1262
|
-
|
|
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
|
+
},
|
|
1263
1359
|
true
|
|
1264
1360
|
)
|
|
1265
1361
|
__TS__SetDescriptor(
|
|
@@ -1267,13 +1363,13 @@ __TS__SetDescriptor(
|
|
|
1267
1363
|
"remainingDuration",
|
|
1268
1364
|
{
|
|
1269
1365
|
get = function(self)
|
|
1270
|
-
local
|
|
1271
|
-
return
|
|
1366
|
+
local ____opt_56 = self._timer
|
|
1367
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1272
1368
|
end,
|
|
1273
1369
|
set = function(self, remainingDuration)
|
|
1274
|
-
local
|
|
1275
|
-
local
|
|
1276
|
-
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)
|
|
1277
1373
|
if remainingDurationDelta ~= 0 then
|
|
1278
1374
|
self[103] = self[103] + remainingDurationDelta
|
|
1279
1375
|
if remainingDuration <= 0 then
|
|
@@ -1288,7 +1384,7 @@ __TS__SetDescriptor(
|
|
|
1288
1384
|
remainingDuration,
|
|
1289
1385
|
self._spellStealPriority,
|
|
1290
1386
|
self._learnLevelMinimum,
|
|
1291
|
-
self[
|
|
1387
|
+
self[146]
|
|
1292
1388
|
) then
|
|
1293
1389
|
local timer = self._timer
|
|
1294
1390
|
if timer == nil then
|
|
@@ -1303,15 +1399,80 @@ __TS__SetDescriptor(
|
|
|
1303
1399
|
},
|
|
1304
1400
|
true
|
|
1305
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
|
+
)
|
|
1306
1467
|
__TS__SetDescriptor(
|
|
1307
1468
|
Buff.prototype,
|
|
1308
1469
|
"abilityCooldownFactor",
|
|
1309
1470
|
{
|
|
1310
1471
|
get = function(self)
|
|
1311
|
-
return self[
|
|
1472
|
+
return self[147] or 1
|
|
1312
1473
|
end,
|
|
1313
1474
|
set = function(self, abilityCooldownFactor)
|
|
1314
|
-
local previousAbilityCooldownModifier = self[
|
|
1475
|
+
local previousAbilityCooldownModifier = self[148]
|
|
1315
1476
|
if previousAbilityCooldownModifier then
|
|
1316
1477
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
1317
1478
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
@@ -1323,8 +1484,8 @@ __TS__SetDescriptor(
|
|
|
1323
1484
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
1324
1485
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1325
1486
|
end
|
|
1326
|
-
self[
|
|
1327
|
-
self[
|
|
1487
|
+
self[148] = modifier
|
|
1488
|
+
self[147] = abilityCooldownFactor
|
|
1328
1489
|
end
|
|
1329
1490
|
},
|
|
1330
1491
|
true
|
|
@@ -1332,35 +1493,40 @@ __TS__SetDescriptor(
|
|
|
1332
1493
|
Buff.createdEvent = buffCreatedEvent
|
|
1333
1494
|
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1334
1495
|
(function(self)
|
|
1335
|
-
local function destroyBuffIfNeeded(buff)
|
|
1336
|
-
|
|
1337
|
-
|
|
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
|
|
1338
1504
|
end
|
|
1339
1505
|
end
|
|
1340
|
-
____exports.checkBuff = function(unit, buffTypeId)
|
|
1506
|
+
____exports.checkBuff = function(unit, buffTypeId, isDispel, source)
|
|
1341
1507
|
local buffByTypeId = buffByTypeIdByUnit[unit]
|
|
1342
1508
|
if buffByTypeId ~= nil then
|
|
1343
1509
|
local buff = buffByTypeId[buffTypeId]
|
|
1344
1510
|
if buff ~= nil then
|
|
1345
|
-
destroyBuffIfNeeded(buff)
|
|
1511
|
+
destroyBuffIfNeeded(buff, isDispel, source)
|
|
1346
1512
|
end
|
|
1347
1513
|
end
|
|
1348
1514
|
end
|
|
1349
|
-
____exports.checkBuffs = function(unit)
|
|
1350
|
-
____exports.Buff:forAll(unit, destroyBuffIfNeeded)
|
|
1515
|
+
____exports.checkBuffs = function(unit, isDispel, source)
|
|
1516
|
+
____exports.Buff:forAll(unit, destroyBuffIfNeeded, isDispel, source)
|
|
1351
1517
|
end
|
|
1352
1518
|
Unit.abilityChannelingStartEvent:addListener(
|
|
1353
1519
|
0,
|
|
1354
1520
|
function(caster)
|
|
1355
|
-
____exports.checkBuffs(caster)
|
|
1356
|
-
Timer:run(____exports.checkBuffs, caster)
|
|
1521
|
+
____exports.checkBuffs(caster, true, caster)
|
|
1522
|
+
Timer:run(____exports.checkBuffs, caster, true, caster)
|
|
1357
1523
|
end
|
|
1358
1524
|
)
|
|
1359
1525
|
Unit.abilityUnitTargetChannelingStartEvent:addListener(
|
|
1360
1526
|
0,
|
|
1361
1527
|
function(caster, ability, target)
|
|
1362
|
-
____exports.checkBuffs(target)
|
|
1363
|
-
Timer:run(____exports.checkBuffs, target)
|
|
1528
|
+
____exports.checkBuffs(target, true, caster)
|
|
1529
|
+
Timer:run(____exports.checkBuffs, target, true, caster)
|
|
1364
1530
|
end
|
|
1365
1531
|
)
|
|
1366
1532
|
Unit.abilityPointTargetChannelingStartEvent:addListener(
|
|
@@ -1371,17 +1537,40 @@ Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
|
1371
1537
|
y,
|
|
1372
1538
|
ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1373
1539
|
)
|
|
1374
|
-
forEach(units, ____exports.checkBuffs)
|
|
1375
|
-
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
|
|
1376
1565
|
end
|
|
1377
1566
|
)
|
|
1378
1567
|
Unit.onDamage:addListener(
|
|
1379
1568
|
0,
|
|
1380
1569
|
function(source, target)
|
|
1381
1570
|
if source ~= nil then
|
|
1382
|
-
____exports.checkBuffs
|
|
1571
|
+
Timer:run(____exports.checkBuffs, source, false)
|
|
1383
1572
|
end
|
|
1384
|
-
____exports.checkBuffs
|
|
1573
|
+
Timer:run(____exports.checkBuffs, target, false)
|
|
1385
1574
|
end
|
|
1386
1575
|
)
|
|
1387
1576
|
buffCreatedEvent:addListener(function(buff)
|