warscript 0.0.1-dev.9c98c3a → 0.0.1-dev.9d07b64
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/player.d.ts +18 -1
- package/core/types/player.lua +73 -25
- 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 +9 -3
- package/core/types/tileCell.lua +16 -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 +705 -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 +10 -2
- package/engine/behavior.lua +157 -76
- 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.lua +5 -4
- package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
- package/engine/behaviour/ability/on-command-impact.lua +1 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability.d.ts +13 -6
- package/engine/behaviour/ability.lua +102 -9
- package/engine/behaviour/unit/stun-immunity.d.ts +7 -5
- package/engine/behaviour/unit/stun-immunity.lua +6 -5
- package/engine/behaviour/unit.d.ts +8 -3
- package/engine/behaviour/unit.lua +102 -24
- package/engine/buff.d.ts +112 -54
- package/engine/buff.lua +559 -280
- 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/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.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- 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/main-selected.lua +12 -27
- 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.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.d.ts +2 -1
- package/engine/internal/unit+ability.lua +63 -2
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +9 -0
- package/engine/internal/unit+damage.lua +33 -0
- package/engine/internal/unit+rally.lua +9 -31
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +29 -19
- package/engine/internal/unit.d.ts +15 -29
- package/engine/internal/unit.lua +192 -272
- package/engine/local-client.d.ts +28 -0
- package/engine/local-client.lua +324 -54
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
- package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
- package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
- package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-type.lua +26 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/item-class.d.ts +11 -0
- package/engine/object-data/auxiliary/item-class.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/order-type.d.ts +939 -0
- package/engine/object-data/auxiliary/order-type.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/blank-configurable.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 +33 -8
- package/engine/object-data/entry/ability-type.lua +286 -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 +61 -2
- package/engine/object-data/entry/unit-type.lua +444 -52
- 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 +20 -5
- package/engine/object-field/unit.lua +61 -0
- package/engine/object-field.d.ts +10 -2
- package/engine/object-field.lua +268 -123
- 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 +4 -4
- package/engine/standard/fields/ability.lua +4 -4
- 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 -3
- package/engine/standard/fields/unit.lua +15 -2
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.lua +2 -1
- 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 +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,8 +14,10 @@ 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
|
|
20
|
+
local UnitAbility = ____ability.UnitAbility
|
|
19
21
|
local ____ability = require("engine.object-field.ability")
|
|
20
22
|
local AbilityBooleanField = ____ability.AbilityBooleanField
|
|
21
23
|
local AbilityNumberField = ____ability.AbilityNumberField
|
|
@@ -41,6 +43,7 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
41
43
|
local ____unit = require("engine.behaviour.unit")
|
|
42
44
|
local UnitBehavior = ____unit.UnitBehavior
|
|
43
45
|
local ____arrays = require("utility.arrays")
|
|
46
|
+
local emptyArray = ____arrays.emptyArray
|
|
44
47
|
local forEach = ____arrays.forEach
|
|
45
48
|
local ____event = require("event")
|
|
46
49
|
local Event = ____event.Event
|
|
@@ -50,6 +53,15 @@ local ____item = require("engine.internal.item")
|
|
|
50
53
|
local Item = ____item.Item
|
|
51
54
|
local ____destructable = require("core.types.destructable")
|
|
52
55
|
local Destructable = ____destructable.Destructable
|
|
56
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
57
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
58
|
+
local ____ability = require("engine.behaviour.ability")
|
|
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
|
|
53
65
|
local getUnitAbility = BlzGetUnitAbility
|
|
54
66
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
55
67
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -95,13 +107,16 @@ local buffParametersKeys = {
|
|
|
95
107
|
damageIncrease = true,
|
|
96
108
|
damageIncreaseFactor = true,
|
|
97
109
|
armorIncrease = true,
|
|
98
|
-
|
|
110
|
+
maxHealthIncrease = true,
|
|
111
|
+
maxManaIncrease = true,
|
|
99
112
|
attackSpeedIncreaseFactor = true,
|
|
100
113
|
movementSpeedIncreaseFactor = true,
|
|
114
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
101
115
|
evasionProbability = true,
|
|
102
116
|
missProbability = true,
|
|
103
117
|
damageFactor = true,
|
|
104
118
|
receivedDamageFactor = true,
|
|
119
|
+
returnedMeleeDamageFactor = true,
|
|
105
120
|
receivedMagicDamageFactor = true,
|
|
106
121
|
durationIncreaseOnAutoAttack = true,
|
|
107
122
|
maximumDuration = true,
|
|
@@ -117,11 +132,16 @@ local buffParametersKeys = {
|
|
|
117
132
|
maximumAutoAttackCount = true,
|
|
118
133
|
maximumDamageDealtEventCount = true,
|
|
119
134
|
maximumDamageReceivedEventCount = true,
|
|
135
|
+
absorbedDamageFactor = true,
|
|
136
|
+
maximumDamageAbsorbed = true,
|
|
137
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
120
138
|
uniqueGroup = true,
|
|
139
|
+
destructionSoundPresetId = true,
|
|
121
140
|
damageOnExpiration = true,
|
|
122
141
|
healingOnExpiration = true,
|
|
123
142
|
killsOnExpiration = true,
|
|
124
|
-
explodesOnExpiration = true
|
|
143
|
+
explodesOnExpiration = true,
|
|
144
|
+
abilityCooldownFactor = true
|
|
125
145
|
}
|
|
126
146
|
local function resolveEnumValue(ability, level, value)
|
|
127
147
|
if value == nil or type(value) == "number" then
|
|
@@ -172,6 +192,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
172
192
|
end
|
|
173
193
|
end
|
|
174
194
|
local buffBooleanParameters = {
|
|
195
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
175
196
|
"turnsIntoGhost",
|
|
176
197
|
"stuns",
|
|
177
198
|
"ignoresStunImmunity",
|
|
@@ -184,10 +205,14 @@ local buffNumberParameters = {
|
|
|
184
205
|
"durationIncreaseOnAutoAttack",
|
|
185
206
|
"attackSpeedIncreaseFactor",
|
|
186
207
|
"movementSpeedIncreaseFactor",
|
|
208
|
+
"manaRegenerationRateIncreaseFactor",
|
|
187
209
|
"evasionProbability",
|
|
188
210
|
"armorIncrease",
|
|
211
|
+
"maxHealthIncrease",
|
|
212
|
+
"maxManaIncrease",
|
|
189
213
|
"damageFactor",
|
|
190
214
|
"receivedDamageFactor",
|
|
215
|
+
"returnedMeleeDamageFactor",
|
|
191
216
|
"maximumAutoAttackCount",
|
|
192
217
|
"maximumDamageDealtEventCount",
|
|
193
218
|
"maximumDamageReceivedEventCount",
|
|
@@ -198,7 +223,10 @@ local buffNumberParameters = {
|
|
|
198
223
|
"healingPerInterval",
|
|
199
224
|
"healingOverDuration",
|
|
200
225
|
"damageOnExpiration",
|
|
201
|
-
"healingOnExpiration"
|
|
226
|
+
"healingOnExpiration",
|
|
227
|
+
"absorbedDamageFactor",
|
|
228
|
+
"maximumDamageAbsorbed",
|
|
229
|
+
"abilityCooldownFactor"
|
|
202
230
|
}
|
|
203
231
|
local unsuccessfulApplicationMarker = {}
|
|
204
232
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -233,17 +261,21 @@ local function destroyBuff(buff)
|
|
|
233
261
|
buff:destroy()
|
|
234
262
|
end
|
|
235
263
|
local function expireBuff(buff)
|
|
236
|
-
|
|
237
|
-
|
|
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
|
|
238
270
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
239
271
|
buff:flashSpecialEffect()
|
|
240
272
|
if remainingDamageOverDuration ~= 0 then
|
|
241
273
|
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
242
|
-
buff[
|
|
274
|
+
buff[114] = nil
|
|
243
275
|
end
|
|
244
276
|
if remainingHealingOverDuration ~= 0 then
|
|
245
277
|
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
246
|
-
buff[
|
|
278
|
+
buff[119] = nil
|
|
247
279
|
end
|
|
248
280
|
end
|
|
249
281
|
Timer:run(destroyBuff, buff)
|
|
@@ -251,8 +283,8 @@ local function expireBuff(buff)
|
|
|
251
283
|
end
|
|
252
284
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
253
285
|
buffDamageIntervalTimerCallback(buff)
|
|
254
|
-
local timer = buff[
|
|
255
|
-
local damageInterval = buff[
|
|
286
|
+
local timer = buff[115]
|
|
287
|
+
local damageInterval = buff[113]
|
|
256
288
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
257
289
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
258
290
|
end
|
|
@@ -260,43 +292,43 @@ end
|
|
|
260
292
|
buffDamageIntervalTimerCallback = function(buff)
|
|
261
293
|
buff:flashSpecialEffect()
|
|
262
294
|
local source = buff[102] or buff[101]
|
|
263
|
-
local remainingDamageOverDuration = buff[
|
|
295
|
+
local remainingDamageOverDuration = buff[114] or 0
|
|
264
296
|
if remainingDamageOverDuration ~= 0 then
|
|
265
|
-
local damageInterval = buff[
|
|
297
|
+
local damageInterval = buff[113] or 0
|
|
266
298
|
if damageInterval ~= 0 then
|
|
267
299
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
268
300
|
source:damageTarget(buff[101], damage)
|
|
269
|
-
buff[
|
|
301
|
+
buff[114] = remainingDamageOverDuration - damage
|
|
270
302
|
end
|
|
271
303
|
end
|
|
272
|
-
local damagePerInterval = buff[
|
|
304
|
+
local damagePerInterval = buff[112] or 0
|
|
273
305
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
274
306
|
source:damageTarget(buff[101], damagePerInterval)
|
|
275
307
|
end
|
|
276
308
|
end
|
|
277
309
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
278
310
|
buffHealingIntervalTimerCallback(buff)
|
|
279
|
-
local timer = buff[
|
|
280
|
-
local healingInterval = buff[
|
|
311
|
+
local timer = buff[120]
|
|
312
|
+
local healingInterval = buff[118]
|
|
281
313
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
282
314
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
283
315
|
end
|
|
284
316
|
end
|
|
285
317
|
buffHealingIntervalTimerCallback = function(buff)
|
|
286
|
-
if buff[
|
|
318
|
+
if buff[118] ~= buff[113] then
|
|
287
319
|
buff:flashSpecialEffect()
|
|
288
320
|
end
|
|
289
321
|
local source = buff[102] or buff[101]
|
|
290
|
-
local remainingHealingOverDuration = buff[
|
|
322
|
+
local remainingHealingOverDuration = buff[119] or 0
|
|
291
323
|
if remainingHealingOverDuration ~= 0 then
|
|
292
|
-
local healingInterval = buff[
|
|
324
|
+
local healingInterval = buff[118] or 0
|
|
293
325
|
if healingInterval ~= 0 then
|
|
294
326
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
295
327
|
source:healTarget(buff[101], healing)
|
|
296
|
-
buff[
|
|
328
|
+
buff[119] = remainingHealingOverDuration - healing
|
|
297
329
|
end
|
|
298
330
|
end
|
|
299
|
-
local healingPerInterval = buff[
|
|
331
|
+
local healingPerInterval = buff[117] or 0
|
|
300
332
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
301
333
|
source:healTarget(buff[101], healingPerInterval)
|
|
302
334
|
end
|
|
@@ -317,33 +349,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
317
349
|
local polarity
|
|
318
350
|
local resistanceType
|
|
319
351
|
local ability
|
|
352
|
+
local abilityBehavior
|
|
320
353
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
321
354
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
322
355
|
polarity = resistanceTypeOrPolarity
|
|
323
356
|
resistanceType = abilityOrParametersOrResistanceType
|
|
324
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
357
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
358
|
+
abilityBehavior = parametersOrAbility
|
|
359
|
+
ability = abilityBehavior.ability
|
|
360
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
325
361
|
ability = parametersOrAbility
|
|
326
|
-
|
|
327
|
-
ability = nil
|
|
362
|
+
elseif parametersOrAbility ~= nil then
|
|
328
363
|
parameters = parametersOrAbility
|
|
329
364
|
end
|
|
330
365
|
else
|
|
331
366
|
typeId = typeIdOrTypeIds
|
|
332
367
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
333
368
|
resistanceType = resistanceTypeOrPolarity
|
|
334
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
369
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
370
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
371
|
+
ability = abilityBehavior.ability
|
|
372
|
+
parameters = parametersOrAbility
|
|
373
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
335
374
|
ability = abilityOrParametersOrResistanceType
|
|
336
375
|
parameters = parametersOrAbility
|
|
337
|
-
|
|
338
|
-
ability = nil
|
|
376
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
339
377
|
parameters = abilityOrParametersOrResistanceType
|
|
378
|
+
else
|
|
379
|
+
parameters = parametersOrAbility
|
|
340
380
|
end
|
|
341
381
|
end
|
|
382
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
342
383
|
self.typeId = typeId
|
|
343
|
-
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
344
|
-
parameters = ability
|
|
345
|
-
ability = nil
|
|
346
|
-
end
|
|
347
384
|
local defaultParameters = self.constructor.defaultParameters
|
|
348
385
|
local level = parameters and parameters.level or defaultParameters.level
|
|
349
386
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -371,14 +408,15 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
371
408
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
372
409
|
if missProbability ~= nil then
|
|
373
410
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
374
|
-
self[
|
|
411
|
+
self[147] = missProbability
|
|
375
412
|
end
|
|
376
413
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
377
414
|
if buffByTypeId == nil then
|
|
378
415
|
buffByTypeId = {}
|
|
379
416
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
380
417
|
end
|
|
381
|
-
|
|
418
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
419
|
+
local ____opt_15 = self.previousBuff
|
|
382
420
|
if ____opt_15 ~= nil then
|
|
383
421
|
____opt_15:destroy()
|
|
384
422
|
end
|
|
@@ -415,17 +453,18 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
415
453
|
self[102] = source
|
|
416
454
|
self[103] = duration or 0
|
|
417
455
|
self[104] = uniqueGroup
|
|
418
|
-
self[105] =
|
|
419
|
-
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)
|
|
420
459
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
421
460
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
422
|
-
local
|
|
423
|
-
local
|
|
424
|
-
local
|
|
425
|
-
if
|
|
426
|
-
|
|
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]
|
|
427
466
|
end
|
|
428
|
-
if resolveBooleanValue(
|
|
467
|
+
if resolveBooleanValue(____ability_28, ____level_29, ____temp_27) then
|
|
429
468
|
self[buffBooleanParameter] = true
|
|
430
469
|
end
|
|
431
470
|
end
|
|
@@ -441,11 +480,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
441
480
|
end
|
|
442
481
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
443
482
|
if maximumDuration ~= nil then
|
|
444
|
-
self[
|
|
483
|
+
self[109] = resolveNumberValue(ability, level, maximumDuration)
|
|
445
484
|
end
|
|
446
485
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
447
486
|
if maximumRemainingDuration ~= nil then
|
|
448
|
-
self[
|
|
487
|
+
self[110] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
449
488
|
end
|
|
450
489
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
451
490
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -454,24 +493,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
454
493
|
abilityTypeIds = {}
|
|
455
494
|
self._abilityTypeIds = abilityTypeIds
|
|
456
495
|
end
|
|
457
|
-
for
|
|
496
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
497
|
+
local abilityParameters = checkNotNull(parametersAbilityTypeIds[abilityTypeId])
|
|
458
498
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
459
499
|
if addedAbility ~= nil then
|
|
460
500
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
461
501
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
465
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
466
|
-
end
|
|
467
|
-
elseif abilityParameterKey ~= "level" then
|
|
468
|
-
abilityParameterKey:setValue(
|
|
469
|
-
addedAbility,
|
|
470
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
471
|
-
)
|
|
472
|
-
end
|
|
502
|
+
if abilityParameters.isButtonVisible == false then
|
|
503
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
473
504
|
end
|
|
474
|
-
|
|
505
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
506
|
+
field[1]:setValue(
|
|
507
|
+
addedAbility,
|
|
508
|
+
resolveNumberValue(ability, level, field[2])
|
|
509
|
+
)
|
|
510
|
+
end
|
|
511
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
475
512
|
end
|
|
476
513
|
end
|
|
477
514
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -483,18 +520,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
483
520
|
self._behaviors = behaviors
|
|
484
521
|
end
|
|
485
522
|
end
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
if
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
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
|
|
493
532
|
end
|
|
494
533
|
end
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
534
|
+
if (next(additionalParameters)) ~= nil then
|
|
535
|
+
self.parameters = additionalParameters
|
|
536
|
+
end
|
|
498
537
|
end
|
|
499
538
|
end
|
|
500
539
|
if duration ~= nil and duration > 0 then
|
|
@@ -506,51 +545,77 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
506
545
|
self[100] = 1
|
|
507
546
|
Event.invoke(buffCreatedEvent, self)
|
|
508
547
|
end
|
|
548
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
549
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
550
|
+
local abilityCooldownModifier = self[149]
|
|
551
|
+
if abilityCooldownModifier then
|
|
552
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
553
|
+
end
|
|
554
|
+
end
|
|
555
|
+
end
|
|
556
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
557
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
558
|
+
local abilityCooldownModifier = self[149]
|
|
559
|
+
if abilityCooldownModifier then
|
|
560
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
561
|
+
end
|
|
562
|
+
end
|
|
563
|
+
end
|
|
509
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)
|
|
510
583
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
511
|
-
Effect:flash(
|
|
584
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
512
585
|
else
|
|
513
586
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
514
|
-
local
|
|
515
|
-
local
|
|
516
|
-
local
|
|
517
|
-
|
|
518
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
519
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
520
|
-
)
|
|
521
|
-
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
|
|
522
591
|
if isWidgetProvided then
|
|
523
|
-
|
|
592
|
+
____isWidgetProvided_42 = yOrParametersOrDuration
|
|
524
593
|
else
|
|
525
|
-
|
|
594
|
+
____isWidgetProvided_42 = widgetOrXOrParametersOrDuration
|
|
526
595
|
end
|
|
527
|
-
__TS__SparseArrayPush(
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
__TS__SparseArraySpread(
|
|
596
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
597
|
+
____Effect_flash_45(
|
|
598
|
+
____Effect_44,
|
|
599
|
+
__TS__SparseArraySpread(____array_43)
|
|
531
600
|
)
|
|
532
601
|
end
|
|
533
602
|
end
|
|
534
|
-
function Buff.prototype.
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
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
|
|
548
618
|
end
|
|
549
|
-
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
550
|
-
____Effect_flash_45(
|
|
551
|
-
____Effect_44,
|
|
552
|
-
__TS__SparseArraySpread(____array_43)
|
|
553
|
-
)
|
|
554
619
|
end
|
|
555
620
|
function Buff.prototype.onCreate(self)
|
|
556
621
|
end
|
|
@@ -558,19 +623,25 @@ function Buff.prototype.onDestroy(self)
|
|
|
558
623
|
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
559
624
|
self[100] = 2
|
|
560
625
|
local unit = self._unit
|
|
626
|
+
local destructionSoundPresetId = self[105]
|
|
627
|
+
if destructionSoundPresetId ~= nil then
|
|
628
|
+
Sound3D:playFromLabel(destructionSoundPresetId, SoundSettings.Ability, unit)
|
|
629
|
+
end
|
|
561
630
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
562
631
|
removeBuff(unit.handle, self.typeId)
|
|
632
|
+
else
|
|
633
|
+
removeBuffApplicator(unit.handle, self.typeId)
|
|
563
634
|
end
|
|
564
635
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
565
|
-
local healingIntervalTimer = self[
|
|
636
|
+
local healingIntervalTimer = self[120]
|
|
566
637
|
if healingIntervalTimer ~= nil then
|
|
567
638
|
healingIntervalTimer:destroy()
|
|
568
|
-
self[
|
|
639
|
+
self[120] = nil
|
|
569
640
|
end
|
|
570
|
-
local damageIntervalTimer = self[
|
|
641
|
+
local damageIntervalTimer = self[115]
|
|
571
642
|
if damageIntervalTimer ~= nil then
|
|
572
643
|
damageIntervalTimer:destroy()
|
|
573
|
-
self[
|
|
644
|
+
self[115] = nil
|
|
574
645
|
end
|
|
575
646
|
if self._timer ~= nil then
|
|
576
647
|
self._timer:destroy()
|
|
@@ -580,23 +651,29 @@ function Buff.prototype.onDestroy(self)
|
|
|
580
651
|
behavior:destroy()
|
|
581
652
|
end
|
|
582
653
|
end
|
|
583
|
-
|
|
654
|
+
local previousAbilityCooldownModifier = self[149]
|
|
655
|
+
if previousAbilityCooldownModifier then
|
|
656
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
657
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
658
|
+
end
|
|
659
|
+
end
|
|
660
|
+
if self[144] then
|
|
584
661
|
unit:decrementInvulnerabilityCounter()
|
|
585
662
|
end
|
|
586
|
-
if self[
|
|
663
|
+
if self[143] then
|
|
587
664
|
unit:decrementDisableAutoAttackCounter()
|
|
588
665
|
end
|
|
589
|
-
if self[
|
|
590
|
-
if self[
|
|
591
|
-
unit:
|
|
666
|
+
if self[141] then
|
|
667
|
+
if self[142] then
|
|
668
|
+
unit:decrementForceStunCounter()
|
|
592
669
|
end
|
|
593
670
|
unit:decrementStunCounter()
|
|
594
671
|
end
|
|
595
|
-
if self[
|
|
672
|
+
if self[140] then
|
|
596
673
|
unit:decrementGhostCounter()
|
|
597
674
|
end
|
|
598
675
|
if self._abilityTypeIds ~= nil then
|
|
599
|
-
for abilityTypeId in
|
|
676
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
600
677
|
unit:removeAbility(abilityTypeId)
|
|
601
678
|
end
|
|
602
679
|
end
|
|
@@ -636,42 +713,44 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
636
713
|
end
|
|
637
714
|
return nil
|
|
638
715
|
end
|
|
716
|
+
function Buff.prototype.onDispel(self, source)
|
|
717
|
+
end
|
|
639
718
|
function Buff.prototype.onExpiration(self)
|
|
640
719
|
local unit = self.unit
|
|
641
|
-
if self[120] ~= nil then
|
|
642
|
-
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
643
|
-
end
|
|
644
720
|
if self[121] ~= nil then
|
|
645
|
-
(self[102] or unit):
|
|
721
|
+
(self[102] or unit):damageTarget(unit, self[121] or 0)
|
|
646
722
|
end
|
|
647
|
-
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
|
|
648
727
|
unit:explode()
|
|
649
|
-
elseif self[
|
|
728
|
+
elseif self[145] then
|
|
650
729
|
unit:kill()
|
|
651
730
|
end
|
|
652
731
|
end
|
|
653
732
|
function Buff.prototype.onDeath(self, source)
|
|
654
733
|
local unit = self.unit
|
|
655
|
-
if self[
|
|
734
|
+
if self[123] ~= nil then
|
|
656
735
|
damageArea(
|
|
657
736
|
self[102] or unit,
|
|
658
|
-
self[
|
|
737
|
+
self[123],
|
|
659
738
|
unit.x,
|
|
660
739
|
unit.y,
|
|
740
|
+
self[125] or 0,
|
|
661
741
|
self[124] or 0,
|
|
662
|
-
self[
|
|
742
|
+
self[127] or 0,
|
|
663
743
|
self[126] or 0,
|
|
664
|
-
self[
|
|
665
|
-
self[128] or 0
|
|
666
|
-
self[127] or 0
|
|
744
|
+
self[129] or 0,
|
|
745
|
+
self[128] or 0
|
|
667
746
|
)
|
|
668
747
|
end
|
|
669
748
|
end
|
|
670
749
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
671
750
|
if event.isAttack then
|
|
672
|
-
if self[
|
|
673
|
-
local durationIncrease = self[
|
|
674
|
-
local maximumDuration = self[
|
|
751
|
+
if self[108] ~= nil then
|
|
752
|
+
local durationIncrease = self[108]
|
|
753
|
+
local maximumDuration = self[109] or 0
|
|
675
754
|
if maximumDuration > 0 then
|
|
676
755
|
durationIncrease = min(
|
|
677
756
|
durationIncrease,
|
|
@@ -679,31 +758,43 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
679
758
|
)
|
|
680
759
|
end
|
|
681
760
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
682
|
-
local maximumRemainingDuration = self[
|
|
761
|
+
local maximumRemainingDuration = self[110] or 0
|
|
683
762
|
if maximumRemainingDuration > 0 then
|
|
684
763
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
685
764
|
end
|
|
686
765
|
self.remainingDuration = remainingDuration
|
|
687
766
|
end
|
|
688
|
-
local autoAttackCount = (self[
|
|
689
|
-
self[
|
|
690
|
-
if autoAttackCount == self[
|
|
767
|
+
local autoAttackCount = (self[130] or 0) + 1
|
|
768
|
+
self[130] = autoAttackCount
|
|
769
|
+
if autoAttackCount == self[131] then
|
|
691
770
|
self:destroy()
|
|
692
771
|
end
|
|
693
772
|
end
|
|
694
773
|
if event.originalAmount ~= 0 then
|
|
695
|
-
local damageDealtEventCount = (self[
|
|
696
|
-
self[
|
|
697
|
-
if damageDealtEventCount == self[
|
|
774
|
+
local damageDealtEventCount = (self[132] or 0) + 1
|
|
775
|
+
self[132] = damageDealtEventCount
|
|
776
|
+
if damageDealtEventCount == self[133] then
|
|
698
777
|
self:destroy()
|
|
699
778
|
end
|
|
700
779
|
end
|
|
701
780
|
end
|
|
702
781
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
703
782
|
if event.originalAmount ~= 0 then
|
|
704
|
-
local
|
|
705
|
-
|
|
706
|
-
|
|
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
|
|
707
798
|
self:destroy()
|
|
708
799
|
end
|
|
709
800
|
end
|
|
@@ -730,13 +821,13 @@ __TS__SetDescriptor(
|
|
|
730
821
|
"remainingDamageOverDuration",
|
|
731
822
|
{
|
|
732
823
|
get = function(self)
|
|
733
|
-
return self[
|
|
824
|
+
return self[114] or 0
|
|
734
825
|
end,
|
|
735
826
|
set = function(self, remainingDamageOverDuration)
|
|
736
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
737
|
-
self[
|
|
738
|
-
local damageOverDuration = (self[
|
|
739
|
-
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
|
|
740
831
|
end
|
|
741
832
|
},
|
|
742
833
|
true
|
|
@@ -746,13 +837,13 @@ __TS__SetDescriptor(
|
|
|
746
837
|
"damageOverDuration",
|
|
747
838
|
{
|
|
748
839
|
get = function(self)
|
|
749
|
-
return self[
|
|
840
|
+
return self[111] or 0
|
|
750
841
|
end,
|
|
751
842
|
set = function(self, damageOverDuration)
|
|
752
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
753
|
-
self[
|
|
754
|
-
local remainingDamageOverDuration = (self[
|
|
755
|
-
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
|
|
756
847
|
end
|
|
757
848
|
},
|
|
758
849
|
true
|
|
@@ -762,10 +853,10 @@ __TS__SetDescriptor(
|
|
|
762
853
|
"damagePerInterval",
|
|
763
854
|
{
|
|
764
855
|
get = function(self)
|
|
765
|
-
return self[
|
|
856
|
+
return self[112] or 0
|
|
766
857
|
end,
|
|
767
858
|
set = function(self, damagePerInterval)
|
|
768
|
-
self[
|
|
859
|
+
self[112] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
769
860
|
end
|
|
770
861
|
},
|
|
771
862
|
true
|
|
@@ -775,25 +866,25 @@ __TS__SetDescriptor(
|
|
|
775
866
|
"damageInterval",
|
|
776
867
|
{
|
|
777
868
|
get = function(self)
|
|
778
|
-
return self[
|
|
869
|
+
return self[113] or 0
|
|
779
870
|
end,
|
|
780
871
|
set = function(self, damageInterval)
|
|
781
872
|
if damageInterval <= 0 then
|
|
782
|
-
self[
|
|
783
|
-
local timer = self[
|
|
873
|
+
self[113] = damageInterval ~= 0 and damageInterval or nil
|
|
874
|
+
local timer = self[115]
|
|
784
875
|
if timer ~= nil then
|
|
785
876
|
timer:destroy()
|
|
786
|
-
self[
|
|
877
|
+
self[115] = nil
|
|
787
878
|
end
|
|
788
879
|
return
|
|
789
880
|
end
|
|
790
|
-
self[
|
|
791
|
-
local
|
|
792
|
-
local elapsed =
|
|
793
|
-
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]
|
|
794
885
|
if timer == nil then
|
|
795
886
|
timer = Timer:create()
|
|
796
|
-
self[
|
|
887
|
+
self[115] = timer
|
|
797
888
|
end
|
|
798
889
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
799
890
|
if initialDelay == damageInterval then
|
|
@@ -810,13 +901,13 @@ __TS__SetDescriptor(
|
|
|
810
901
|
"remainingHealingOverDuration",
|
|
811
902
|
{
|
|
812
903
|
get = function(self)
|
|
813
|
-
return self[
|
|
904
|
+
return self[119] or 0
|
|
814
905
|
end,
|
|
815
906
|
set = function(self, remainingHealingOverDuration)
|
|
816
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
817
|
-
self[
|
|
818
|
-
local healingOverDuration = (self[
|
|
819
|
-
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
|
|
820
911
|
end
|
|
821
912
|
},
|
|
822
913
|
true
|
|
@@ -826,13 +917,13 @@ __TS__SetDescriptor(
|
|
|
826
917
|
"healingOverDuration",
|
|
827
918
|
{
|
|
828
919
|
get = function(self)
|
|
829
|
-
return self[
|
|
920
|
+
return self[116] or 0
|
|
830
921
|
end,
|
|
831
922
|
set = function(self, healingOverDuration)
|
|
832
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
833
|
-
self[
|
|
834
|
-
local remainingHealingOverDuration = (self[
|
|
835
|
-
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
|
|
836
927
|
end
|
|
837
928
|
},
|
|
838
929
|
true
|
|
@@ -842,10 +933,10 @@ __TS__SetDescriptor(
|
|
|
842
933
|
"healingPerInterval",
|
|
843
934
|
{
|
|
844
935
|
get = function(self)
|
|
845
|
-
return self[
|
|
936
|
+
return self[117] or 0
|
|
846
937
|
end,
|
|
847
938
|
set = function(self, healingPerInterval)
|
|
848
|
-
self[
|
|
939
|
+
self[117] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
849
940
|
end
|
|
850
941
|
},
|
|
851
942
|
true
|
|
@@ -855,25 +946,25 @@ __TS__SetDescriptor(
|
|
|
855
946
|
"healingInterval",
|
|
856
947
|
{
|
|
857
948
|
get = function(self)
|
|
858
|
-
return self[
|
|
949
|
+
return self[118] or 0
|
|
859
950
|
end,
|
|
860
951
|
set = function(self, healingInterval)
|
|
861
952
|
if healingInterval <= 0 then
|
|
862
|
-
self[
|
|
863
|
-
local timer = self[
|
|
953
|
+
self[118] = healingInterval ~= 0 and healingInterval or nil
|
|
954
|
+
local timer = self[120]
|
|
864
955
|
if timer ~= nil then
|
|
865
956
|
timer:destroy()
|
|
866
|
-
self[
|
|
957
|
+
self[120] = nil
|
|
867
958
|
end
|
|
868
959
|
return
|
|
869
960
|
end
|
|
870
|
-
self[
|
|
871
|
-
local
|
|
872
|
-
local elapsed =
|
|
873
|
-
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]
|
|
874
965
|
if timer == nil then
|
|
875
966
|
timer = Timer:create()
|
|
876
|
-
self[
|
|
967
|
+
self[120] = timer
|
|
877
968
|
end
|
|
878
969
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
879
970
|
if initialDelay == healingInterval then
|
|
@@ -890,10 +981,10 @@ __TS__SetDescriptor(
|
|
|
890
981
|
"damageOnExpiration",
|
|
891
982
|
{
|
|
892
983
|
get = function(self)
|
|
893
|
-
return self[
|
|
984
|
+
return self[121] or 0
|
|
894
985
|
end,
|
|
895
986
|
set = function(self, damageOnExpiration)
|
|
896
|
-
self[
|
|
987
|
+
self[121] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
897
988
|
end
|
|
898
989
|
},
|
|
899
990
|
true
|
|
@@ -903,10 +994,10 @@ __TS__SetDescriptor(
|
|
|
903
994
|
"healingOnExpiration",
|
|
904
995
|
{
|
|
905
996
|
get = function(self)
|
|
906
|
-
return self[
|
|
997
|
+
return self[122] or 0
|
|
907
998
|
end,
|
|
908
999
|
set = function(self, healingOnExpiration)
|
|
909
|
-
self[
|
|
1000
|
+
self[122] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
910
1001
|
end
|
|
911
1002
|
},
|
|
912
1003
|
true
|
|
@@ -937,6 +1028,19 @@ __TS__SetDescriptor(
|
|
|
937
1028
|
},
|
|
938
1029
|
true
|
|
939
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
|
+
)
|
|
940
1044
|
__TS__SetDescriptor(
|
|
941
1045
|
Buff.prototype,
|
|
942
1046
|
"armorIncrease",
|
|
@@ -950,24 +1054,50 @@ __TS__SetDescriptor(
|
|
|
950
1054
|
},
|
|
951
1055
|
true
|
|
952
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
|
+
)
|
|
953
1083
|
__TS__SetDescriptor(
|
|
954
1084
|
Buff.prototype,
|
|
955
1085
|
"turnsIntoGhost",
|
|
956
1086
|
{
|
|
957
1087
|
get = function(self)
|
|
958
|
-
local
|
|
959
|
-
if
|
|
960
|
-
|
|
1088
|
+
local ____self__140_53 = self[140]
|
|
1089
|
+
if ____self__140_53 == nil then
|
|
1090
|
+
____self__140_53 = false
|
|
961
1091
|
end
|
|
962
|
-
return
|
|
1092
|
+
return ____self__140_53
|
|
963
1093
|
end,
|
|
964
1094
|
set = function(self, turnsIntoGhost)
|
|
965
|
-
if not turnsIntoGhost and self[
|
|
1095
|
+
if not turnsIntoGhost and self[140] then
|
|
966
1096
|
self.object:decrementGhostCounter()
|
|
967
|
-
self[
|
|
968
|
-
elseif turnsIntoGhost and not self[
|
|
1097
|
+
self[140] = nil
|
|
1098
|
+
elseif turnsIntoGhost and not self[140] then
|
|
969
1099
|
self.object:incrementGhostCounter()
|
|
970
|
-
self[
|
|
1100
|
+
self[140] = true
|
|
971
1101
|
end
|
|
972
1102
|
end
|
|
973
1103
|
},
|
|
@@ -978,25 +1108,25 @@ __TS__SetDescriptor(
|
|
|
978
1108
|
"stuns",
|
|
979
1109
|
{
|
|
980
1110
|
get = function(self)
|
|
981
|
-
local
|
|
982
|
-
if
|
|
983
|
-
|
|
1111
|
+
local ____self__141_54 = self[141]
|
|
1112
|
+
if ____self__141_54 == nil then
|
|
1113
|
+
____self__141_54 = false
|
|
984
1114
|
end
|
|
985
|
-
return
|
|
1115
|
+
return ____self__141_54
|
|
986
1116
|
end,
|
|
987
1117
|
set = function(self, stuns)
|
|
988
|
-
if not stuns and self[
|
|
989
|
-
if self[
|
|
990
|
-
self.object:
|
|
1118
|
+
if not stuns and self[141] then
|
|
1119
|
+
if self[142] then
|
|
1120
|
+
self.object:decrementForceStunCounter()
|
|
991
1121
|
end
|
|
992
1122
|
self.object:decrementStunCounter()
|
|
993
|
-
self[
|
|
994
|
-
elseif stuns and not self[
|
|
995
|
-
if self[
|
|
996
|
-
self.object:
|
|
1123
|
+
self[141] = nil
|
|
1124
|
+
elseif stuns and not self[141] then
|
|
1125
|
+
if self[142] then
|
|
1126
|
+
self.object:incrementForceStunCounter()
|
|
997
1127
|
end
|
|
998
1128
|
self.object:incrementStunCounter()
|
|
999
|
-
self[
|
|
1129
|
+
self[141] = true
|
|
1000
1130
|
end
|
|
1001
1131
|
end
|
|
1002
1132
|
},
|
|
@@ -1007,23 +1137,23 @@ __TS__SetDescriptor(
|
|
|
1007
1137
|
"ignoresStunImmunity",
|
|
1008
1138
|
{
|
|
1009
1139
|
get = function(self)
|
|
1010
|
-
local
|
|
1011
|
-
if
|
|
1012
|
-
|
|
1140
|
+
local ____self__142_55 = self[142]
|
|
1141
|
+
if ____self__142_55 == nil then
|
|
1142
|
+
____self__142_55 = false
|
|
1013
1143
|
end
|
|
1014
|
-
return
|
|
1144
|
+
return ____self__142_55
|
|
1015
1145
|
end,
|
|
1016
1146
|
set = function(self, ignoresStunImmunity)
|
|
1017
|
-
if not ignoresStunImmunity and self[
|
|
1018
|
-
if self[
|
|
1019
|
-
self.object:
|
|
1147
|
+
if not ignoresStunImmunity and self[142] then
|
|
1148
|
+
if self[141] then
|
|
1149
|
+
self.object:decrementForceStunCounter()
|
|
1020
1150
|
end
|
|
1021
|
-
self[
|
|
1022
|
-
elseif ignoresStunImmunity and not self[
|
|
1023
|
-
if self[
|
|
1024
|
-
self.object:
|
|
1151
|
+
self[142] = nil
|
|
1152
|
+
elseif ignoresStunImmunity and not self[142] then
|
|
1153
|
+
if self[141] then
|
|
1154
|
+
self.object:incrementForceStunCounter()
|
|
1025
1155
|
end
|
|
1026
|
-
self[
|
|
1156
|
+
self[142] = true
|
|
1027
1157
|
end
|
|
1028
1158
|
end
|
|
1029
1159
|
},
|
|
@@ -1034,19 +1164,19 @@ __TS__SetDescriptor(
|
|
|
1034
1164
|
"disablesAutoAttack",
|
|
1035
1165
|
{
|
|
1036
1166
|
get = function(self)
|
|
1037
|
-
local
|
|
1038
|
-
if
|
|
1039
|
-
|
|
1167
|
+
local ____self__143_56 = self[143]
|
|
1168
|
+
if ____self__143_56 == nil then
|
|
1169
|
+
____self__143_56 = false
|
|
1040
1170
|
end
|
|
1041
|
-
return
|
|
1171
|
+
return ____self__143_56
|
|
1042
1172
|
end,
|
|
1043
1173
|
set = function(self, disablesAutoAttack)
|
|
1044
|
-
if not disablesAutoAttack and self[
|
|
1174
|
+
if not disablesAutoAttack and self[143] then
|
|
1045
1175
|
self.object:decrementDisableAutoAttackCounter()
|
|
1046
|
-
self[
|
|
1047
|
-
elseif disablesAutoAttack and not self[
|
|
1176
|
+
self[143] = nil
|
|
1177
|
+
elseif disablesAutoAttack and not self[143] then
|
|
1048
1178
|
self.object:incrementDisableAutoAttackCounter()
|
|
1049
|
-
self[
|
|
1179
|
+
self[143] = true
|
|
1050
1180
|
end
|
|
1051
1181
|
end
|
|
1052
1182
|
},
|
|
@@ -1057,19 +1187,19 @@ __TS__SetDescriptor(
|
|
|
1057
1187
|
"providesInvulnerability",
|
|
1058
1188
|
{
|
|
1059
1189
|
get = function(self)
|
|
1060
|
-
local
|
|
1061
|
-
if
|
|
1062
|
-
|
|
1190
|
+
local ____self__144_57 = self[144]
|
|
1191
|
+
if ____self__144_57 == nil then
|
|
1192
|
+
____self__144_57 = false
|
|
1063
1193
|
end
|
|
1064
|
-
return
|
|
1194
|
+
return ____self__144_57
|
|
1065
1195
|
end,
|
|
1066
1196
|
set = function(self, providesInvulnerability)
|
|
1067
|
-
if not providesInvulnerability and self[
|
|
1197
|
+
if not providesInvulnerability and self[144] then
|
|
1068
1198
|
self.object:decrementInvulnerabilityCounter()
|
|
1069
|
-
self[
|
|
1070
|
-
elseif providesInvulnerability and not self[
|
|
1199
|
+
self[144] = nil
|
|
1200
|
+
elseif providesInvulnerability and not self[144] then
|
|
1071
1201
|
self.object:incrementInvulnerabilityCounter()
|
|
1072
|
-
self[
|
|
1202
|
+
self[144] = true
|
|
1073
1203
|
end
|
|
1074
1204
|
end
|
|
1075
1205
|
},
|
|
@@ -1080,17 +1210,17 @@ __TS__SetDescriptor(
|
|
|
1080
1210
|
"killsOnExpiration",
|
|
1081
1211
|
{
|
|
1082
1212
|
get = function(self)
|
|
1083
|
-
local
|
|
1084
|
-
if
|
|
1085
|
-
|
|
1213
|
+
local ____self__145_58 = self[145]
|
|
1214
|
+
if ____self__145_58 == nil then
|
|
1215
|
+
____self__145_58 = false
|
|
1086
1216
|
end
|
|
1087
|
-
return
|
|
1217
|
+
return ____self__145_58
|
|
1088
1218
|
end,
|
|
1089
1219
|
set = function(self, killsOnExpiration)
|
|
1090
|
-
if not killsOnExpiration and self[
|
|
1091
|
-
self[
|
|
1092
|
-
elseif killsOnExpiration and not self[
|
|
1093
|
-
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
|
|
1094
1224
|
end
|
|
1095
1225
|
end
|
|
1096
1226
|
},
|
|
@@ -1101,17 +1231,17 @@ __TS__SetDescriptor(
|
|
|
1101
1231
|
"explodesOnExpiration",
|
|
1102
1232
|
{
|
|
1103
1233
|
get = function(self)
|
|
1104
|
-
local
|
|
1105
|
-
if
|
|
1106
|
-
|
|
1234
|
+
local ____self__146_59 = self[146]
|
|
1235
|
+
if ____self__146_59 == nil then
|
|
1236
|
+
____self__146_59 = false
|
|
1107
1237
|
end
|
|
1108
|
-
return
|
|
1238
|
+
return ____self__146_59
|
|
1109
1239
|
end,
|
|
1110
1240
|
set = function(self, killsOnExpiration)
|
|
1111
|
-
if not killsOnExpiration and self[
|
|
1112
|
-
self[
|
|
1113
|
-
elseif killsOnExpiration and not self[
|
|
1114
|
-
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
|
|
1115
1245
|
end
|
|
1116
1246
|
end
|
|
1117
1247
|
},
|
|
@@ -1122,13 +1252,13 @@ __TS__SetDescriptor(
|
|
|
1122
1252
|
"maximumDamageDealtEventCount",
|
|
1123
1253
|
{
|
|
1124
1254
|
get = function(self)
|
|
1125
|
-
return self[
|
|
1255
|
+
return self[133] or 0
|
|
1126
1256
|
end,
|
|
1127
1257
|
set = function(self, maximumDamageDealtEventCount)
|
|
1128
1258
|
if maximumDamageDealtEventCount == 0 then
|
|
1129
|
-
self[
|
|
1259
|
+
self[133] = nil
|
|
1130
1260
|
else
|
|
1131
|
-
self[
|
|
1261
|
+
self[133] = maximumDamageDealtEventCount
|
|
1132
1262
|
end
|
|
1133
1263
|
end
|
|
1134
1264
|
},
|
|
@@ -1139,13 +1269,13 @@ __TS__SetDescriptor(
|
|
|
1139
1269
|
"maximumDamageReceivedEventCount",
|
|
1140
1270
|
{
|
|
1141
1271
|
get = function(self)
|
|
1142
|
-
return self[
|
|
1272
|
+
return self[135] or 0
|
|
1143
1273
|
end,
|
|
1144
1274
|
set = function(self, maximumDamageReceivedEventCount)
|
|
1145
1275
|
if maximumDamageReceivedEventCount == 0 then
|
|
1146
|
-
self[
|
|
1276
|
+
self[135] = nil
|
|
1147
1277
|
else
|
|
1148
|
-
self[
|
|
1278
|
+
self[135] = maximumDamageReceivedEventCount
|
|
1149
1279
|
end
|
|
1150
1280
|
end
|
|
1151
1281
|
},
|
|
@@ -1156,13 +1286,13 @@ __TS__SetDescriptor(
|
|
|
1156
1286
|
"maximumAutoAttackCount",
|
|
1157
1287
|
{
|
|
1158
1288
|
get = function(self)
|
|
1159
|
-
return self[
|
|
1289
|
+
return self[131] or 0
|
|
1160
1290
|
end,
|
|
1161
1291
|
set = function(self, maximumAutoAttackCount)
|
|
1162
1292
|
if maximumAutoAttackCount == 0 then
|
|
1163
|
-
self[
|
|
1293
|
+
self[131] = nil
|
|
1164
1294
|
else
|
|
1165
|
-
self[
|
|
1295
|
+
self[131] = maximumAutoAttackCount
|
|
1166
1296
|
end
|
|
1167
1297
|
end
|
|
1168
1298
|
},
|
|
@@ -1173,10 +1303,10 @@ __TS__SetDescriptor(
|
|
|
1173
1303
|
"durationIncreaseOnAutoAttack",
|
|
1174
1304
|
{
|
|
1175
1305
|
get = function(self)
|
|
1176
|
-
return self[
|
|
1306
|
+
return self[108] or 0
|
|
1177
1307
|
end,
|
|
1178
1308
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1179
|
-
self[
|
|
1309
|
+
self[108] = durationIncreaseOnAutoAttack
|
|
1180
1310
|
end
|
|
1181
1311
|
},
|
|
1182
1312
|
true
|
|
@@ -1220,12 +1350,39 @@ __TS__SetDescriptor(
|
|
|
1220
1350
|
},
|
|
1221
1351
|
true
|
|
1222
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
|
+
)
|
|
1223
1366
|
__TS__SetDescriptor(
|
|
1224
1367
|
Buff.prototype,
|
|
1225
1368
|
"duration",
|
|
1226
|
-
{
|
|
1227
|
-
|
|
1228
|
-
|
|
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
|
+
},
|
|
1229
1386
|
true
|
|
1230
1387
|
)
|
|
1231
1388
|
__TS__SetDescriptor(
|
|
@@ -1233,13 +1390,13 @@ __TS__SetDescriptor(
|
|
|
1233
1390
|
"remainingDuration",
|
|
1234
1391
|
{
|
|
1235
1392
|
get = function(self)
|
|
1236
|
-
local
|
|
1237
|
-
return
|
|
1393
|
+
local ____opt_60 = self._timer
|
|
1394
|
+
return ____opt_60 and ____opt_60.remaining or 0
|
|
1238
1395
|
end,
|
|
1239
1396
|
set = function(self, remainingDuration)
|
|
1240
|
-
local
|
|
1241
|
-
local
|
|
1242
|
-
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)
|
|
1243
1400
|
if remainingDurationDelta ~= 0 then
|
|
1244
1401
|
self[103] = self[103] + remainingDurationDelta
|
|
1245
1402
|
if remainingDuration <= 0 then
|
|
@@ -1254,7 +1411,7 @@ __TS__SetDescriptor(
|
|
|
1254
1411
|
remainingDuration,
|
|
1255
1412
|
self._spellStealPriority,
|
|
1256
1413
|
self._learnLevelMinimum,
|
|
1257
|
-
self[
|
|
1414
|
+
self[147]
|
|
1258
1415
|
) then
|
|
1259
1416
|
local timer = self._timer
|
|
1260
1417
|
if timer == nil then
|
|
@@ -1269,38 +1426,134 @@ __TS__SetDescriptor(
|
|
|
1269
1426
|
},
|
|
1270
1427
|
true
|
|
1271
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
|
+
)
|
|
1494
|
+
__TS__SetDescriptor(
|
|
1495
|
+
Buff.prototype,
|
|
1496
|
+
"abilityCooldownFactor",
|
|
1497
|
+
{
|
|
1498
|
+
get = function(self)
|
|
1499
|
+
return self[148] or 1
|
|
1500
|
+
end,
|
|
1501
|
+
set = function(self, abilityCooldownFactor)
|
|
1502
|
+
local previousAbilityCooldownModifier = self[149]
|
|
1503
|
+
if previousAbilityCooldownModifier then
|
|
1504
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1505
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1506
|
+
end
|
|
1507
|
+
end
|
|
1508
|
+
local function modifier(ability, level, cooldown)
|
|
1509
|
+
return cooldown * abilityCooldownFactor
|
|
1510
|
+
end
|
|
1511
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1512
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1513
|
+
end
|
|
1514
|
+
self[149] = modifier
|
|
1515
|
+
self[148] = abilityCooldownFactor
|
|
1516
|
+
end
|
|
1517
|
+
},
|
|
1518
|
+
true
|
|
1519
|
+
)
|
|
1272
1520
|
Buff.createdEvent = buffCreatedEvent
|
|
1273
1521
|
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1274
1522
|
(function(self)
|
|
1275
|
-
local function destroyBuffIfNeeded(buff)
|
|
1276
|
-
|
|
1277
|
-
|
|
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
|
|
1278
1531
|
end
|
|
1279
1532
|
end
|
|
1280
|
-
____exports.checkBuff = function(unit, buffTypeId)
|
|
1533
|
+
____exports.checkBuff = function(unit, buffTypeId, isDispel, source)
|
|
1281
1534
|
local buffByTypeId = buffByTypeIdByUnit[unit]
|
|
1282
1535
|
if buffByTypeId ~= nil then
|
|
1283
1536
|
local buff = buffByTypeId[buffTypeId]
|
|
1284
1537
|
if buff ~= nil then
|
|
1285
|
-
destroyBuffIfNeeded(buff)
|
|
1538
|
+
destroyBuffIfNeeded(buff, isDispel, source)
|
|
1286
1539
|
end
|
|
1287
1540
|
end
|
|
1288
1541
|
end
|
|
1289
|
-
____exports.checkBuffs = function(unit)
|
|
1290
|
-
____exports.Buff:forAll(unit, destroyBuffIfNeeded)
|
|
1542
|
+
____exports.checkBuffs = function(unit, isDispel, source)
|
|
1543
|
+
____exports.Buff:forAll(unit, destroyBuffIfNeeded, isDispel, source)
|
|
1291
1544
|
end
|
|
1292
1545
|
Unit.abilityChannelingStartEvent:addListener(
|
|
1293
1546
|
0,
|
|
1294
1547
|
function(caster)
|
|
1295
|
-
____exports.checkBuffs(caster)
|
|
1296
|
-
Timer:run(____exports.checkBuffs, caster)
|
|
1548
|
+
____exports.checkBuffs(caster, true, caster)
|
|
1549
|
+
Timer:run(____exports.checkBuffs, caster, true, caster)
|
|
1297
1550
|
end
|
|
1298
1551
|
)
|
|
1299
1552
|
Unit.abilityUnitTargetChannelingStartEvent:addListener(
|
|
1300
1553
|
0,
|
|
1301
1554
|
function(caster, ability, target)
|
|
1302
|
-
____exports.checkBuffs(target)
|
|
1303
|
-
Timer:run(____exports.checkBuffs, target)
|
|
1555
|
+
____exports.checkBuffs(target, true, caster)
|
|
1556
|
+
Timer:run(____exports.checkBuffs, target, true, caster)
|
|
1304
1557
|
end
|
|
1305
1558
|
)
|
|
1306
1559
|
Unit.abilityPointTargetChannelingStartEvent:addListener(
|
|
@@ -1311,21 +1564,47 @@ Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
|
1311
1564
|
y,
|
|
1312
1565
|
ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1313
1566
|
)
|
|
1314
|
-
forEach(units, ____exports.checkBuffs)
|
|
1315
|
-
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
|
|
1316
1592
|
end
|
|
1317
1593
|
)
|
|
1318
1594
|
Unit.onDamage:addListener(
|
|
1319
1595
|
0,
|
|
1320
1596
|
function(source, target)
|
|
1321
1597
|
if source ~= nil then
|
|
1322
|
-
____exports.checkBuffs
|
|
1598
|
+
Timer:run(____exports.checkBuffs, source, false)
|
|
1323
1599
|
end
|
|
1324
|
-
____exports.checkBuffs
|
|
1600
|
+
Timer:run(____exports.checkBuffs, target, false)
|
|
1325
1601
|
end
|
|
1326
1602
|
)
|
|
1327
1603
|
buffCreatedEvent:addListener(function(buff)
|
|
1328
1604
|
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1329
1605
|
end)
|
|
1606
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1607
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1608
|
+
end)
|
|
1330
1609
|
end)(Buff)
|
|
1331
1610
|
return ____exports
|