warscript 0.0.1-dev.f5421e8 → 0.0.1-dev.f594e71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/core/types/frame.d.ts +1 -0
- package/core/types/frame.lua +136 -58
- 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 +18 -1
- package/core/types/player.lua +76 -26
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +1 -1
- package/core/types/sound.lua +19 -9
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/core/types/unit.d.ts +4 -0
- package/core/types/unit.lua +4 -0
- package/decl/native.d.ts +1718 -964
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +40 -49
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +23 -7
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +12 -6
- package/engine/behaviour/ability.lua +49 -17
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +40 -3
- package/engine/behaviour/unit.lua +270 -6
- package/engine/buff.d.ts +75 -28
- package/engine/buff.lua +433 -196
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +11 -1
- package/engine/internal/ability.lua +100 -41
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item+owner.d.ts +1 -0
- package/engine/internal/item+owner.lua +19 -6
- package/engine/internal/item.d.ts +28 -16
- package/engine/internal/item.lua +241 -82
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +113 -12
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- 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/bag.d.ts +18 -0
- package/engine/internal/unit/bag.lua +63 -0
- package/engine/internal/unit/bonus.d.ts +6 -0
- package/engine/internal/unit/bonus.lua +33 -3
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +34 -19
- package/engine/internal/unit/equipment.d.ts +36 -0
- package/engine/internal/unit/equipment.lua +169 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
- package/engine/internal/unit/{item.lua → inventory.lua} +25 -26
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- 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.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +11 -11
- package/engine/internal/unit+damage.lua +43 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +39 -27
- package/engine/internal/unit.lua +382 -269
- package/engine/local-client.d.ts +27 -0
- package/engine/local-client.lua +370 -54
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -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 +13 -0
- package/engine/object-data/auxiliary/equipment-type.lua +2 -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-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/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/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/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +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/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/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/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/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/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/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 +12 -3
- package/engine/object-data/entry/ability-type.lua +148 -7
- package/engine/object-data/entry/buff-type/applicable.lua +113 -104
- package/engine/object-data/entry/buff-type.d.ts +10 -12
- package/engine/object-data/entry/buff-type.lua +37 -27
- package/engine/object-data/entry/destructible-type.d.ts +32 -2
- package/engine/object-data/entry/destructible-type.lua +181 -0
- package/engine/object-data/entry/item-type.d.ts +12 -3
- package/engine/object-data/entry/item-type.lua +52 -0
- package/engine/object-data/entry/lightning-type.d.ts +2 -2
- package/engine/object-data/entry/sound-preset.d.ts +2 -2
- package/engine/object-data/entry/unit-type.d.ts +64 -6
- package/engine/object-data/entry/unit-type.lua +531 -85
- package/engine/object-data/entry/upgrade.d.ts +2 -2
- package/engine/object-data/entry.d.ts +4 -1
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +360 -119
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -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 +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/unit-type.d.ts +5 -0
- package/engine/standard/entries/unit-type.lua +5 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +10 -1
- package/engine/unit.lua +10 -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/net/socket.lua +1 -1
- package/network.lua +25 -1
- package/objutil/buff.lua +11 -10
- 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/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +5 -1
- package/utility/linked-set.lua +49 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/buff.lua
CHANGED
|
@@ -16,6 +16,7 @@ local internalApplyBuff = ____applicable.internalApplyBuff
|
|
|
16
16
|
local removeBuff = ____applicable.removeBuff
|
|
17
17
|
local ____ability = require("engine.internal.ability")
|
|
18
18
|
local Ability = ____ability.Ability
|
|
19
|
+
local UnitAbility = ____ability.UnitAbility
|
|
19
20
|
local ____ability = require("engine.object-field.ability")
|
|
20
21
|
local AbilityBooleanField = ____ability.AbilityBooleanField
|
|
21
22
|
local AbilityNumberField = ____ability.AbilityNumberField
|
|
@@ -28,9 +29,6 @@ local ____math = require("math")
|
|
|
28
29
|
local max = ____math.max
|
|
29
30
|
local min = ____math.min
|
|
30
31
|
local ____bonus = require("engine.internal.unit.bonus")
|
|
31
|
-
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
32
|
-
local getUnitBonus = ____bonus.getUnitBonus
|
|
33
|
-
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
34
32
|
local UnitBonusType = ____bonus.UnitBonusType
|
|
35
33
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
34
|
local damageArea = ____area_2Ddamage.damageArea
|
|
@@ -44,6 +42,7 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
44
42
|
local ____unit = require("engine.behaviour.unit")
|
|
45
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
46
44
|
local ____arrays = require("utility.arrays")
|
|
45
|
+
local emptyArray = ____arrays.emptyArray
|
|
47
46
|
local forEach = ____arrays.forEach
|
|
48
47
|
local ____event = require("event")
|
|
49
48
|
local Event = ____event.Event
|
|
@@ -53,6 +52,12 @@ local ____item = require("engine.internal.item")
|
|
|
53
52
|
local Item = ____item.Item
|
|
54
53
|
local ____destructable = require("core.types.destructable")
|
|
55
54
|
local Destructable = ____destructable.Destructable
|
|
55
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
56
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
57
|
+
local ____ability = require("engine.behaviour.ability")
|
|
58
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
59
|
+
local ____records = require("utility.records")
|
|
60
|
+
local sortedKeysUnnested = ____records.sortedKeysUnnested
|
|
56
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
57
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
58
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -98,9 +103,11 @@ local buffParametersKeys = {
|
|
|
98
103
|
damageIncrease = true,
|
|
99
104
|
damageIncreaseFactor = true,
|
|
100
105
|
armorIncrease = true,
|
|
101
|
-
|
|
106
|
+
maxHealthIncrease = true,
|
|
107
|
+
maxManaIncrease = true,
|
|
102
108
|
attackSpeedIncreaseFactor = true,
|
|
103
109
|
movementSpeedIncreaseFactor = true,
|
|
110
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
104
111
|
evasionProbability = true,
|
|
105
112
|
missProbability = true,
|
|
106
113
|
damageFactor = true,
|
|
@@ -120,11 +127,15 @@ local buffParametersKeys = {
|
|
|
120
127
|
maximumAutoAttackCount = true,
|
|
121
128
|
maximumDamageDealtEventCount = true,
|
|
122
129
|
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
123
133
|
uniqueGroup = true,
|
|
124
134
|
damageOnExpiration = true,
|
|
125
135
|
healingOnExpiration = true,
|
|
126
136
|
killsOnExpiration = true,
|
|
127
|
-
explodesOnExpiration = true
|
|
137
|
+
explodesOnExpiration = true,
|
|
138
|
+
abilityCooldownFactor = true
|
|
128
139
|
}
|
|
129
140
|
local function resolveEnumValue(ability, level, value)
|
|
130
141
|
if value == nil or type(value) == "number" then
|
|
@@ -175,6 +186,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
175
186
|
end
|
|
176
187
|
end
|
|
177
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
178
190
|
"turnsIntoGhost",
|
|
179
191
|
"stuns",
|
|
180
192
|
"ignoresStunImmunity",
|
|
@@ -187,8 +199,11 @@ local buffNumberParameters = {
|
|
|
187
199
|
"durationIncreaseOnAutoAttack",
|
|
188
200
|
"attackSpeedIncreaseFactor",
|
|
189
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
190
203
|
"evasionProbability",
|
|
191
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
192
207
|
"damageFactor",
|
|
193
208
|
"receivedDamageFactor",
|
|
194
209
|
"maximumAutoAttackCount",
|
|
@@ -201,7 +216,10 @@ local buffNumberParameters = {
|
|
|
201
216
|
"healingPerInterval",
|
|
202
217
|
"healingOverDuration",
|
|
203
218
|
"damageOnExpiration",
|
|
204
|
-
"healingOnExpiration"
|
|
219
|
+
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
222
|
+
"abilityCooldownFactor"
|
|
205
223
|
}
|
|
206
224
|
local unsuccessfulApplicationMarker = {}
|
|
207
225
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -236,6 +254,10 @@ local function destroyBuff(buff)
|
|
|
236
254
|
buff:destroy()
|
|
237
255
|
end
|
|
238
256
|
local function expireBuff(buff)
|
|
257
|
+
if buff.isDestroyed or buff[100] ~= 1 then
|
|
258
|
+
return
|
|
259
|
+
end
|
|
260
|
+
buff[100] = 2
|
|
239
261
|
local remainingDamageOverDuration = buff[113] or 0
|
|
240
262
|
local remainingHealingOverDuration = buff[113] or 0
|
|
241
263
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
@@ -304,7 +326,8 @@ buffHealingIntervalTimerCallback = function(buff)
|
|
|
304
326
|
source:healTarget(buff[101], healingPerInterval)
|
|
305
327
|
end
|
|
306
328
|
end
|
|
307
|
-
local
|
|
329
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
330
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
308
331
|
____exports.Buff = __TS__Class()
|
|
309
332
|
local Buff = ____exports.Buff
|
|
310
333
|
Buff.name = "Buff"
|
|
@@ -319,33 +342,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
319
342
|
local polarity
|
|
320
343
|
local resistanceType
|
|
321
344
|
local ability
|
|
345
|
+
local abilityBehavior
|
|
322
346
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
323
347
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
324
348
|
polarity = resistanceTypeOrPolarity
|
|
325
349
|
resistanceType = abilityOrParametersOrResistanceType
|
|
326
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
350
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
351
|
+
abilityBehavior = parametersOrAbility
|
|
352
|
+
ability = abilityBehavior.ability
|
|
353
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
327
354
|
ability = parametersOrAbility
|
|
328
|
-
|
|
329
|
-
ability = nil
|
|
355
|
+
elseif parametersOrAbility ~= nil then
|
|
330
356
|
parameters = parametersOrAbility
|
|
331
357
|
end
|
|
332
358
|
else
|
|
333
359
|
typeId = typeIdOrTypeIds
|
|
334
360
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
335
361
|
resistanceType = resistanceTypeOrPolarity
|
|
336
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
362
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
363
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
364
|
+
ability = abilityBehavior.ability
|
|
365
|
+
parameters = parametersOrAbility
|
|
366
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
337
367
|
ability = abilityOrParametersOrResistanceType
|
|
338
368
|
parameters = parametersOrAbility
|
|
339
|
-
|
|
340
|
-
ability = nil
|
|
369
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
341
370
|
parameters = abilityOrParametersOrResistanceType
|
|
371
|
+
else
|
|
372
|
+
parameters = parametersOrAbility
|
|
342
373
|
end
|
|
343
374
|
end
|
|
375
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
344
376
|
self.typeId = typeId
|
|
345
|
-
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
346
|
-
parameters = ability
|
|
347
|
-
ability = nil
|
|
348
|
-
end
|
|
349
377
|
local defaultParameters = self.constructor.defaultParameters
|
|
350
378
|
local level = parameters and parameters.level or defaultParameters.level
|
|
351
379
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -373,14 +401,15 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
373
401
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
374
402
|
if missProbability ~= nil then
|
|
375
403
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
376
|
-
self[
|
|
404
|
+
self[146] = missProbability
|
|
377
405
|
end
|
|
378
406
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
379
407
|
if buffByTypeId == nil then
|
|
380
408
|
buffByTypeId = {}
|
|
381
409
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
382
410
|
end
|
|
383
|
-
|
|
411
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
412
|
+
local ____opt_15 = self.previousBuff
|
|
384
413
|
if ____opt_15 ~= nil then
|
|
385
414
|
____opt_15:destroy()
|
|
386
415
|
end
|
|
@@ -456,24 +485,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
456
485
|
abilityTypeIds = {}
|
|
457
486
|
self._abilityTypeIds = abilityTypeIds
|
|
458
487
|
end
|
|
459
|
-
for
|
|
488
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
489
|
+
local abilityParameters = checkNotNull(parametersAbilityTypeIds[abilityTypeId])
|
|
460
490
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
461
491
|
if addedAbility ~= nil then
|
|
462
492
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
463
493
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
473
|
-
)
|
|
474
|
-
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
|
+
)
|
|
475
502
|
end
|
|
476
|
-
abilityTypeIds[
|
|
503
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
477
504
|
end
|
|
478
505
|
end
|
|
479
506
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -485,18 +512,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
485
512
|
self._behaviors = behaviors
|
|
486
513
|
end
|
|
487
514
|
end
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
if
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
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
|
|
495
524
|
end
|
|
496
525
|
end
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
526
|
+
if (next(additionalParameters)) ~= nil then
|
|
527
|
+
self.parameters = additionalParameters
|
|
528
|
+
end
|
|
500
529
|
end
|
|
501
530
|
end
|
|
502
531
|
if duration ~= nil and duration > 0 then
|
|
@@ -506,65 +535,79 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
506
535
|
end
|
|
507
536
|
self:onCreate()
|
|
508
537
|
self[100] = 1
|
|
538
|
+
Event.invoke(buffCreatedEvent, self)
|
|
509
539
|
end
|
|
510
|
-
function Buff.prototype.
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
540
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
541
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
542
|
+
local abilityCooldownModifier = self[148]
|
|
543
|
+
if abilityCooldownModifier then
|
|
544
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
545
|
+
end
|
|
546
|
+
end
|
|
514
547
|
end
|
|
515
|
-
function Buff.prototype.
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
548
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
549
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
550
|
+
local abilityCooldownModifier = self[148]
|
|
551
|
+
if abilityCooldownModifier then
|
|
552
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
553
|
+
end
|
|
520
554
|
end
|
|
521
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
522
555
|
end
|
|
523
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)
|
|
524
575
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
525
|
-
Effect:flash(
|
|
576
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
526
577
|
else
|
|
527
578
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
528
|
-
local
|
|
529
|
-
local
|
|
530
|
-
local
|
|
531
|
-
|
|
532
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
533
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
534
|
-
)
|
|
535
|
-
local ____isWidgetProvided_40
|
|
579
|
+
local ____Effect_40 = Effect
|
|
580
|
+
local ____Effect_flash_41 = Effect.flash
|
|
581
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
582
|
+
local ____isWidgetProvided_38
|
|
536
583
|
if isWidgetProvided then
|
|
537
|
-
|
|
584
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
538
585
|
else
|
|
539
|
-
|
|
586
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
540
587
|
end
|
|
541
|
-
__TS__SparseArrayPush(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
__TS__SparseArraySpread(
|
|
588
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
589
|
+
____Effect_flash_41(
|
|
590
|
+
____Effect_40,
|
|
591
|
+
__TS__SparseArraySpread(____array_39)
|
|
545
592
|
)
|
|
546
593
|
end
|
|
547
594
|
end
|
|
548
|
-
function Buff.prototype.
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
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
|
|
562
610
|
end
|
|
563
|
-
__TS__SparseArrayPush(____array_45, ____isWidgetProvided_44)
|
|
564
|
-
____Effect_flash_47(
|
|
565
|
-
____Effect_46,
|
|
566
|
-
__TS__SparseArraySpread(____array_45)
|
|
567
|
-
)
|
|
568
611
|
end
|
|
569
612
|
function Buff.prototype.onCreate(self)
|
|
570
613
|
end
|
|
@@ -594,32 +637,33 @@ function Buff.prototype.onDestroy(self)
|
|
|
594
637
|
behavior:destroy()
|
|
595
638
|
end
|
|
596
639
|
end
|
|
597
|
-
|
|
640
|
+
local previousAbilityCooldownModifier = self[148]
|
|
641
|
+
if previousAbilityCooldownModifier then
|
|
642
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
643
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
644
|
+
end
|
|
645
|
+
end
|
|
646
|
+
if self[143] then
|
|
598
647
|
unit:decrementInvulnerabilityCounter()
|
|
599
648
|
end
|
|
600
|
-
if self[
|
|
649
|
+
if self[142] then
|
|
601
650
|
unit:decrementDisableAutoAttackCounter()
|
|
602
651
|
end
|
|
603
|
-
if self[
|
|
604
|
-
if self[
|
|
605
|
-
unit:
|
|
652
|
+
if self[140] then
|
|
653
|
+
if self[141] then
|
|
654
|
+
unit:decrementForceStunCounter()
|
|
606
655
|
end
|
|
607
656
|
unit:decrementStunCounter()
|
|
608
657
|
end
|
|
609
|
-
if self[
|
|
658
|
+
if self[139] then
|
|
610
659
|
unit:decrementGhostCounter()
|
|
611
660
|
end
|
|
612
661
|
if self._abilityTypeIds ~= nil then
|
|
613
|
-
for abilityTypeId in
|
|
662
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
614
663
|
unit:removeAbility(abilityTypeId)
|
|
615
664
|
end
|
|
616
665
|
end
|
|
617
|
-
|
|
618
|
-
for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
|
|
619
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
620
|
-
end
|
|
621
|
-
end
|
|
622
|
-
Event.invoke(buffDestroyEvent, self)
|
|
666
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
623
667
|
self[100] = 3
|
|
624
668
|
return UnitBehavior.prototype.onDestroy(self)
|
|
625
669
|
end
|
|
@@ -648,13 +692,15 @@ function Buff.apply(self, ...)
|
|
|
648
692
|
end
|
|
649
693
|
end
|
|
650
694
|
function Buff.getByTypeId(self, unit, typeId)
|
|
651
|
-
local
|
|
652
|
-
local buff =
|
|
695
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
696
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
653
697
|
if __TS__InstanceOf(buff, self) then
|
|
654
698
|
return buff
|
|
655
699
|
end
|
|
656
700
|
return nil
|
|
657
701
|
end
|
|
702
|
+
function Buff.prototype.onDispel(self, source)
|
|
703
|
+
end
|
|
658
704
|
function Buff.prototype.onExpiration(self)
|
|
659
705
|
local unit = self.unit
|
|
660
706
|
if self[120] ~= nil then
|
|
@@ -663,9 +709,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
663
709
|
if self[121] ~= nil then
|
|
664
710
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
665
711
|
end
|
|
666
|
-
if self[
|
|
712
|
+
if self[145] then
|
|
667
713
|
unit:explode()
|
|
668
|
-
elseif self[
|
|
714
|
+
elseif self[144] then
|
|
669
715
|
unit:kill()
|
|
670
716
|
end
|
|
671
717
|
end
|
|
@@ -720,6 +766,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
720
766
|
end
|
|
721
767
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
722
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
|
|
723
781
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
724
782
|
self[133] = damageReceivedEventCount
|
|
725
783
|
if damageReceivedEventCount == self[134] then
|
|
@@ -807,8 +865,8 @@ __TS__SetDescriptor(
|
|
|
807
865
|
return
|
|
808
866
|
end
|
|
809
867
|
self[112] = damageInterval
|
|
810
|
-
local
|
|
811
|
-
local elapsed =
|
|
868
|
+
local ____opt_45 = self._timer
|
|
869
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
812
870
|
local timer = self[114]
|
|
813
871
|
if timer == nil then
|
|
814
872
|
timer = Timer:create()
|
|
@@ -887,8 +945,8 @@ __TS__SetDescriptor(
|
|
|
887
945
|
return
|
|
888
946
|
end
|
|
889
947
|
self[117] = healingInterval
|
|
890
|
-
local
|
|
891
|
-
local elapsed =
|
|
948
|
+
local ____opt_47 = self._timer
|
|
949
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
892
950
|
local timer = self[119]
|
|
893
951
|
if timer == nil then
|
|
894
952
|
timer = Timer:create()
|
|
@@ -969,24 +1027,50 @@ __TS__SetDescriptor(
|
|
|
969
1027
|
},
|
|
970
1028
|
true
|
|
971
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
|
+
)
|
|
972
1056
|
__TS__SetDescriptor(
|
|
973
1057
|
Buff.prototype,
|
|
974
1058
|
"turnsIntoGhost",
|
|
975
1059
|
{
|
|
976
1060
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
1061
|
+
local ____self__139_49 = self[139]
|
|
1062
|
+
if ____self__139_49 == nil then
|
|
1063
|
+
____self__139_49 = false
|
|
980
1064
|
end
|
|
981
|
-
return
|
|
1065
|
+
return ____self__139_49
|
|
982
1066
|
end,
|
|
983
1067
|
set = function(self, turnsIntoGhost)
|
|
984
|
-
if not turnsIntoGhost and self[
|
|
1068
|
+
if not turnsIntoGhost and self[139] then
|
|
985
1069
|
self.object:decrementGhostCounter()
|
|
986
|
-
self[
|
|
987
|
-
elseif turnsIntoGhost and not self[
|
|
1070
|
+
self[139] = nil
|
|
1071
|
+
elseif turnsIntoGhost and not self[139] then
|
|
988
1072
|
self.object:incrementGhostCounter()
|
|
989
|
-
self[
|
|
1073
|
+
self[139] = true
|
|
990
1074
|
end
|
|
991
1075
|
end
|
|
992
1076
|
},
|
|
@@ -997,25 +1081,25 @@ __TS__SetDescriptor(
|
|
|
997
1081
|
"stuns",
|
|
998
1082
|
{
|
|
999
1083
|
get = function(self)
|
|
1000
|
-
local
|
|
1001
|
-
if
|
|
1002
|
-
|
|
1084
|
+
local ____self__140_50 = self[140]
|
|
1085
|
+
if ____self__140_50 == nil then
|
|
1086
|
+
____self__140_50 = false
|
|
1003
1087
|
end
|
|
1004
|
-
return
|
|
1088
|
+
return ____self__140_50
|
|
1005
1089
|
end,
|
|
1006
1090
|
set = function(self, stuns)
|
|
1007
|
-
if not stuns and self[
|
|
1008
|
-
if self[
|
|
1009
|
-
self.object:
|
|
1091
|
+
if not stuns and self[140] then
|
|
1092
|
+
if self[141] then
|
|
1093
|
+
self.object:decrementForceStunCounter()
|
|
1010
1094
|
end
|
|
1011
1095
|
self.object:decrementStunCounter()
|
|
1012
|
-
self[
|
|
1013
|
-
elseif stuns and not self[
|
|
1014
|
-
if self[
|
|
1015
|
-
self.object:
|
|
1096
|
+
self[140] = nil
|
|
1097
|
+
elseif stuns and not self[140] then
|
|
1098
|
+
if self[141] then
|
|
1099
|
+
self.object:incrementForceStunCounter()
|
|
1016
1100
|
end
|
|
1017
1101
|
self.object:incrementStunCounter()
|
|
1018
|
-
self[
|
|
1102
|
+
self[140] = true
|
|
1019
1103
|
end
|
|
1020
1104
|
end
|
|
1021
1105
|
},
|
|
@@ -1026,23 +1110,23 @@ __TS__SetDescriptor(
|
|
|
1026
1110
|
"ignoresStunImmunity",
|
|
1027
1111
|
{
|
|
1028
1112
|
get = function(self)
|
|
1029
|
-
local
|
|
1030
|
-
if
|
|
1031
|
-
|
|
1113
|
+
local ____self__141_51 = self[141]
|
|
1114
|
+
if ____self__141_51 == nil then
|
|
1115
|
+
____self__141_51 = false
|
|
1032
1116
|
end
|
|
1033
|
-
return
|
|
1117
|
+
return ____self__141_51
|
|
1034
1118
|
end,
|
|
1035
1119
|
set = function(self, ignoresStunImmunity)
|
|
1036
|
-
if not ignoresStunImmunity and self[
|
|
1037
|
-
if self[
|
|
1038
|
-
self.object:
|
|
1120
|
+
if not ignoresStunImmunity and self[141] then
|
|
1121
|
+
if self[140] then
|
|
1122
|
+
self.object:decrementForceStunCounter()
|
|
1039
1123
|
end
|
|
1040
|
-
self[
|
|
1041
|
-
elseif ignoresStunImmunity and not self[
|
|
1042
|
-
if self[
|
|
1043
|
-
self.object:
|
|
1124
|
+
self[141] = nil
|
|
1125
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1126
|
+
if self[140] then
|
|
1127
|
+
self.object:incrementForceStunCounter()
|
|
1044
1128
|
end
|
|
1045
|
-
self[
|
|
1129
|
+
self[141] = true
|
|
1046
1130
|
end
|
|
1047
1131
|
end
|
|
1048
1132
|
},
|
|
@@ -1053,19 +1137,19 @@ __TS__SetDescriptor(
|
|
|
1053
1137
|
"disablesAutoAttack",
|
|
1054
1138
|
{
|
|
1055
1139
|
get = function(self)
|
|
1056
|
-
local
|
|
1057
|
-
if
|
|
1058
|
-
|
|
1140
|
+
local ____self__142_52 = self[142]
|
|
1141
|
+
if ____self__142_52 == nil then
|
|
1142
|
+
____self__142_52 = false
|
|
1059
1143
|
end
|
|
1060
|
-
return
|
|
1144
|
+
return ____self__142_52
|
|
1061
1145
|
end,
|
|
1062
1146
|
set = function(self, disablesAutoAttack)
|
|
1063
|
-
if not disablesAutoAttack and self[
|
|
1147
|
+
if not disablesAutoAttack and self[142] then
|
|
1064
1148
|
self.object:decrementDisableAutoAttackCounter()
|
|
1065
|
-
self[
|
|
1066
|
-
elseif disablesAutoAttack and not self[
|
|
1149
|
+
self[142] = nil
|
|
1150
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1067
1151
|
self.object:incrementDisableAutoAttackCounter()
|
|
1068
|
-
self[
|
|
1152
|
+
self[142] = true
|
|
1069
1153
|
end
|
|
1070
1154
|
end
|
|
1071
1155
|
},
|
|
@@ -1076,19 +1160,19 @@ __TS__SetDescriptor(
|
|
|
1076
1160
|
"providesInvulnerability",
|
|
1077
1161
|
{
|
|
1078
1162
|
get = function(self)
|
|
1079
|
-
local
|
|
1080
|
-
if
|
|
1081
|
-
|
|
1163
|
+
local ____self__143_53 = self[143]
|
|
1164
|
+
if ____self__143_53 == nil then
|
|
1165
|
+
____self__143_53 = false
|
|
1082
1166
|
end
|
|
1083
|
-
return
|
|
1167
|
+
return ____self__143_53
|
|
1084
1168
|
end,
|
|
1085
1169
|
set = function(self, providesInvulnerability)
|
|
1086
|
-
if not providesInvulnerability and self[
|
|
1170
|
+
if not providesInvulnerability and self[143] then
|
|
1087
1171
|
self.object:decrementInvulnerabilityCounter()
|
|
1088
|
-
self[
|
|
1089
|
-
elseif providesInvulnerability and not self[
|
|
1172
|
+
self[143] = nil
|
|
1173
|
+
elseif providesInvulnerability and not self[143] then
|
|
1090
1174
|
self.object:incrementInvulnerabilityCounter()
|
|
1091
|
-
self[
|
|
1175
|
+
self[143] = true
|
|
1092
1176
|
end
|
|
1093
1177
|
end
|
|
1094
1178
|
},
|
|
@@ -1099,17 +1183,17 @@ __TS__SetDescriptor(
|
|
|
1099
1183
|
"killsOnExpiration",
|
|
1100
1184
|
{
|
|
1101
1185
|
get = function(self)
|
|
1102
|
-
local
|
|
1103
|
-
if
|
|
1104
|
-
|
|
1186
|
+
local ____self__144_54 = self[144]
|
|
1187
|
+
if ____self__144_54 == nil then
|
|
1188
|
+
____self__144_54 = false
|
|
1105
1189
|
end
|
|
1106
|
-
return
|
|
1190
|
+
return ____self__144_54
|
|
1107
1191
|
end,
|
|
1108
1192
|
set = function(self, killsOnExpiration)
|
|
1109
|
-
if not killsOnExpiration and self[
|
|
1110
|
-
self[
|
|
1111
|
-
elseif killsOnExpiration and not self[
|
|
1112
|
-
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
|
|
1113
1197
|
end
|
|
1114
1198
|
end
|
|
1115
1199
|
},
|
|
@@ -1120,17 +1204,17 @@ __TS__SetDescriptor(
|
|
|
1120
1204
|
"explodesOnExpiration",
|
|
1121
1205
|
{
|
|
1122
1206
|
get = function(self)
|
|
1123
|
-
local
|
|
1124
|
-
if
|
|
1125
|
-
|
|
1207
|
+
local ____self__145_55 = self[145]
|
|
1208
|
+
if ____self__145_55 == nil then
|
|
1209
|
+
____self__145_55 = false
|
|
1126
1210
|
end
|
|
1127
|
-
return
|
|
1211
|
+
return ____self__145_55
|
|
1128
1212
|
end,
|
|
1129
1213
|
set = function(self, killsOnExpiration)
|
|
1130
|
-
if not killsOnExpiration and self[
|
|
1131
|
-
self[
|
|
1132
|
-
elseif killsOnExpiration and not self[
|
|
1133
|
-
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
|
|
1134
1218
|
end
|
|
1135
1219
|
end
|
|
1136
1220
|
},
|
|
@@ -1239,12 +1323,39 @@ __TS__SetDescriptor(
|
|
|
1239
1323
|
},
|
|
1240
1324
|
true
|
|
1241
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
|
+
)
|
|
1242
1339
|
__TS__SetDescriptor(
|
|
1243
1340
|
Buff.prototype,
|
|
1244
1341
|
"duration",
|
|
1245
|
-
{
|
|
1246
|
-
|
|
1247
|
-
|
|
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
|
+
},
|
|
1248
1359
|
true
|
|
1249
1360
|
)
|
|
1250
1361
|
__TS__SetDescriptor(
|
|
@@ -1252,13 +1363,13 @@ __TS__SetDescriptor(
|
|
|
1252
1363
|
"remainingDuration",
|
|
1253
1364
|
{
|
|
1254
1365
|
get = function(self)
|
|
1255
|
-
local
|
|
1256
|
-
return
|
|
1366
|
+
local ____opt_56 = self._timer
|
|
1367
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1257
1368
|
end,
|
|
1258
1369
|
set = function(self, remainingDuration)
|
|
1259
|
-
local
|
|
1260
|
-
local
|
|
1261
|
-
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)
|
|
1262
1373
|
if remainingDurationDelta ~= 0 then
|
|
1263
1374
|
self[103] = self[103] + remainingDurationDelta
|
|
1264
1375
|
if remainingDuration <= 0 then
|
|
@@ -1273,7 +1384,7 @@ __TS__SetDescriptor(
|
|
|
1273
1384
|
remainingDuration,
|
|
1274
1385
|
self._spellStealPriority,
|
|
1275
1386
|
self._learnLevelMinimum,
|
|
1276
|
-
self[
|
|
1387
|
+
self[146]
|
|
1277
1388
|
) then
|
|
1278
1389
|
local timer = self._timer
|
|
1279
1390
|
if timer == nil then
|
|
@@ -1288,37 +1399,134 @@ __TS__SetDescriptor(
|
|
|
1288
1399
|
},
|
|
1289
1400
|
true
|
|
1290
1401
|
)
|
|
1291
|
-
|
|
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
|
+
)
|
|
1467
|
+
__TS__SetDescriptor(
|
|
1468
|
+
Buff.prototype,
|
|
1469
|
+
"abilityCooldownFactor",
|
|
1470
|
+
{
|
|
1471
|
+
get = function(self)
|
|
1472
|
+
return self[147] or 1
|
|
1473
|
+
end,
|
|
1474
|
+
set = function(self, abilityCooldownFactor)
|
|
1475
|
+
local previousAbilityCooldownModifier = self[148]
|
|
1476
|
+
if previousAbilityCooldownModifier then
|
|
1477
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1478
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1479
|
+
end
|
|
1480
|
+
end
|
|
1481
|
+
local function modifier(ability, level, cooldown)
|
|
1482
|
+
return cooldown * abilityCooldownFactor
|
|
1483
|
+
end
|
|
1484
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1485
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1486
|
+
end
|
|
1487
|
+
self[148] = modifier
|
|
1488
|
+
self[147] = abilityCooldownFactor
|
|
1489
|
+
end
|
|
1490
|
+
},
|
|
1491
|
+
true
|
|
1492
|
+
)
|
|
1493
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1494
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1292
1495
|
(function(self)
|
|
1293
|
-
local function destroyBuffIfNeeded(buff)
|
|
1294
|
-
|
|
1295
|
-
|
|
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
|
|
1296
1504
|
end
|
|
1297
1505
|
end
|
|
1298
|
-
____exports.checkBuff = function(unit, buffTypeId)
|
|
1506
|
+
____exports.checkBuff = function(unit, buffTypeId, isDispel, source)
|
|
1299
1507
|
local buffByTypeId = buffByTypeIdByUnit[unit]
|
|
1300
1508
|
if buffByTypeId ~= nil then
|
|
1301
1509
|
local buff = buffByTypeId[buffTypeId]
|
|
1302
1510
|
if buff ~= nil then
|
|
1303
|
-
destroyBuffIfNeeded(buff)
|
|
1511
|
+
destroyBuffIfNeeded(buff, isDispel, source)
|
|
1304
1512
|
end
|
|
1305
1513
|
end
|
|
1306
1514
|
end
|
|
1307
|
-
____exports.checkBuffs = function(unit)
|
|
1308
|
-
____exports.Buff:forAll(unit, destroyBuffIfNeeded)
|
|
1515
|
+
____exports.checkBuffs = function(unit, isDispel, source)
|
|
1516
|
+
____exports.Buff:forAll(unit, destroyBuffIfNeeded, isDispel, source)
|
|
1309
1517
|
end
|
|
1310
1518
|
Unit.abilityChannelingStartEvent:addListener(
|
|
1311
1519
|
0,
|
|
1312
1520
|
function(caster)
|
|
1313
|
-
____exports.checkBuffs(caster)
|
|
1314
|
-
Timer:run(____exports.checkBuffs, caster)
|
|
1521
|
+
____exports.checkBuffs(caster, true, caster)
|
|
1522
|
+
Timer:run(____exports.checkBuffs, caster, true, caster)
|
|
1315
1523
|
end
|
|
1316
1524
|
)
|
|
1317
1525
|
Unit.abilityUnitTargetChannelingStartEvent:addListener(
|
|
1318
1526
|
0,
|
|
1319
1527
|
function(caster, ability, target)
|
|
1320
|
-
____exports.checkBuffs(target)
|
|
1321
|
-
Timer:run(____exports.checkBuffs, target)
|
|
1528
|
+
____exports.checkBuffs(target, true, caster)
|
|
1529
|
+
Timer:run(____exports.checkBuffs, target, true, caster)
|
|
1322
1530
|
end
|
|
1323
1531
|
)
|
|
1324
1532
|
Unit.abilityPointTargetChannelingStartEvent:addListener(
|
|
@@ -1329,18 +1537,47 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1329
1537
|
y,
|
|
1330
1538
|
ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1331
1539
|
)
|
|
1332
|
-
forEach(units, ____exports.checkBuffs)
|
|
1333
|
-
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
|
|
1334
1565
|
end
|
|
1335
1566
|
)
|
|
1336
1567
|
Unit.onDamage:addListener(
|
|
1337
1568
|
0,
|
|
1338
1569
|
function(source, target)
|
|
1339
1570
|
if source ~= nil then
|
|
1340
|
-
____exports.checkBuffs
|
|
1571
|
+
Timer:run(____exports.checkBuffs, source, false)
|
|
1341
1572
|
end
|
|
1342
|
-
____exports.checkBuffs
|
|
1573
|
+
Timer:run(____exports.checkBuffs, target, false)
|
|
1343
1574
|
end
|
|
1344
1575
|
)
|
|
1576
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1577
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1578
|
+
end)
|
|
1579
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1580
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1581
|
+
end)
|
|
1345
1582
|
end)(Buff)
|
|
1346
1583
|
return ____exports
|