warscript 0.0.1-dev.3eed609 → 0.0.1-dev.3f0a5ea
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 +16 -2
- package/core/types/frame.lua +128 -67
- 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/missile.lua +8 -7
- 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/tileCell.d.ts +7 -2
- package/core/types/tileCell.lua +11 -0
- 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 +706 -7
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/ability-type-extended-tooltip.d.ts +8 -0
- package/engine/ability-type-extended-tooltip.lua +44 -0
- package/engine/behavior.d.ts +4 -2
- package/engine/behavior.lua +69 -11
- package/engine/behaviour/ability/apply-buff.lua +4 -4
- 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.d.ts +14 -0
- package/engine/behaviour/ability/emulate-impact.lua +79 -5
- package/engine/behaviour/ability/instant-impact.d.ts +12 -1
- package/engine/behaviour/ability/instant-impact.lua +17 -2
- 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 +19 -6
- package/engine/behaviour/ability.lua +120 -9
- 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 +103 -55
- package/engine/buff.lua +486 -270
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +7 -0
- package/engine/internal/ability.lua +65 -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/object-data/returned-melee-damage-factor.d.ts +2 -0
- package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
- package/engine/internal/unit/ability.lua +16 -0
- 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 +17 -0
- package/engine/internal/unit/bonus.lua +113 -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/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 +73 -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 +96 -68
- package/engine/internal/unit-missile-launch.lua +25 -18
- package/engine/internal/unit.d.ts +4 -19
- package/engine/internal/unit.lua +132 -221
- package/engine/lightning.lua +4 -4
- package/engine/local-client.d.ts +27 -1
- package/engine/local-client.lua +298 -58
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
- package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
- package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
- package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-type.lua +26 -0
- package/engine/object-data/auxiliary/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/barrage.d.ts +12 -0
- package/engine/object-data/entry/ability-type/barrage.lua +52 -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.lua +2 -2
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
- package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
- package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
- package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
- package/engine/object-data/entry/ability-type/channel.lua +3 -3
- 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/exhume-corpses.d.ts +14 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
- package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
- package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
- package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
- package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
- package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
- package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
- package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
- package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
- package/engine/object-data/entry/ability-type/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/rain-of-fire.d.ts +7 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
- package/engine/object-data/entry/ability-type/resolve.lua +39 -0
- package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
- package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
- package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
- package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
- package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
- package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
- package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
- package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
- package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
- package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
- package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
- package/engine/object-data/entry/ability-type/talents.lua +27 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
- package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
- package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
- package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
- package/engine/object-data/entry/ability-type/warcry.lua +26 -0
- package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
- package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
- package/engine/object-data/entry/ability-type.d.ts +35 -8
- package/engine/object-data/entry/ability-type.lua +299 -11
- package/engine/object-data/entry/buff-type/applicable.lua +122 -111
- 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 +32 -2
- package/engine/object-data/entry/destructible-type.lua +181 -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 +57 -2
- package/engine/object-data/entry/unit-type.lua +412 -64
- 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/buff-type.d.ts +45 -0
- package/engine/standard/entries/buff-type.lua +43 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/lightning-type.d.ts +42 -15
- package/engine/standard/entries/lightning-type.lua +0 -14
- package/engine/standard/entries/unit-type.d.ts +5 -0
- package/engine/standard/entries/unit-type.lua +5 -0
- package/engine/standard/fields/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 +11 -5
- package/engine/standard/fields/unit.lua +13 -4
- package/engine/text-tag.d.ts +17 -1
- package/engine/text-tag.lua +77 -40
- 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/arrays.d.ts +7 -1
- package/utility/arrays.lua +17 -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
|
@@ -14,6 +14,7 @@ local Unit = ____unit.Unit
|
|
|
14
14
|
local ____applicable = require("engine.object-data.entry.buff-type.applicable")
|
|
15
15
|
local internalApplyBuff = ____applicable.internalApplyBuff
|
|
16
16
|
local removeBuff = ____applicable.removeBuff
|
|
17
|
+
local removeBuffApplicator = ____applicable.removeBuffApplicator
|
|
17
18
|
local ____ability = require("engine.internal.ability")
|
|
18
19
|
local Ability = ____ability.Ability
|
|
19
20
|
local UnitAbility = ____ability.UnitAbility
|
|
@@ -42,6 +43,7 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
42
43
|
local ____unit = require("engine.behaviour.unit")
|
|
43
44
|
local UnitBehavior = ____unit.UnitBehavior
|
|
44
45
|
local ____arrays = require("utility.arrays")
|
|
46
|
+
local emptyArray = ____arrays.emptyArray
|
|
45
47
|
local forEach = ____arrays.forEach
|
|
46
48
|
local ____event = require("event")
|
|
47
49
|
local Event = ____event.Event
|
|
@@ -55,6 +57,11 @@ local ____ability = require("engine.standard.fields.ability")
|
|
|
55
57
|
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
56
58
|
local ____ability = require("engine.behaviour.ability")
|
|
57
59
|
local AbilityBehavior = ____ability.AbilityBehavior
|
|
60
|
+
local ____records = require("utility.records")
|
|
61
|
+
local sortedKeysUnnested = ____records.sortedKeysUnnested
|
|
62
|
+
local ____sound = require("core.types.sound")
|
|
63
|
+
local Sound3D = ____sound.Sound3D
|
|
64
|
+
local SoundSettings = ____sound.SoundSettings
|
|
58
65
|
local getUnitAbility = BlzGetUnitAbility
|
|
59
66
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
60
67
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -100,13 +107,16 @@ local buffParametersKeys = {
|
|
|
100
107
|
damageIncrease = true,
|
|
101
108
|
damageIncreaseFactor = true,
|
|
102
109
|
armorIncrease = true,
|
|
103
|
-
|
|
110
|
+
maxHealthIncrease = true,
|
|
111
|
+
maxManaIncrease = true,
|
|
104
112
|
attackSpeedIncreaseFactor = true,
|
|
105
113
|
movementSpeedIncreaseFactor = true,
|
|
114
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
106
115
|
evasionProbability = true,
|
|
107
116
|
missProbability = true,
|
|
108
117
|
damageFactor = true,
|
|
109
118
|
receivedDamageFactor = true,
|
|
119
|
+
returnedMeleeDamageFactor = true,
|
|
110
120
|
receivedMagicDamageFactor = true,
|
|
111
121
|
durationIncreaseOnAutoAttack = true,
|
|
112
122
|
maximumDuration = true,
|
|
@@ -122,7 +132,11 @@ local buffParametersKeys = {
|
|
|
122
132
|
maximumAutoAttackCount = true,
|
|
123
133
|
maximumDamageDealtEventCount = true,
|
|
124
134
|
maximumDamageReceivedEventCount = true,
|
|
135
|
+
absorbedDamageFactor = true,
|
|
136
|
+
maximumDamageAbsorbed = true,
|
|
137
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
125
138
|
uniqueGroup = true,
|
|
139
|
+
destructionSoundPresetId = true,
|
|
126
140
|
damageOnExpiration = true,
|
|
127
141
|
healingOnExpiration = true,
|
|
128
142
|
killsOnExpiration = true,
|
|
@@ -178,6 +192,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
178
192
|
end
|
|
179
193
|
end
|
|
180
194
|
local buffBooleanParameters = {
|
|
195
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
181
196
|
"turnsIntoGhost",
|
|
182
197
|
"stuns",
|
|
183
198
|
"ignoresStunImmunity",
|
|
@@ -190,10 +205,14 @@ local buffNumberParameters = {
|
|
|
190
205
|
"durationIncreaseOnAutoAttack",
|
|
191
206
|
"attackSpeedIncreaseFactor",
|
|
192
207
|
"movementSpeedIncreaseFactor",
|
|
208
|
+
"manaRegenerationRateIncreaseFactor",
|
|
193
209
|
"evasionProbability",
|
|
194
210
|
"armorIncrease",
|
|
211
|
+
"maxHealthIncrease",
|
|
212
|
+
"maxManaIncrease",
|
|
195
213
|
"damageFactor",
|
|
196
214
|
"receivedDamageFactor",
|
|
215
|
+
"returnedMeleeDamageFactor",
|
|
197
216
|
"maximumAutoAttackCount",
|
|
198
217
|
"maximumDamageDealtEventCount",
|
|
199
218
|
"maximumDamageReceivedEventCount",
|
|
@@ -205,6 +224,8 @@ local buffNumberParameters = {
|
|
|
205
224
|
"healingOverDuration",
|
|
206
225
|
"damageOnExpiration",
|
|
207
226
|
"healingOnExpiration",
|
|
227
|
+
"absorbedDamageFactor",
|
|
228
|
+
"maximumDamageAbsorbed",
|
|
208
229
|
"abilityCooldownFactor"
|
|
209
230
|
}
|
|
210
231
|
local unsuccessfulApplicationMarker = {}
|
|
@@ -240,17 +261,21 @@ local function destroyBuff(buff)
|
|
|
240
261
|
buff:destroy()
|
|
241
262
|
end
|
|
242
263
|
local function expireBuff(buff)
|
|
243
|
-
|
|
244
|
-
|
|
264
|
+
if buff.isDestroyed or buff[100] ~= 1 then
|
|
265
|
+
return
|
|
266
|
+
end
|
|
267
|
+
buff[100] = 2
|
|
268
|
+
local remainingDamageOverDuration = buff[114] or 0
|
|
269
|
+
local remainingHealingOverDuration = buff[114] or 0
|
|
245
270
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
246
271
|
buff:flashSpecialEffect()
|
|
247
272
|
if remainingDamageOverDuration ~= 0 then
|
|
248
273
|
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
249
|
-
buff[
|
|
274
|
+
buff[114] = nil
|
|
250
275
|
end
|
|
251
276
|
if remainingHealingOverDuration ~= 0 then
|
|
252
277
|
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
253
|
-
buff[
|
|
278
|
+
buff[119] = nil
|
|
254
279
|
end
|
|
255
280
|
end
|
|
256
281
|
Timer:run(destroyBuff, buff)
|
|
@@ -258,8 +283,8 @@ local function expireBuff(buff)
|
|
|
258
283
|
end
|
|
259
284
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
260
285
|
buffDamageIntervalTimerCallback(buff)
|
|
261
|
-
local timer = buff[
|
|
262
|
-
local damageInterval = buff[
|
|
286
|
+
local timer = buff[115]
|
|
287
|
+
local damageInterval = buff[113]
|
|
263
288
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
264
289
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
265
290
|
end
|
|
@@ -267,43 +292,43 @@ end
|
|
|
267
292
|
buffDamageIntervalTimerCallback = function(buff)
|
|
268
293
|
buff:flashSpecialEffect()
|
|
269
294
|
local source = buff[102] or buff[101]
|
|
270
|
-
local remainingDamageOverDuration = buff[
|
|
295
|
+
local remainingDamageOverDuration = buff[114] or 0
|
|
271
296
|
if remainingDamageOverDuration ~= 0 then
|
|
272
|
-
local damageInterval = buff[
|
|
297
|
+
local damageInterval = buff[113] or 0
|
|
273
298
|
if damageInterval ~= 0 then
|
|
274
299
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
275
300
|
source:damageTarget(buff[101], damage)
|
|
276
|
-
buff[
|
|
301
|
+
buff[114] = remainingDamageOverDuration - damage
|
|
277
302
|
end
|
|
278
303
|
end
|
|
279
|
-
local damagePerInterval = buff[
|
|
304
|
+
local damagePerInterval = buff[112] or 0
|
|
280
305
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
281
306
|
source:damageTarget(buff[101], damagePerInterval)
|
|
282
307
|
end
|
|
283
308
|
end
|
|
284
309
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
285
310
|
buffHealingIntervalTimerCallback(buff)
|
|
286
|
-
local timer = buff[
|
|
287
|
-
local healingInterval = buff[
|
|
311
|
+
local timer = buff[120]
|
|
312
|
+
local healingInterval = buff[118]
|
|
288
313
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
289
314
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
290
315
|
end
|
|
291
316
|
end
|
|
292
317
|
buffHealingIntervalTimerCallback = function(buff)
|
|
293
|
-
if buff[
|
|
318
|
+
if buff[118] ~= buff[113] then
|
|
294
319
|
buff:flashSpecialEffect()
|
|
295
320
|
end
|
|
296
321
|
local source = buff[102] or buff[101]
|
|
297
|
-
local remainingHealingOverDuration = buff[
|
|
322
|
+
local remainingHealingOverDuration = buff[119] or 0
|
|
298
323
|
if remainingHealingOverDuration ~= 0 then
|
|
299
|
-
local healingInterval = buff[
|
|
324
|
+
local healingInterval = buff[118] or 0
|
|
300
325
|
if healingInterval ~= 0 then
|
|
301
326
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
302
327
|
source:healTarget(buff[101], healing)
|
|
303
|
-
buff[
|
|
328
|
+
buff[119] = remainingHealingOverDuration - healing
|
|
304
329
|
end
|
|
305
330
|
end
|
|
306
|
-
local healingPerInterval = buff[
|
|
331
|
+
local healingPerInterval = buff[117] or 0
|
|
307
332
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
308
333
|
source:healTarget(buff[101], healingPerInterval)
|
|
309
334
|
end
|
|
@@ -383,14 +408,15 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
383
408
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
384
409
|
if missProbability ~= nil then
|
|
385
410
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
386
|
-
self[
|
|
411
|
+
self[147] = missProbability
|
|
387
412
|
end
|
|
388
413
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
389
414
|
if buffByTypeId == nil then
|
|
390
415
|
buffByTypeId = {}
|
|
391
416
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
392
417
|
end
|
|
393
|
-
|
|
418
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
419
|
+
local ____opt_15 = self.previousBuff
|
|
394
420
|
if ____opt_15 ~= nil then
|
|
395
421
|
____opt_15:destroy()
|
|
396
422
|
end
|
|
@@ -427,17 +453,18 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
427
453
|
self[102] = source
|
|
428
454
|
self[103] = duration or 0
|
|
429
455
|
self[104] = uniqueGroup
|
|
430
|
-
self[105] =
|
|
431
|
-
self[106] = BlzGetAbilityStringLevelField(self.handle,
|
|
456
|
+
self[105] = parameters and parameters.destructionSoundPresetId or defaultParameters and defaultParameters.destructionSoundPresetId
|
|
457
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
458
|
+
self[107] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
432
459
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
433
460
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
434
|
-
local
|
|
435
|
-
local
|
|
436
|
-
local
|
|
437
|
-
if
|
|
438
|
-
|
|
461
|
+
local ____ability_28 = ability
|
|
462
|
+
local ____level_29 = level
|
|
463
|
+
local ____temp_27 = parameters and parameters[buffBooleanParameter]
|
|
464
|
+
if ____temp_27 == nil then
|
|
465
|
+
____temp_27 = defaultParameters[buffBooleanParameter]
|
|
439
466
|
end
|
|
440
|
-
if resolveBooleanValue(
|
|
467
|
+
if resolveBooleanValue(____ability_28, ____level_29, ____temp_27) then
|
|
441
468
|
self[buffBooleanParameter] = true
|
|
442
469
|
end
|
|
443
470
|
end
|
|
@@ -453,11 +480,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
453
480
|
end
|
|
454
481
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
455
482
|
if maximumDuration ~= nil then
|
|
456
|
-
self[
|
|
483
|
+
self[109] = resolveNumberValue(ability, level, maximumDuration)
|
|
457
484
|
end
|
|
458
485
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
459
486
|
if maximumRemainingDuration ~= nil then
|
|
460
|
-
self[
|
|
487
|
+
self[110] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
461
488
|
end
|
|
462
489
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
463
490
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -466,24 +493,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
466
493
|
abilityTypeIds = {}
|
|
467
494
|
self._abilityTypeIds = abilityTypeIds
|
|
468
495
|
end
|
|
469
|
-
for
|
|
496
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
497
|
+
local abilityParameters = checkNotNull(parametersAbilityTypeIds[abilityTypeId])
|
|
470
498
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
471
499
|
if addedAbility ~= nil then
|
|
472
500
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
473
501
|
_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
|
|
502
|
+
if abilityParameters.isButtonVisible == false then
|
|
503
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
504
|
+
end
|
|
505
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
506
|
+
field[1]:setValue(
|
|
507
|
+
addedAbility,
|
|
508
|
+
resolveNumberValue(ability, level, field[2])
|
|
509
|
+
)
|
|
485
510
|
end
|
|
486
|
-
abilityTypeIds[
|
|
511
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
487
512
|
end
|
|
488
513
|
end
|
|
489
514
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -495,18 +520,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
495
520
|
self._behaviors = behaviors
|
|
496
521
|
end
|
|
497
522
|
end
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
if
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
523
|
+
if parameters ~= nil then
|
|
524
|
+
local additionalParameters = {}
|
|
525
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
526
|
+
if not buffParametersKeys[key] then
|
|
527
|
+
if ability then
|
|
528
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
529
|
+
else
|
|
530
|
+
additionalParameters[key] = parameters[key]
|
|
531
|
+
end
|
|
505
532
|
end
|
|
506
533
|
end
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
534
|
+
if (next(additionalParameters)) ~= nil then
|
|
535
|
+
self.parameters = additionalParameters
|
|
536
|
+
end
|
|
510
537
|
end
|
|
511
538
|
end
|
|
512
539
|
if duration ~= nil and duration > 0 then
|
|
@@ -520,7 +547,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
520
547
|
end
|
|
521
548
|
function Buff.prototype.onAbilityGained(self, ability)
|
|
522
549
|
if __TS__InstanceOf(ability, UnitAbility) then
|
|
523
|
-
local abilityCooldownModifier = self[
|
|
550
|
+
local abilityCooldownModifier = self[149]
|
|
524
551
|
if abilityCooldownModifier then
|
|
525
552
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
526
553
|
end
|
|
@@ -528,57 +555,67 @@ function Buff.prototype.onAbilityGained(self, ability)
|
|
|
528
555
|
end
|
|
529
556
|
function Buff.prototype.onAbilityLost(self, ability)
|
|
530
557
|
if __TS__InstanceOf(ability, UnitAbility) then
|
|
531
|
-
local abilityCooldownModifier = self[
|
|
558
|
+
local abilityCooldownModifier = self[149]
|
|
532
559
|
if abilityCooldownModifier then
|
|
533
560
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
534
561
|
end
|
|
535
562
|
end
|
|
536
563
|
end
|
|
537
564
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
565
|
+
self:flash(
|
|
566
|
+
self[106],
|
|
567
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin",
|
|
568
|
+
widgetOrXOrParametersOrDuration,
|
|
569
|
+
yOrParametersOrDuration,
|
|
570
|
+
parametersOrDuration
|
|
571
|
+
)
|
|
572
|
+
end
|
|
573
|
+
function Buff.prototype.flashSpecialEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
574
|
+
self:flash(
|
|
575
|
+
self[107],
|
|
576
|
+
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin",
|
|
577
|
+
widgetOrXOrParametersOrDuration,
|
|
578
|
+
yOrParametersOrDuration,
|
|
579
|
+
parametersOrDuration
|
|
580
|
+
)
|
|
581
|
+
end
|
|
582
|
+
function Buff.prototype.flash(self, modelPath, attachmentPoint, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
538
583
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
539
|
-
Effect:flash(
|
|
584
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
540
585
|
else
|
|
541
586
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
542
|
-
local
|
|
543
|
-
local
|
|
544
|
-
local
|
|
545
|
-
|
|
546
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
547
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
548
|
-
)
|
|
549
|
-
local ____isWidgetProvided_38
|
|
587
|
+
local ____Effect_44 = Effect
|
|
588
|
+
local ____Effect_flash_45 = Effect.flash
|
|
589
|
+
local ____array_43 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
590
|
+
local ____isWidgetProvided_42
|
|
550
591
|
if isWidgetProvided then
|
|
551
|
-
|
|
592
|
+
____isWidgetProvided_42 = yOrParametersOrDuration
|
|
552
593
|
else
|
|
553
|
-
|
|
594
|
+
____isWidgetProvided_42 = widgetOrXOrParametersOrDuration
|
|
554
595
|
end
|
|
555
|
-
__TS__SparseArrayPush(
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
__TS__SparseArraySpread(
|
|
596
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
597
|
+
____Effect_flash_45(
|
|
598
|
+
____Effect_44,
|
|
599
|
+
__TS__SparseArraySpread(____array_43)
|
|
559
600
|
)
|
|
560
601
|
end
|
|
561
602
|
end
|
|
562
|
-
function Buff.prototype.
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
603
|
+
function Buff.prototype.expire(self)
|
|
604
|
+
expireBuff(self)
|
|
605
|
+
end
|
|
606
|
+
function Buff.prototype.dispel(self, source)
|
|
607
|
+
if self.isDestroyed or self[100] ~= 1 then
|
|
608
|
+
return
|
|
609
|
+
end
|
|
610
|
+
self[100] = 2
|
|
611
|
+
do
|
|
612
|
+
pcall(function()
|
|
613
|
+
self:onDispel(source)
|
|
614
|
+
end)
|
|
615
|
+
do
|
|
616
|
+
self:destroy()
|
|
617
|
+
end
|
|
576
618
|
end
|
|
577
|
-
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
578
|
-
____Effect_flash_45(
|
|
579
|
-
____Effect_44,
|
|
580
|
-
__TS__SparseArraySpread(____array_43)
|
|
581
|
-
)
|
|
582
619
|
end
|
|
583
620
|
function Buff.prototype.onCreate(self)
|
|
584
621
|
end
|
|
@@ -586,19 +623,25 @@ function Buff.prototype.onDestroy(self)
|
|
|
586
623
|
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
587
624
|
self[100] = 2
|
|
588
625
|
local unit = self._unit
|
|
626
|
+
local destructionSoundPresetId = self[105]
|
|
627
|
+
if destructionSoundPresetId ~= nil then
|
|
628
|
+
Sound3D:playFromLabel(destructionSoundPresetId, SoundSettings.Ability, unit)
|
|
629
|
+
end
|
|
589
630
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
590
631
|
removeBuff(unit.handle, self.typeId)
|
|
632
|
+
else
|
|
633
|
+
removeBuffApplicator(unit.handle, self.typeId)
|
|
591
634
|
end
|
|
592
635
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
593
|
-
local healingIntervalTimer = self[
|
|
636
|
+
local healingIntervalTimer = self[120]
|
|
594
637
|
if healingIntervalTimer ~= nil then
|
|
595
638
|
healingIntervalTimer:destroy()
|
|
596
|
-
self[
|
|
639
|
+
self[120] = nil
|
|
597
640
|
end
|
|
598
|
-
local damageIntervalTimer = self[
|
|
641
|
+
local damageIntervalTimer = self[115]
|
|
599
642
|
if damageIntervalTimer ~= nil then
|
|
600
643
|
damageIntervalTimer:destroy()
|
|
601
|
-
self[
|
|
644
|
+
self[115] = nil
|
|
602
645
|
end
|
|
603
646
|
if self._timer ~= nil then
|
|
604
647
|
self._timer:destroy()
|
|
@@ -608,29 +651,29 @@ function Buff.prototype.onDestroy(self)
|
|
|
608
651
|
behavior:destroy()
|
|
609
652
|
end
|
|
610
653
|
end
|
|
611
|
-
local previousAbilityCooldownModifier = self[
|
|
654
|
+
local previousAbilityCooldownModifier = self[149]
|
|
612
655
|
if previousAbilityCooldownModifier then
|
|
613
656
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
614
657
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
615
658
|
end
|
|
616
659
|
end
|
|
617
|
-
if self[
|
|
660
|
+
if self[144] then
|
|
618
661
|
unit:decrementInvulnerabilityCounter()
|
|
619
662
|
end
|
|
620
|
-
if self[
|
|
663
|
+
if self[143] then
|
|
621
664
|
unit:decrementDisableAutoAttackCounter()
|
|
622
665
|
end
|
|
623
|
-
if self[
|
|
624
|
-
if self[
|
|
666
|
+
if self[141] then
|
|
667
|
+
if self[142] then
|
|
625
668
|
unit:decrementForceStunCounter()
|
|
626
669
|
end
|
|
627
670
|
unit:decrementStunCounter()
|
|
628
671
|
end
|
|
629
|
-
if self[
|
|
672
|
+
if self[140] then
|
|
630
673
|
unit:decrementGhostCounter()
|
|
631
674
|
end
|
|
632
675
|
if self._abilityTypeIds ~= nil then
|
|
633
|
-
for abilityTypeId in
|
|
676
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
634
677
|
unit:removeAbility(abilityTypeId)
|
|
635
678
|
end
|
|
636
679
|
end
|
|
@@ -670,42 +713,44 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
670
713
|
end
|
|
671
714
|
return nil
|
|
672
715
|
end
|
|
716
|
+
function Buff.prototype.onDispel(self, source)
|
|
717
|
+
end
|
|
673
718
|
function Buff.prototype.onExpiration(self)
|
|
674
719
|
local unit = self.unit
|
|
675
|
-
if self[120] ~= nil then
|
|
676
|
-
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
677
|
-
end
|
|
678
720
|
if self[121] ~= nil then
|
|
679
|
-
(self[102] or unit):
|
|
721
|
+
(self[102] or unit):damageTarget(unit, self[121] or 0)
|
|
680
722
|
end
|
|
681
|
-
if self[
|
|
723
|
+
if self[122] ~= nil then
|
|
724
|
+
(self[102] or unit):healTarget(unit, self[121] or 0)
|
|
725
|
+
end
|
|
726
|
+
if self[146] then
|
|
682
727
|
unit:explode()
|
|
683
|
-
elseif self[
|
|
728
|
+
elseif self[145] then
|
|
684
729
|
unit:kill()
|
|
685
730
|
end
|
|
686
731
|
end
|
|
687
732
|
function Buff.prototype.onDeath(self, source)
|
|
688
733
|
local unit = self.unit
|
|
689
|
-
if self[
|
|
734
|
+
if self[123] ~= nil then
|
|
690
735
|
damageArea(
|
|
691
736
|
self[102] or unit,
|
|
692
|
-
self[
|
|
737
|
+
self[123],
|
|
693
738
|
unit.x,
|
|
694
739
|
unit.y,
|
|
740
|
+
self[125] or 0,
|
|
695
741
|
self[124] or 0,
|
|
696
|
-
self[
|
|
742
|
+
self[127] or 0,
|
|
697
743
|
self[126] or 0,
|
|
698
|
-
self[
|
|
699
|
-
self[128] or 0
|
|
700
|
-
self[127] or 0
|
|
744
|
+
self[129] or 0,
|
|
745
|
+
self[128] or 0
|
|
701
746
|
)
|
|
702
747
|
end
|
|
703
748
|
end
|
|
704
749
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
705
750
|
if event.isAttack then
|
|
706
|
-
if self[
|
|
707
|
-
local durationIncrease = self[
|
|
708
|
-
local maximumDuration = self[
|
|
751
|
+
if self[108] ~= nil then
|
|
752
|
+
local durationIncrease = self[108]
|
|
753
|
+
local maximumDuration = self[109] or 0
|
|
709
754
|
if maximumDuration > 0 then
|
|
710
755
|
durationIncrease = min(
|
|
711
756
|
durationIncrease,
|
|
@@ -713,31 +758,43 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
713
758
|
)
|
|
714
759
|
end
|
|
715
760
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
716
|
-
local maximumRemainingDuration = self[
|
|
761
|
+
local maximumRemainingDuration = self[110] or 0
|
|
717
762
|
if maximumRemainingDuration > 0 then
|
|
718
763
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
719
764
|
end
|
|
720
765
|
self.remainingDuration = remainingDuration
|
|
721
766
|
end
|
|
722
|
-
local autoAttackCount = (self[
|
|
723
|
-
self[
|
|
724
|
-
if autoAttackCount == self[
|
|
767
|
+
local autoAttackCount = (self[130] or 0) + 1
|
|
768
|
+
self[130] = autoAttackCount
|
|
769
|
+
if autoAttackCount == self[131] then
|
|
725
770
|
self:destroy()
|
|
726
771
|
end
|
|
727
772
|
end
|
|
728
773
|
if event.originalAmount ~= 0 then
|
|
729
|
-
local damageDealtEventCount = (self[
|
|
730
|
-
self[
|
|
731
|
-
if damageDealtEventCount == self[
|
|
774
|
+
local damageDealtEventCount = (self[132] or 0) + 1
|
|
775
|
+
self[132] = damageDealtEventCount
|
|
776
|
+
if damageDealtEventCount == self[133] then
|
|
732
777
|
self:destroy()
|
|
733
778
|
end
|
|
734
779
|
end
|
|
735
780
|
end
|
|
736
781
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
737
782
|
if event.originalAmount ~= 0 then
|
|
738
|
-
local
|
|
739
|
-
|
|
740
|
-
|
|
783
|
+
local absorbedDamage = min(event.amount * (self[136] or 1), (self[137] or 0) - (self[138] or 0))
|
|
784
|
+
if absorbedDamage > 0 then
|
|
785
|
+
event.amount = event.amount - absorbedDamage
|
|
786
|
+
self[138] = (self[138] or 0) + absorbedDamage
|
|
787
|
+
local ____self__139_48 = self[139]
|
|
788
|
+
if ____self__139_48 == nil then
|
|
789
|
+
____self__139_48 = true
|
|
790
|
+
end
|
|
791
|
+
if ____self__139_48 and self[138] >= (self[137] or 0) then
|
|
792
|
+
self:destroy()
|
|
793
|
+
end
|
|
794
|
+
end
|
|
795
|
+
local damageReceivedEventCount = (self[134] or 0) + 1
|
|
796
|
+
self[134] = damageReceivedEventCount
|
|
797
|
+
if damageReceivedEventCount == self[135] then
|
|
741
798
|
self:destroy()
|
|
742
799
|
end
|
|
743
800
|
end
|
|
@@ -764,13 +821,13 @@ __TS__SetDescriptor(
|
|
|
764
821
|
"remainingDamageOverDuration",
|
|
765
822
|
{
|
|
766
823
|
get = function(self)
|
|
767
|
-
return self[
|
|
824
|
+
return self[114] or 0
|
|
768
825
|
end,
|
|
769
826
|
set = function(self, remainingDamageOverDuration)
|
|
770
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
771
|
-
self[
|
|
772
|
-
local damageOverDuration = (self[
|
|
773
|
-
self[
|
|
827
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[114] or 0)
|
|
828
|
+
self[114] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
829
|
+
local damageOverDuration = (self[111] or 0) + remainingDamageOverDurationDelta
|
|
830
|
+
self[111] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
774
831
|
end
|
|
775
832
|
},
|
|
776
833
|
true
|
|
@@ -780,13 +837,13 @@ __TS__SetDescriptor(
|
|
|
780
837
|
"damageOverDuration",
|
|
781
838
|
{
|
|
782
839
|
get = function(self)
|
|
783
|
-
return self[
|
|
840
|
+
return self[111] or 0
|
|
784
841
|
end,
|
|
785
842
|
set = function(self, damageOverDuration)
|
|
786
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
787
|
-
self[
|
|
788
|
-
local remainingDamageOverDuration = (self[
|
|
789
|
-
self[
|
|
843
|
+
local damageOverDurationDelta = damageOverDuration - (self[111] or 0)
|
|
844
|
+
self[111] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
845
|
+
local remainingDamageOverDuration = (self[114] or 0) + damageOverDurationDelta
|
|
846
|
+
self[114] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
790
847
|
end
|
|
791
848
|
},
|
|
792
849
|
true
|
|
@@ -796,10 +853,10 @@ __TS__SetDescriptor(
|
|
|
796
853
|
"damagePerInterval",
|
|
797
854
|
{
|
|
798
855
|
get = function(self)
|
|
799
|
-
return self[
|
|
856
|
+
return self[112] or 0
|
|
800
857
|
end,
|
|
801
858
|
set = function(self, damagePerInterval)
|
|
802
|
-
self[
|
|
859
|
+
self[112] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
803
860
|
end
|
|
804
861
|
},
|
|
805
862
|
true
|
|
@@ -809,25 +866,25 @@ __TS__SetDescriptor(
|
|
|
809
866
|
"damageInterval",
|
|
810
867
|
{
|
|
811
868
|
get = function(self)
|
|
812
|
-
return self[
|
|
869
|
+
return self[113] or 0
|
|
813
870
|
end,
|
|
814
871
|
set = function(self, damageInterval)
|
|
815
872
|
if damageInterval <= 0 then
|
|
816
|
-
self[
|
|
817
|
-
local timer = self[
|
|
873
|
+
self[113] = damageInterval ~= 0 and damageInterval or nil
|
|
874
|
+
local timer = self[115]
|
|
818
875
|
if timer ~= nil then
|
|
819
876
|
timer:destroy()
|
|
820
|
-
self[
|
|
877
|
+
self[115] = nil
|
|
821
878
|
end
|
|
822
879
|
return
|
|
823
880
|
end
|
|
824
|
-
self[
|
|
825
|
-
local
|
|
826
|
-
local elapsed =
|
|
827
|
-
local timer = self[
|
|
881
|
+
self[113] = damageInterval
|
|
882
|
+
local ____opt_49 = self._timer
|
|
883
|
+
local elapsed = ____opt_49 and ____opt_49.elapsed or 0
|
|
884
|
+
local timer = self[115]
|
|
828
885
|
if timer == nil then
|
|
829
886
|
timer = Timer:create()
|
|
830
|
-
self[
|
|
887
|
+
self[115] = timer
|
|
831
888
|
end
|
|
832
889
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
833
890
|
if initialDelay == damageInterval then
|
|
@@ -844,13 +901,13 @@ __TS__SetDescriptor(
|
|
|
844
901
|
"remainingHealingOverDuration",
|
|
845
902
|
{
|
|
846
903
|
get = function(self)
|
|
847
|
-
return self[
|
|
904
|
+
return self[119] or 0
|
|
848
905
|
end,
|
|
849
906
|
set = function(self, remainingHealingOverDuration)
|
|
850
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
851
|
-
self[
|
|
852
|
-
local healingOverDuration = (self[
|
|
853
|
-
self[
|
|
907
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[119] or 0)
|
|
908
|
+
self[114] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
909
|
+
local healingOverDuration = (self[116] or 0) + remainingHealingOverDurationDelta
|
|
910
|
+
self[116] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
854
911
|
end
|
|
855
912
|
},
|
|
856
913
|
true
|
|
@@ -860,13 +917,13 @@ __TS__SetDescriptor(
|
|
|
860
917
|
"healingOverDuration",
|
|
861
918
|
{
|
|
862
919
|
get = function(self)
|
|
863
|
-
return self[
|
|
920
|
+
return self[116] or 0
|
|
864
921
|
end,
|
|
865
922
|
set = function(self, healingOverDuration)
|
|
866
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
867
|
-
self[
|
|
868
|
-
local remainingHealingOverDuration = (self[
|
|
869
|
-
self[
|
|
923
|
+
local healingOverDurationDelta = healingOverDuration - (self[116] or 0)
|
|
924
|
+
self[116] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
925
|
+
local remainingHealingOverDuration = (self[119] or 0) + healingOverDurationDelta
|
|
926
|
+
self[119] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
870
927
|
end
|
|
871
928
|
},
|
|
872
929
|
true
|
|
@@ -876,10 +933,10 @@ __TS__SetDescriptor(
|
|
|
876
933
|
"healingPerInterval",
|
|
877
934
|
{
|
|
878
935
|
get = function(self)
|
|
879
|
-
return self[
|
|
936
|
+
return self[117] or 0
|
|
880
937
|
end,
|
|
881
938
|
set = function(self, healingPerInterval)
|
|
882
|
-
self[
|
|
939
|
+
self[117] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
883
940
|
end
|
|
884
941
|
},
|
|
885
942
|
true
|
|
@@ -889,25 +946,25 @@ __TS__SetDescriptor(
|
|
|
889
946
|
"healingInterval",
|
|
890
947
|
{
|
|
891
948
|
get = function(self)
|
|
892
|
-
return self[
|
|
949
|
+
return self[118] or 0
|
|
893
950
|
end,
|
|
894
951
|
set = function(self, healingInterval)
|
|
895
952
|
if healingInterval <= 0 then
|
|
896
|
-
self[
|
|
897
|
-
local timer = self[
|
|
953
|
+
self[118] = healingInterval ~= 0 and healingInterval or nil
|
|
954
|
+
local timer = self[120]
|
|
898
955
|
if timer ~= nil then
|
|
899
956
|
timer:destroy()
|
|
900
|
-
self[
|
|
957
|
+
self[120] = nil
|
|
901
958
|
end
|
|
902
959
|
return
|
|
903
960
|
end
|
|
904
|
-
self[
|
|
905
|
-
local
|
|
906
|
-
local elapsed =
|
|
907
|
-
local timer = self[
|
|
961
|
+
self[118] = healingInterval
|
|
962
|
+
local ____opt_51 = self._timer
|
|
963
|
+
local elapsed = ____opt_51 and ____opt_51.elapsed or 0
|
|
964
|
+
local timer = self[120]
|
|
908
965
|
if timer == nil then
|
|
909
966
|
timer = Timer:create()
|
|
910
|
-
self[
|
|
967
|
+
self[120] = timer
|
|
911
968
|
end
|
|
912
969
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
913
970
|
if initialDelay == healingInterval then
|
|
@@ -924,10 +981,10 @@ __TS__SetDescriptor(
|
|
|
924
981
|
"damageOnExpiration",
|
|
925
982
|
{
|
|
926
983
|
get = function(self)
|
|
927
|
-
return self[
|
|
984
|
+
return self[121] or 0
|
|
928
985
|
end,
|
|
929
986
|
set = function(self, damageOnExpiration)
|
|
930
|
-
self[
|
|
987
|
+
self[121] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
931
988
|
end
|
|
932
989
|
},
|
|
933
990
|
true
|
|
@@ -937,10 +994,10 @@ __TS__SetDescriptor(
|
|
|
937
994
|
"healingOnExpiration",
|
|
938
995
|
{
|
|
939
996
|
get = function(self)
|
|
940
|
-
return self[
|
|
997
|
+
return self[122] or 0
|
|
941
998
|
end,
|
|
942
999
|
set = function(self, healingOnExpiration)
|
|
943
|
-
self[
|
|
1000
|
+
self[122] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
944
1001
|
end
|
|
945
1002
|
},
|
|
946
1003
|
true
|
|
@@ -971,6 +1028,19 @@ __TS__SetDescriptor(
|
|
|
971
1028
|
},
|
|
972
1029
|
true
|
|
973
1030
|
)
|
|
1031
|
+
__TS__SetDescriptor(
|
|
1032
|
+
Buff.prototype,
|
|
1033
|
+
"returnedMeleeDamageFactor",
|
|
1034
|
+
{
|
|
1035
|
+
get = function(self)
|
|
1036
|
+
return self:getUnitBonus(UnitBonusType.RETURNED_MELEE_DAMAGE_FACTOR)
|
|
1037
|
+
end,
|
|
1038
|
+
set = function(self, returnedMeleeDamageFactor)
|
|
1039
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.RETURNED_MELEE_DAMAGE_FACTOR, returnedMeleeDamageFactor)
|
|
1040
|
+
end
|
|
1041
|
+
},
|
|
1042
|
+
true
|
|
1043
|
+
)
|
|
974
1044
|
__TS__SetDescriptor(
|
|
975
1045
|
Buff.prototype,
|
|
976
1046
|
"armorIncrease",
|
|
@@ -984,24 +1054,50 @@ __TS__SetDescriptor(
|
|
|
984
1054
|
},
|
|
985
1055
|
true
|
|
986
1056
|
)
|
|
1057
|
+
__TS__SetDescriptor(
|
|
1058
|
+
Buff.prototype,
|
|
1059
|
+
"maxHealthIncrease",
|
|
1060
|
+
{
|
|
1061
|
+
get = function(self)
|
|
1062
|
+
return self:getUnitBonus(UnitBonusType.HEALTH)
|
|
1063
|
+
end,
|
|
1064
|
+
set = function(self, maxHealthIncrease)
|
|
1065
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.HEALTH, maxHealthIncrease)
|
|
1066
|
+
end
|
|
1067
|
+
},
|
|
1068
|
+
true
|
|
1069
|
+
)
|
|
1070
|
+
__TS__SetDescriptor(
|
|
1071
|
+
Buff.prototype,
|
|
1072
|
+
"maxManaIncrease",
|
|
1073
|
+
{
|
|
1074
|
+
get = function(self)
|
|
1075
|
+
return self:getUnitBonus(UnitBonusType.MANA)
|
|
1076
|
+
end,
|
|
1077
|
+
set = function(self, maxManaIncrease)
|
|
1078
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA, maxManaIncrease)
|
|
1079
|
+
end
|
|
1080
|
+
},
|
|
1081
|
+
true
|
|
1082
|
+
)
|
|
987
1083
|
__TS__SetDescriptor(
|
|
988
1084
|
Buff.prototype,
|
|
989
1085
|
"turnsIntoGhost",
|
|
990
1086
|
{
|
|
991
1087
|
get = function(self)
|
|
992
|
-
local
|
|
993
|
-
if
|
|
994
|
-
|
|
1088
|
+
local ____self__140_53 = self[140]
|
|
1089
|
+
if ____self__140_53 == nil then
|
|
1090
|
+
____self__140_53 = false
|
|
995
1091
|
end
|
|
996
|
-
return
|
|
1092
|
+
return ____self__140_53
|
|
997
1093
|
end,
|
|
998
1094
|
set = function(self, turnsIntoGhost)
|
|
999
|
-
if not turnsIntoGhost and self[
|
|
1095
|
+
if not turnsIntoGhost and self[140] then
|
|
1000
1096
|
self.object:decrementGhostCounter()
|
|
1001
|
-
self[
|
|
1002
|
-
elseif turnsIntoGhost and not self[
|
|
1097
|
+
self[140] = nil
|
|
1098
|
+
elseif turnsIntoGhost and not self[140] then
|
|
1003
1099
|
self.object:incrementGhostCounter()
|
|
1004
|
-
self[
|
|
1100
|
+
self[140] = true
|
|
1005
1101
|
end
|
|
1006
1102
|
end
|
|
1007
1103
|
},
|
|
@@ -1012,25 +1108,25 @@ __TS__SetDescriptor(
|
|
|
1012
1108
|
"stuns",
|
|
1013
1109
|
{
|
|
1014
1110
|
get = function(self)
|
|
1015
|
-
local
|
|
1016
|
-
if
|
|
1017
|
-
|
|
1111
|
+
local ____self__141_54 = self[141]
|
|
1112
|
+
if ____self__141_54 == nil then
|
|
1113
|
+
____self__141_54 = false
|
|
1018
1114
|
end
|
|
1019
|
-
return
|
|
1115
|
+
return ____self__141_54
|
|
1020
1116
|
end,
|
|
1021
1117
|
set = function(self, stuns)
|
|
1022
|
-
if not stuns and self[
|
|
1023
|
-
if self[
|
|
1118
|
+
if not stuns and self[141] then
|
|
1119
|
+
if self[142] then
|
|
1024
1120
|
self.object:decrementForceStunCounter()
|
|
1025
1121
|
end
|
|
1026
1122
|
self.object:decrementStunCounter()
|
|
1027
|
-
self[
|
|
1028
|
-
elseif stuns and not self[
|
|
1029
|
-
if self[
|
|
1123
|
+
self[141] = nil
|
|
1124
|
+
elseif stuns and not self[141] then
|
|
1125
|
+
if self[142] then
|
|
1030
1126
|
self.object:incrementForceStunCounter()
|
|
1031
1127
|
end
|
|
1032
1128
|
self.object:incrementStunCounter()
|
|
1033
|
-
self[
|
|
1129
|
+
self[141] = true
|
|
1034
1130
|
end
|
|
1035
1131
|
end
|
|
1036
1132
|
},
|
|
@@ -1041,23 +1137,23 @@ __TS__SetDescriptor(
|
|
|
1041
1137
|
"ignoresStunImmunity",
|
|
1042
1138
|
{
|
|
1043
1139
|
get = function(self)
|
|
1044
|
-
local
|
|
1045
|
-
if
|
|
1046
|
-
|
|
1140
|
+
local ____self__142_55 = self[142]
|
|
1141
|
+
if ____self__142_55 == nil then
|
|
1142
|
+
____self__142_55 = false
|
|
1047
1143
|
end
|
|
1048
|
-
return
|
|
1144
|
+
return ____self__142_55
|
|
1049
1145
|
end,
|
|
1050
1146
|
set = function(self, ignoresStunImmunity)
|
|
1051
|
-
if not ignoresStunImmunity and self[
|
|
1052
|
-
if self[
|
|
1147
|
+
if not ignoresStunImmunity and self[142] then
|
|
1148
|
+
if self[141] then
|
|
1053
1149
|
self.object:decrementForceStunCounter()
|
|
1054
1150
|
end
|
|
1055
|
-
self[
|
|
1056
|
-
elseif ignoresStunImmunity and not self[
|
|
1057
|
-
if self[
|
|
1151
|
+
self[142] = nil
|
|
1152
|
+
elseif ignoresStunImmunity and not self[142] then
|
|
1153
|
+
if self[141] then
|
|
1058
1154
|
self.object:incrementForceStunCounter()
|
|
1059
1155
|
end
|
|
1060
|
-
self[
|
|
1156
|
+
self[142] = true
|
|
1061
1157
|
end
|
|
1062
1158
|
end
|
|
1063
1159
|
},
|
|
@@ -1068,19 +1164,19 @@ __TS__SetDescriptor(
|
|
|
1068
1164
|
"disablesAutoAttack",
|
|
1069
1165
|
{
|
|
1070
1166
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1167
|
+
local ____self__143_56 = self[143]
|
|
1168
|
+
if ____self__143_56 == nil then
|
|
1169
|
+
____self__143_56 = false
|
|
1074
1170
|
end
|
|
1075
|
-
return
|
|
1171
|
+
return ____self__143_56
|
|
1076
1172
|
end,
|
|
1077
1173
|
set = function(self, disablesAutoAttack)
|
|
1078
|
-
if not disablesAutoAttack and self[
|
|
1174
|
+
if not disablesAutoAttack and self[143] then
|
|
1079
1175
|
self.object:decrementDisableAutoAttackCounter()
|
|
1080
|
-
self[
|
|
1081
|
-
elseif disablesAutoAttack and not self[
|
|
1176
|
+
self[143] = nil
|
|
1177
|
+
elseif disablesAutoAttack and not self[143] then
|
|
1082
1178
|
self.object:incrementDisableAutoAttackCounter()
|
|
1083
|
-
self[
|
|
1179
|
+
self[143] = true
|
|
1084
1180
|
end
|
|
1085
1181
|
end
|
|
1086
1182
|
},
|
|
@@ -1091,19 +1187,19 @@ __TS__SetDescriptor(
|
|
|
1091
1187
|
"providesInvulnerability",
|
|
1092
1188
|
{
|
|
1093
1189
|
get = function(self)
|
|
1094
|
-
local
|
|
1095
|
-
if
|
|
1096
|
-
|
|
1190
|
+
local ____self__144_57 = self[144]
|
|
1191
|
+
if ____self__144_57 == nil then
|
|
1192
|
+
____self__144_57 = false
|
|
1097
1193
|
end
|
|
1098
|
-
return
|
|
1194
|
+
return ____self__144_57
|
|
1099
1195
|
end,
|
|
1100
1196
|
set = function(self, providesInvulnerability)
|
|
1101
|
-
if not providesInvulnerability and self[
|
|
1197
|
+
if not providesInvulnerability and self[144] then
|
|
1102
1198
|
self.object:decrementInvulnerabilityCounter()
|
|
1103
|
-
self[
|
|
1104
|
-
elseif providesInvulnerability and not self[
|
|
1199
|
+
self[144] = nil
|
|
1200
|
+
elseif providesInvulnerability and not self[144] then
|
|
1105
1201
|
self.object:incrementInvulnerabilityCounter()
|
|
1106
|
-
self[
|
|
1202
|
+
self[144] = true
|
|
1107
1203
|
end
|
|
1108
1204
|
end
|
|
1109
1205
|
},
|
|
@@ -1114,17 +1210,17 @@ __TS__SetDescriptor(
|
|
|
1114
1210
|
"killsOnExpiration",
|
|
1115
1211
|
{
|
|
1116
1212
|
get = function(self)
|
|
1117
|
-
local
|
|
1118
|
-
if
|
|
1119
|
-
|
|
1213
|
+
local ____self__145_58 = self[145]
|
|
1214
|
+
if ____self__145_58 == nil then
|
|
1215
|
+
____self__145_58 = false
|
|
1120
1216
|
end
|
|
1121
|
-
return
|
|
1217
|
+
return ____self__145_58
|
|
1122
1218
|
end,
|
|
1123
1219
|
set = function(self, killsOnExpiration)
|
|
1124
|
-
if not killsOnExpiration and self[
|
|
1125
|
-
self[
|
|
1126
|
-
elseif killsOnExpiration and not self[
|
|
1127
|
-
self[
|
|
1220
|
+
if not killsOnExpiration and self[145] then
|
|
1221
|
+
self[145] = nil
|
|
1222
|
+
elseif killsOnExpiration and not self[145] then
|
|
1223
|
+
self[145] = true
|
|
1128
1224
|
end
|
|
1129
1225
|
end
|
|
1130
1226
|
},
|
|
@@ -1135,17 +1231,17 @@ __TS__SetDescriptor(
|
|
|
1135
1231
|
"explodesOnExpiration",
|
|
1136
1232
|
{
|
|
1137
1233
|
get = function(self)
|
|
1138
|
-
local
|
|
1139
|
-
if
|
|
1140
|
-
|
|
1234
|
+
local ____self__146_59 = self[146]
|
|
1235
|
+
if ____self__146_59 == nil then
|
|
1236
|
+
____self__146_59 = false
|
|
1141
1237
|
end
|
|
1142
|
-
return
|
|
1238
|
+
return ____self__146_59
|
|
1143
1239
|
end,
|
|
1144
1240
|
set = function(self, killsOnExpiration)
|
|
1145
|
-
if not killsOnExpiration and self[
|
|
1146
|
-
self[
|
|
1147
|
-
elseif killsOnExpiration and not self[
|
|
1148
|
-
self[
|
|
1241
|
+
if not killsOnExpiration and self[146] then
|
|
1242
|
+
self[146] = nil
|
|
1243
|
+
elseif killsOnExpiration and not self[146] then
|
|
1244
|
+
self[146] = true
|
|
1149
1245
|
end
|
|
1150
1246
|
end
|
|
1151
1247
|
},
|
|
@@ -1156,13 +1252,13 @@ __TS__SetDescriptor(
|
|
|
1156
1252
|
"maximumDamageDealtEventCount",
|
|
1157
1253
|
{
|
|
1158
1254
|
get = function(self)
|
|
1159
|
-
return self[
|
|
1255
|
+
return self[133] or 0
|
|
1160
1256
|
end,
|
|
1161
1257
|
set = function(self, maximumDamageDealtEventCount)
|
|
1162
1258
|
if maximumDamageDealtEventCount == 0 then
|
|
1163
|
-
self[
|
|
1259
|
+
self[133] = nil
|
|
1164
1260
|
else
|
|
1165
|
-
self[
|
|
1261
|
+
self[133] = maximumDamageDealtEventCount
|
|
1166
1262
|
end
|
|
1167
1263
|
end
|
|
1168
1264
|
},
|
|
@@ -1173,13 +1269,13 @@ __TS__SetDescriptor(
|
|
|
1173
1269
|
"maximumDamageReceivedEventCount",
|
|
1174
1270
|
{
|
|
1175
1271
|
get = function(self)
|
|
1176
|
-
return self[
|
|
1272
|
+
return self[135] or 0
|
|
1177
1273
|
end,
|
|
1178
1274
|
set = function(self, maximumDamageReceivedEventCount)
|
|
1179
1275
|
if maximumDamageReceivedEventCount == 0 then
|
|
1180
|
-
self[
|
|
1276
|
+
self[135] = nil
|
|
1181
1277
|
else
|
|
1182
|
-
self[
|
|
1278
|
+
self[135] = maximumDamageReceivedEventCount
|
|
1183
1279
|
end
|
|
1184
1280
|
end
|
|
1185
1281
|
},
|
|
@@ -1190,13 +1286,13 @@ __TS__SetDescriptor(
|
|
|
1190
1286
|
"maximumAutoAttackCount",
|
|
1191
1287
|
{
|
|
1192
1288
|
get = function(self)
|
|
1193
|
-
return self[
|
|
1289
|
+
return self[131] or 0
|
|
1194
1290
|
end,
|
|
1195
1291
|
set = function(self, maximumAutoAttackCount)
|
|
1196
1292
|
if maximumAutoAttackCount == 0 then
|
|
1197
|
-
self[
|
|
1293
|
+
self[131] = nil
|
|
1198
1294
|
else
|
|
1199
|
-
self[
|
|
1295
|
+
self[131] = maximumAutoAttackCount
|
|
1200
1296
|
end
|
|
1201
1297
|
end
|
|
1202
1298
|
},
|
|
@@ -1207,10 +1303,10 @@ __TS__SetDescriptor(
|
|
|
1207
1303
|
"durationIncreaseOnAutoAttack",
|
|
1208
1304
|
{
|
|
1209
1305
|
get = function(self)
|
|
1210
|
-
return self[
|
|
1306
|
+
return self[108] or 0
|
|
1211
1307
|
end,
|
|
1212
1308
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1213
|
-
self[
|
|
1309
|
+
self[108] = durationIncreaseOnAutoAttack
|
|
1214
1310
|
end
|
|
1215
1311
|
},
|
|
1216
1312
|
true
|
|
@@ -1254,12 +1350,39 @@ __TS__SetDescriptor(
|
|
|
1254
1350
|
},
|
|
1255
1351
|
true
|
|
1256
1352
|
)
|
|
1353
|
+
__TS__SetDescriptor(
|
|
1354
|
+
Buff.prototype,
|
|
1355
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1356
|
+
{
|
|
1357
|
+
get = function(self)
|
|
1358
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1359
|
+
end,
|
|
1360
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1361
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1362
|
+
end
|
|
1363
|
+
},
|
|
1364
|
+
true
|
|
1365
|
+
)
|
|
1257
1366
|
__TS__SetDescriptor(
|
|
1258
1367
|
Buff.prototype,
|
|
1259
1368
|
"duration",
|
|
1260
|
-
{
|
|
1261
|
-
|
|
1262
|
-
|
|
1369
|
+
{
|
|
1370
|
+
get = function(self)
|
|
1371
|
+
return self[103]
|
|
1372
|
+
end,
|
|
1373
|
+
set = function(self, duration)
|
|
1374
|
+
if duration <= 0 then
|
|
1375
|
+
local timer = self._timer
|
|
1376
|
+
if timer ~= nil then
|
|
1377
|
+
timer:destroy()
|
|
1378
|
+
self._timer = nil
|
|
1379
|
+
end
|
|
1380
|
+
self[103] = 0
|
|
1381
|
+
else
|
|
1382
|
+
self.remainingDuration = self.remainingDuration + (duration - self[103])
|
|
1383
|
+
end
|
|
1384
|
+
end
|
|
1385
|
+
},
|
|
1263
1386
|
true
|
|
1264
1387
|
)
|
|
1265
1388
|
__TS__SetDescriptor(
|
|
@@ -1267,13 +1390,13 @@ __TS__SetDescriptor(
|
|
|
1267
1390
|
"remainingDuration",
|
|
1268
1391
|
{
|
|
1269
1392
|
get = function(self)
|
|
1270
|
-
local
|
|
1271
|
-
return
|
|
1393
|
+
local ____opt_60 = self._timer
|
|
1394
|
+
return ____opt_60 and ____opt_60.remaining or 0
|
|
1272
1395
|
end,
|
|
1273
1396
|
set = function(self, remainingDuration)
|
|
1274
|
-
local
|
|
1275
|
-
local
|
|
1276
|
-
local remainingDurationDelta =
|
|
1397
|
+
local ____remainingDuration_64 = remainingDuration
|
|
1398
|
+
local ____opt_62 = self._timer
|
|
1399
|
+
local remainingDurationDelta = ____remainingDuration_64 - (____opt_62 and ____opt_62.remaining or 0)
|
|
1277
1400
|
if remainingDurationDelta ~= 0 then
|
|
1278
1401
|
self[103] = self[103] + remainingDurationDelta
|
|
1279
1402
|
if remainingDuration <= 0 then
|
|
@@ -1288,7 +1411,7 @@ __TS__SetDescriptor(
|
|
|
1288
1411
|
remainingDuration,
|
|
1289
1412
|
self._spellStealPriority,
|
|
1290
1413
|
self._learnLevelMinimum,
|
|
1291
|
-
self[
|
|
1414
|
+
self[147]
|
|
1292
1415
|
) then
|
|
1293
1416
|
local timer = self._timer
|
|
1294
1417
|
if timer == nil then
|
|
@@ -1303,15 +1426,80 @@ __TS__SetDescriptor(
|
|
|
1303
1426
|
},
|
|
1304
1427
|
true
|
|
1305
1428
|
)
|
|
1429
|
+
__TS__SetDescriptor(
|
|
1430
|
+
Buff.prototype,
|
|
1431
|
+
"absorbedDamageFactor",
|
|
1432
|
+
{
|
|
1433
|
+
get = function(self)
|
|
1434
|
+
return self[136] or 1
|
|
1435
|
+
end,
|
|
1436
|
+
set = function(self, absorbedDamageFactor)
|
|
1437
|
+
if absorbedDamageFactor == 1 then
|
|
1438
|
+
self[136] = nil
|
|
1439
|
+
else
|
|
1440
|
+
self[136] = absorbedDamageFactor
|
|
1441
|
+
end
|
|
1442
|
+
end
|
|
1443
|
+
},
|
|
1444
|
+
true
|
|
1445
|
+
)
|
|
1446
|
+
__TS__SetDescriptor(
|
|
1447
|
+
Buff.prototype,
|
|
1448
|
+
"maximumDamageAbsorbed",
|
|
1449
|
+
{
|
|
1450
|
+
get = function(self)
|
|
1451
|
+
return self[137] or 0
|
|
1452
|
+
end,
|
|
1453
|
+
set = function(self, maximumDamageAbsorbed)
|
|
1454
|
+
if maximumDamageAbsorbed == 0 then
|
|
1455
|
+
self[137] = nil
|
|
1456
|
+
else
|
|
1457
|
+
self[137] = maximumDamageAbsorbed
|
|
1458
|
+
end
|
|
1459
|
+
end
|
|
1460
|
+
},
|
|
1461
|
+
true
|
|
1462
|
+
)
|
|
1463
|
+
__TS__SetDescriptor(
|
|
1464
|
+
Buff.prototype,
|
|
1465
|
+
"damageAbsorbed",
|
|
1466
|
+
{get = function(self)
|
|
1467
|
+
return self[138] or 0
|
|
1468
|
+
end},
|
|
1469
|
+
true
|
|
1470
|
+
)
|
|
1471
|
+
__TS__SetDescriptor(
|
|
1472
|
+
Buff.prototype,
|
|
1473
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
1474
|
+
{
|
|
1475
|
+
get = function(self)
|
|
1476
|
+
local ____self__139_65 = self[139]
|
|
1477
|
+
if ____self__139_65 == nil then
|
|
1478
|
+
____self__139_65 = true
|
|
1479
|
+
end
|
|
1480
|
+
return ____self__139_65
|
|
1481
|
+
end,
|
|
1482
|
+
set = function(self, destroysOnMaximumDamageAbsorbed)
|
|
1483
|
+
local ____destroysOnMaximumDamageAbsorbed_66
|
|
1484
|
+
if destroysOnMaximumDamageAbsorbed then
|
|
1485
|
+
____destroysOnMaximumDamageAbsorbed_66 = nil
|
|
1486
|
+
else
|
|
1487
|
+
____destroysOnMaximumDamageAbsorbed_66 = false
|
|
1488
|
+
end
|
|
1489
|
+
self[139] = ____destroysOnMaximumDamageAbsorbed_66
|
|
1490
|
+
end
|
|
1491
|
+
},
|
|
1492
|
+
true
|
|
1493
|
+
)
|
|
1306
1494
|
__TS__SetDescriptor(
|
|
1307
1495
|
Buff.prototype,
|
|
1308
1496
|
"abilityCooldownFactor",
|
|
1309
1497
|
{
|
|
1310
1498
|
get = function(self)
|
|
1311
|
-
return self[
|
|
1499
|
+
return self[148] or 1
|
|
1312
1500
|
end,
|
|
1313
1501
|
set = function(self, abilityCooldownFactor)
|
|
1314
|
-
local previousAbilityCooldownModifier = self[
|
|
1502
|
+
local previousAbilityCooldownModifier = self[149]
|
|
1315
1503
|
if previousAbilityCooldownModifier then
|
|
1316
1504
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
1317
1505
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
@@ -1323,8 +1511,8 @@ __TS__SetDescriptor(
|
|
|
1323
1511
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
1324
1512
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1325
1513
|
end
|
|
1326
|
-
self[
|
|
1327
|
-
self[
|
|
1514
|
+
self[149] = modifier
|
|
1515
|
+
self[148] = abilityCooldownFactor
|
|
1328
1516
|
end
|
|
1329
1517
|
},
|
|
1330
1518
|
true
|
|
@@ -1332,35 +1520,40 @@ __TS__SetDescriptor(
|
|
|
1332
1520
|
Buff.createdEvent = buffCreatedEvent
|
|
1333
1521
|
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1334
1522
|
(function(self)
|
|
1335
|
-
local function destroyBuffIfNeeded(buff)
|
|
1336
|
-
|
|
1337
|
-
|
|
1523
|
+
local function destroyBuffIfNeeded(buff, isDispel, source)
|
|
1524
|
+
local currentHandle = getUnitAbility(buff[101].handle, buff.typeId)
|
|
1525
|
+
if currentHandle ~= buff.handle and buff[100] == 1 then
|
|
1526
|
+
if isDispel and currentHandle == nil and buff.unit.isAlive and buff.resistanceType == 1 and (buff._timer == nil or buff.remainingDuration > 0) then
|
|
1527
|
+
buff:dispel(source)
|
|
1528
|
+
else
|
|
1529
|
+
buff:destroy()
|
|
1530
|
+
end
|
|
1338
1531
|
end
|
|
1339
1532
|
end
|
|
1340
|
-
____exports.checkBuff = function(unit, buffTypeId)
|
|
1533
|
+
____exports.checkBuff = function(unit, buffTypeId, isDispel, source)
|
|
1341
1534
|
local buffByTypeId = buffByTypeIdByUnit[unit]
|
|
1342
1535
|
if buffByTypeId ~= nil then
|
|
1343
1536
|
local buff = buffByTypeId[buffTypeId]
|
|
1344
1537
|
if buff ~= nil then
|
|
1345
|
-
destroyBuffIfNeeded(buff)
|
|
1538
|
+
destroyBuffIfNeeded(buff, isDispel, source)
|
|
1346
1539
|
end
|
|
1347
1540
|
end
|
|
1348
1541
|
end
|
|
1349
|
-
____exports.checkBuffs = function(unit)
|
|
1350
|
-
____exports.Buff:forAll(unit, destroyBuffIfNeeded)
|
|
1542
|
+
____exports.checkBuffs = function(unit, isDispel, source)
|
|
1543
|
+
____exports.Buff:forAll(unit, destroyBuffIfNeeded, isDispel, source)
|
|
1351
1544
|
end
|
|
1352
1545
|
Unit.abilityChannelingStartEvent:addListener(
|
|
1353
1546
|
0,
|
|
1354
1547
|
function(caster)
|
|
1355
|
-
____exports.checkBuffs(caster)
|
|
1356
|
-
Timer:run(____exports.checkBuffs, caster)
|
|
1548
|
+
____exports.checkBuffs(caster, true, caster)
|
|
1549
|
+
Timer:run(____exports.checkBuffs, caster, true, caster)
|
|
1357
1550
|
end
|
|
1358
1551
|
)
|
|
1359
1552
|
Unit.abilityUnitTargetChannelingStartEvent:addListener(
|
|
1360
1553
|
0,
|
|
1361
1554
|
function(caster, ability, target)
|
|
1362
|
-
____exports.checkBuffs(target)
|
|
1363
|
-
Timer:run(____exports.checkBuffs, target)
|
|
1555
|
+
____exports.checkBuffs(target, true, caster)
|
|
1556
|
+
Timer:run(____exports.checkBuffs, target, true, caster)
|
|
1364
1557
|
end
|
|
1365
1558
|
)
|
|
1366
1559
|
Unit.abilityPointTargetChannelingStartEvent:addListener(
|
|
@@ -1371,17 +1564,40 @@ Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
|
1371
1564
|
y,
|
|
1372
1565
|
ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1373
1566
|
)
|
|
1374
|
-
forEach(units, ____exports.checkBuffs)
|
|
1375
|
-
Timer:run(
|
|
1567
|
+
forEach(units, ____exports.checkBuffs, true, caster)
|
|
1568
|
+
Timer:run(
|
|
1569
|
+
forEach,
|
|
1570
|
+
units,
|
|
1571
|
+
____exports.checkBuffs,
|
|
1572
|
+
true,
|
|
1573
|
+
caster
|
|
1574
|
+
)
|
|
1575
|
+
end
|
|
1576
|
+
)
|
|
1577
|
+
Unit.abilityNoTargetChannelingStartEvent:addListener(
|
|
1578
|
+
0,
|
|
1579
|
+
function(caster, ability)
|
|
1580
|
+
local radius = ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1581
|
+
if radius > 0 then
|
|
1582
|
+
local units = Unit:getInCollisionRange(caster.x, caster.y, radius)
|
|
1583
|
+
forEach(units, ____exports.checkBuffs, true, caster)
|
|
1584
|
+
Timer:run(
|
|
1585
|
+
forEach,
|
|
1586
|
+
units,
|
|
1587
|
+
____exports.checkBuffs,
|
|
1588
|
+
true,
|
|
1589
|
+
caster
|
|
1590
|
+
)
|
|
1591
|
+
end
|
|
1376
1592
|
end
|
|
1377
1593
|
)
|
|
1378
1594
|
Unit.onDamage:addListener(
|
|
1379
1595
|
0,
|
|
1380
1596
|
function(source, target)
|
|
1381
1597
|
if source ~= nil then
|
|
1382
|
-
____exports.checkBuffs
|
|
1598
|
+
Timer:run(____exports.checkBuffs, source, false)
|
|
1383
1599
|
end
|
|
1384
|
-
____exports.checkBuffs
|
|
1600
|
+
Timer:run(____exports.checkBuffs, target, false)
|
|
1385
1601
|
end
|
|
1386
1602
|
)
|
|
1387
1603
|
buffCreatedEvent:addListener(function(buff)
|