warscript 0.0.1-dev.2af030d → 0.0.1-dev.2b3f95e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -1
- package/attributes.lua +17 -1
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/dummy.lua +4 -2
- package/core/types/effect.d.ts +24 -6
- package/core/types/effect.lua +169 -107
- package/core/types/frame.d.ts +29 -3
- package/core/types/frame.lua +222 -52
- package/core/types/group.d.ts +0 -1
- package/core/types/handle.lua +9 -9
- package/core/types/image.d.ts +0 -1
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +14 -13
- package/core/types/player.d.ts +18 -1
- package/core/types/player.lua +76 -26
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +18 -25
- package/core/types/sound.lua +113 -33
- package/core/types/tileCell.d.ts +18 -3
- package/core/types/tileCell.lua +108 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/types/unit.d.ts +5 -0
- package/core/types/unit.lua +13 -0
- package/core/util.d.ts +3 -1
- package/core/util.lua +127 -4
- package/decl/index.d.ts +1 -0
- package/decl/native.d.ts +1719 -964
- 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/ability.d.ts +1 -1
- package/engine/behavior.d.ts +24 -11
- package/engine/behavior.lua +233 -73
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
- package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
- package/engine/behaviour/ability/damage.d.ts +44 -11
- package/engine/behaviour/ability/damage.lua +89 -39
- package/engine/behaviour/ability/emulate-impact.d.ts +20 -0
- package/engine/behaviour/ability/emulate-impact.lua +117 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.d.ts +14 -3
- package/engine/behaviour/ability/instant-impact.lua +20 -16
- package/engine/behaviour/ability/on-command-impact.d.ts +9 -0
- package/engine/behaviour/ability/on-command-impact.lua +26 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
- package/engine/behaviour/ability/remove-buffs.lua +49 -0
- package/engine/behaviour/ability/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +43 -7
- package/engine/behaviour/ability.lua +264 -27
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -7
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +49 -4
- package/engine/behaviour/unit.lua +293 -2
- package/engine/buff.d.ts +189 -59
- package/engine/buff.lua +852 -281
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +30 -14
- package/engine/internal/ability.lua +177 -104
- package/engine/internal/item/ability.lua +162 -4
- 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 +37 -8
- package/engine/internal/item.d.ts +34 -18
- package/engine/internal/item.lua +308 -102
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
- 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/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- 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.d.ts +45 -1
- package/engine/internal/unit/ability.lua +144 -17
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +12 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +93 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +28 -8
- package/engine/internal/unit/bonus.lua +136 -9
- 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.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +14 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/inventory.d.ts +28 -0
- 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.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +36 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit/shared-vision-counter.d.ts +18 -0
- package/engine/internal/unit/shared-vision-counter.lua +31 -0
- package/engine/internal/unit+ability.d.ts +2 -1
- package/engine/internal/unit+ability.lua +85 -5
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +12 -38
- package/engine/internal/unit+damage.lua +48 -45
- package/engine/internal/unit+rally.lua +9 -31
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-data.lua +96 -68
- package/engine/internal/unit-missile-launch.lua +74 -13
- package/engine/internal/unit.d.ts +67 -35
- package/engine/internal/unit.lua +508 -308
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +52 -18
- package/engine/local-client.d.ts +35 -2
- package/engine/local-client.lua +367 -15
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -3
- package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
- 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/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -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-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/auxiliary/weapon-sound-type.d.ts +20 -14
- package/engine/object-data/auxiliary/weapon-sound-type.lua +58 -0
- package/engine/object-data/auxiliary/weapon-type.d.ts +25 -0
- package/engine/object-data/auxiliary/weapon-type.lua +2 -0
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/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/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +14 -3
- 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 -1
- 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/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +2 -3
- 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/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -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/feral-spirit.lua +2 -2
- 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/mine.d.ts +10 -0
- package/engine/object-data/entry/ability-type/mine.lua +39 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- 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-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -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/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/soul-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/spirit-touch.d.ts +2 -2
- package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
- 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/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- 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/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -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 +50 -22
- package/engine/object-data/entry/ability-type.lua +392 -47
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +131 -139
- package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
- package/engine/object-data/entry/buff-type.d.ts +10 -13
- package/engine/object-data/entry/buff-type.lua +39 -29
- package/engine/object-data/entry/destructible-type.d.ts +32 -3
- package/engine/object-data/entry/destructible-type.lua +181 -0
- package/engine/object-data/entry/item-type/blank.d.ts +0 -1
- package/engine/object-data/entry/item-type.d.ts +32 -4
- package/engine/object-data/entry/item-type.lua +177 -2
- package/engine/object-data/entry/lightning-type.d.ts +6 -9
- package/engine/object-data/entry/lightning-type.lua +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +81 -7
- package/engine/object-data/entry/unit-type.lua +619 -99
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +2 -3
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +23 -17
- package/engine/object-data/entry.lua +68 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +28 -5
- package/engine/object-field/ability.lua +61 -7
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -8
- package/engine/object-field.lua +362 -117
- package/engine/random.d.ts +11 -0
- package/engine/random.lua +30 -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 +48 -0
- package/engine/standard/entries/buff-type.lua +46 -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/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/entries/unit-type.d.ts +23 -0
- package/engine/standard/entries/unit-type.lua +23 -0
- package/engine/standard/fields/ability.d.ts +7 -5
- package/engine/standard/fields/ability.lua +7 -5
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +48 -2
- package/engine/text-tag.lua +287 -10
- package/engine/unit.d.ts +14 -0
- package/engine/unit.lua +23 -2
- package/event.d.ts +3 -4
- package/event.lua +9 -5
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +147 -43
- package/math/vec2.d.ts +2 -9
- package/math.d.ts +2 -2
- package/math.lua +14 -0
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +28 -3
- package/objutil/ability.d.ts +0 -1
- package/objutil/buff.d.ts +0 -1
- package/objutil/buff.lua +13 -12
- package/objutil/object.d.ts +0 -1
- package/objutil/object.lua +1 -1
- package/objutil/unit.d.ts +0 -1
- package/objutil/unit.lua +8 -0
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +3 -23
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +25 -0
- package/patch-lualib.lua +1 -1
- package/patch-natives.lua +3 -0
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/string.d.ts +16 -0
- package/string.lua +5 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +20 -6
- package/utility/arrays.lua +62 -3
- package/utility/bit-set.d.ts +0 -2
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +16 -4
- package/utility/linked-set.lua +54 -3
- package/utility/lua-maps.d.ts +16 -4
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +3 -2
- package/utility/lua-sets.lua +7 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +4 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.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
|
|
@@ -28,13 +30,11 @@ local ____math = require("math")
|
|
|
28
30
|
local max = ____math.max
|
|
29
31
|
local min = ____math.min
|
|
30
32
|
local ____bonus = require("engine.internal.unit.bonus")
|
|
31
|
-
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
32
|
-
local getUnitBonus = ____bonus.getUnitBonus
|
|
33
|
-
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
34
33
|
local UnitBonusType = ____bonus.UnitBonusType
|
|
35
34
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
35
|
local damageArea = ____area_2Ddamage.damageArea
|
|
37
36
|
local ____preconditions = require("utility.preconditions")
|
|
37
|
+
local check = ____preconditions.check
|
|
38
38
|
local checkNotNull = ____preconditions.checkNotNull
|
|
39
39
|
local ____effect = require("core.types.effect")
|
|
40
40
|
local Effect = ____effect.Effect
|
|
@@ -43,9 +43,25 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
43
43
|
local ____unit = require("engine.behaviour.unit")
|
|
44
44
|
local UnitBehavior = ____unit.UnitBehavior
|
|
45
45
|
local ____arrays = require("utility.arrays")
|
|
46
|
+
local emptyArray = ____arrays.emptyArray
|
|
46
47
|
local forEach = ____arrays.forEach
|
|
48
|
+
local ____event = require("event")
|
|
49
|
+
local Event = ____event.Event
|
|
47
50
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
51
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
52
|
+
local ____item = require("engine.internal.item")
|
|
53
|
+
local Item = ____item.Item
|
|
54
|
+
local ____destructable = require("core.types.destructable")
|
|
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
|
|
49
65
|
local getUnitAbility = BlzGetUnitAbility
|
|
50
66
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
51
67
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -91,14 +107,21 @@ local buffParametersKeys = {
|
|
|
91
107
|
damageIncrease = true,
|
|
92
108
|
damageIncreaseFactor = true,
|
|
93
109
|
armorIncrease = true,
|
|
94
|
-
|
|
110
|
+
maxHealthIncrease = true,
|
|
111
|
+
maxManaIncrease = true,
|
|
95
112
|
attackSpeedIncreaseFactor = true,
|
|
96
113
|
movementSpeedIncreaseFactor = true,
|
|
114
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
115
|
+
evasionProbability = true,
|
|
116
|
+
missProbability = true,
|
|
117
|
+
damageFactor = true,
|
|
97
118
|
receivedDamageFactor = true,
|
|
119
|
+
returnedMeleeDamageFactor = true,
|
|
98
120
|
receivedMagicDamageFactor = true,
|
|
99
121
|
durationIncreaseOnAutoAttack = true,
|
|
100
122
|
maximumDuration = true,
|
|
101
123
|
maximumRemainingDuration = true,
|
|
124
|
+
turnsIntoGhost = true,
|
|
102
125
|
stuns = true,
|
|
103
126
|
ignoresStunImmunity = true,
|
|
104
127
|
providesStunImmunity = true,
|
|
@@ -107,8 +130,32 @@ local buffParametersKeys = {
|
|
|
107
130
|
disablesAutoAttack = true,
|
|
108
131
|
destroysOnDamage = true,
|
|
109
132
|
maximumAutoAttackCount = true,
|
|
110
|
-
|
|
133
|
+
maximumDamageDealtEventCount = true,
|
|
134
|
+
maximumDamageReceivedEventCount = true,
|
|
135
|
+
absorbedDamageFactor = true,
|
|
136
|
+
maximumDamageAbsorbed = true,
|
|
137
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
138
|
+
uniqueGroup = true,
|
|
139
|
+
destructionSoundPresetId = true,
|
|
140
|
+
damageOnExpiration = true,
|
|
141
|
+
healingOnExpiration = true,
|
|
142
|
+
killsOnExpiration = true,
|
|
143
|
+
explodesOnExpiration = true,
|
|
144
|
+
abilityCooldownFactor = true,
|
|
145
|
+
sharesVisionWithSource = true
|
|
111
146
|
}
|
|
147
|
+
local function resolveEnumValue(ability, level, value)
|
|
148
|
+
if value == nil or type(value) == "number" then
|
|
149
|
+
return value
|
|
150
|
+
end
|
|
151
|
+
if ability == nil then
|
|
152
|
+
error(
|
|
153
|
+
__TS__New(IllegalArgumentException),
|
|
154
|
+
0
|
|
155
|
+
)
|
|
156
|
+
end
|
|
157
|
+
return value:getValue(ability, level or ability.level)
|
|
158
|
+
end
|
|
112
159
|
local function resolveNumberValue(ability, level, value)
|
|
113
160
|
if value == nil or type(value) == "number" then
|
|
114
161
|
return value
|
|
@@ -145,20 +192,43 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
145
192
|
buff[property] = resolvedValue
|
|
146
193
|
end
|
|
147
194
|
end
|
|
148
|
-
local buffBooleanParameters = {
|
|
195
|
+
local buffBooleanParameters = {
|
|
196
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
197
|
+
"turnsIntoGhost",
|
|
198
|
+
"stuns",
|
|
199
|
+
"ignoresStunImmunity",
|
|
200
|
+
"disablesAutoAttack",
|
|
201
|
+
"providesInvulnerability",
|
|
202
|
+
"killsOnExpiration",
|
|
203
|
+
"explodesOnExpiration",
|
|
204
|
+
"sharesVisionWithSource"
|
|
205
|
+
}
|
|
149
206
|
local buffNumberParameters = {
|
|
150
207
|
"durationIncreaseOnAutoAttack",
|
|
151
208
|
"attackSpeedIncreaseFactor",
|
|
152
209
|
"movementSpeedIncreaseFactor",
|
|
210
|
+
"manaRegenerationRateIncreaseFactor",
|
|
211
|
+
"evasionProbability",
|
|
153
212
|
"armorIncrease",
|
|
213
|
+
"maxHealthIncrease",
|
|
214
|
+
"maxManaIncrease",
|
|
215
|
+
"damageFactor",
|
|
154
216
|
"receivedDamageFactor",
|
|
217
|
+
"returnedMeleeDamageFactor",
|
|
155
218
|
"maximumAutoAttackCount",
|
|
219
|
+
"maximumDamageDealtEventCount",
|
|
220
|
+
"maximumDamageReceivedEventCount",
|
|
156
221
|
"damageInterval",
|
|
157
222
|
"damagePerInterval",
|
|
158
223
|
"damageOverDuration",
|
|
159
224
|
"healingInterval",
|
|
160
225
|
"healingPerInterval",
|
|
161
|
-
"healingOverDuration"
|
|
226
|
+
"healingOverDuration",
|
|
227
|
+
"damageOnExpiration",
|
|
228
|
+
"healingOnExpiration",
|
|
229
|
+
"absorbedDamageFactor",
|
|
230
|
+
"maximumDamageAbsorbed",
|
|
231
|
+
"abilityCooldownFactor"
|
|
162
232
|
}
|
|
163
233
|
local unsuccessfulApplicationMarker = {}
|
|
164
234
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -185,81 +255,110 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
185
255
|
return checkNotNull(firstNativeBuffTypeId)
|
|
186
256
|
end
|
|
187
257
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
188
|
-
if buff[
|
|
258
|
+
if buff[104] == uniqueGroup then
|
|
189
259
|
buff:destroy()
|
|
190
260
|
end
|
|
191
261
|
end
|
|
192
262
|
local function destroyBuff(buff)
|
|
193
263
|
buff:destroy()
|
|
194
264
|
end
|
|
265
|
+
local function destroyBuffOnDeath(buff)
|
|
266
|
+
if buff[100] == 0 then
|
|
267
|
+
Timer:run(destroyBuff, buff)
|
|
268
|
+
else
|
|
269
|
+
buff:destroy()
|
|
270
|
+
end
|
|
271
|
+
end
|
|
272
|
+
local function shareVisionWithSource(buff)
|
|
273
|
+
local source = buff[102]
|
|
274
|
+
if source ~= nil then
|
|
275
|
+
local player = source.owner
|
|
276
|
+
buff[101]:incrementSharedVisionCounter(player)
|
|
277
|
+
buff[151] = player
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
local function unshareVisionWithSource(buff)
|
|
281
|
+
local player = buff[151]
|
|
282
|
+
if player ~= nil then
|
|
283
|
+
buff[101]:decrementSharedVisionCounter(player)
|
|
284
|
+
buff[151] = nil
|
|
285
|
+
end
|
|
286
|
+
end
|
|
195
287
|
local function expireBuff(buff)
|
|
196
|
-
|
|
197
|
-
|
|
288
|
+
if buff.isDestroyed or buff[100] ~= 1 then
|
|
289
|
+
return
|
|
290
|
+
end
|
|
291
|
+
buff[100] = 2
|
|
292
|
+
local remainingDamageOverDuration = buff[114] or 0
|
|
293
|
+
local remainingHealingOverDuration = buff[114] or 0
|
|
198
294
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
199
295
|
buff:flashSpecialEffect()
|
|
200
296
|
if remainingDamageOverDuration ~= 0 then
|
|
201
|
-
(buff[
|
|
202
|
-
buff[
|
|
297
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
298
|
+
buff[114] = nil
|
|
203
299
|
end
|
|
204
300
|
if remainingHealingOverDuration ~= 0 then
|
|
205
|
-
(buff[
|
|
206
|
-
buff[
|
|
301
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
302
|
+
buff[119] = nil
|
|
207
303
|
end
|
|
208
304
|
end
|
|
209
305
|
Timer:run(destroyBuff, buff)
|
|
306
|
+
buff:onExpiration()
|
|
210
307
|
end
|
|
211
308
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
212
309
|
buffDamageIntervalTimerCallback(buff)
|
|
213
|
-
local timer = buff[
|
|
214
|
-
local damageInterval = buff[
|
|
310
|
+
local timer = buff[115]
|
|
311
|
+
local damageInterval = buff[113]
|
|
215
312
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
216
313
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
217
314
|
end
|
|
218
315
|
end
|
|
219
316
|
buffDamageIntervalTimerCallback = function(buff)
|
|
220
317
|
buff:flashSpecialEffect()
|
|
221
|
-
local source = buff[
|
|
222
|
-
local remainingDamageOverDuration = buff[
|
|
318
|
+
local source = buff[102] or buff[101]
|
|
319
|
+
local remainingDamageOverDuration = buff[114] or 0
|
|
223
320
|
if remainingDamageOverDuration ~= 0 then
|
|
224
|
-
local damageInterval = buff[
|
|
321
|
+
local damageInterval = buff[113] or 0
|
|
225
322
|
if damageInterval ~= 0 then
|
|
226
323
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
227
|
-
source:damageTarget(buff[
|
|
228
|
-
buff[
|
|
324
|
+
source:damageTarget(buff[101], damage)
|
|
325
|
+
buff[114] = remainingDamageOverDuration - damage
|
|
229
326
|
end
|
|
230
327
|
end
|
|
231
|
-
local damagePerInterval = buff[
|
|
328
|
+
local damagePerInterval = buff[112] or 0
|
|
232
329
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
233
|
-
source:damageTarget(buff[
|
|
330
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
234
331
|
end
|
|
235
332
|
end
|
|
236
333
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
237
334
|
buffHealingIntervalTimerCallback(buff)
|
|
238
|
-
local timer = buff[
|
|
239
|
-
local healingInterval = buff[
|
|
335
|
+
local timer = buff[120]
|
|
336
|
+
local healingInterval = buff[118]
|
|
240
337
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
241
338
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
242
339
|
end
|
|
243
340
|
end
|
|
244
341
|
buffHealingIntervalTimerCallback = function(buff)
|
|
245
|
-
if buff[
|
|
342
|
+
if buff[118] ~= buff[113] then
|
|
246
343
|
buff:flashSpecialEffect()
|
|
247
344
|
end
|
|
248
|
-
local source = buff[
|
|
249
|
-
local remainingHealingOverDuration = buff[
|
|
345
|
+
local source = buff[102] or buff[101]
|
|
346
|
+
local remainingHealingOverDuration = buff[119] or 0
|
|
250
347
|
if remainingHealingOverDuration ~= 0 then
|
|
251
|
-
local healingInterval = buff[
|
|
348
|
+
local healingInterval = buff[118] or 0
|
|
252
349
|
if healingInterval ~= 0 then
|
|
253
350
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
254
|
-
source:healTarget(buff[
|
|
255
|
-
buff[
|
|
351
|
+
source:healTarget(buff[101], healing)
|
|
352
|
+
buff[119] = remainingHealingOverDuration - healing
|
|
256
353
|
end
|
|
257
354
|
end
|
|
258
|
-
local healingPerInterval = buff[
|
|
355
|
+
local healingPerInterval = buff[117] or 0
|
|
259
356
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
260
|
-
source:healTarget(buff[
|
|
357
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
261
358
|
end
|
|
262
359
|
end
|
|
360
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
361
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
263
362
|
____exports.Buff = __TS__Class()
|
|
264
363
|
local Buff = ____exports.Buff
|
|
265
364
|
Buff.name = "Buff"
|
|
@@ -268,40 +367,44 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
268
367
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
269
368
|
self._unit = _unit
|
|
270
369
|
self.parameters = nil
|
|
271
|
-
self[100] =
|
|
370
|
+
self[100] = 0
|
|
371
|
+
self[101] = _unit
|
|
272
372
|
local typeId
|
|
273
373
|
local polarity
|
|
274
374
|
local resistanceType
|
|
275
375
|
local ability
|
|
376
|
+
local abilityBehavior
|
|
276
377
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
277
378
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
278
379
|
polarity = resistanceTypeOrPolarity
|
|
279
380
|
resistanceType = abilityOrParametersOrResistanceType
|
|
280
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
381
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
382
|
+
abilityBehavior = parametersOrAbility
|
|
383
|
+
ability = abilityBehavior.ability
|
|
384
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
281
385
|
ability = parametersOrAbility
|
|
282
|
-
|
|
283
|
-
ability = nil
|
|
386
|
+
elseif parametersOrAbility ~= nil then
|
|
284
387
|
parameters = parametersOrAbility
|
|
285
388
|
end
|
|
286
389
|
else
|
|
287
390
|
typeId = typeIdOrTypeIds
|
|
288
391
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
289
392
|
resistanceType = resistanceTypeOrPolarity
|
|
290
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
393
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
394
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
395
|
+
ability = abilityBehavior.ability
|
|
396
|
+
parameters = parametersOrAbility
|
|
397
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
291
398
|
ability = abilityOrParametersOrResistanceType
|
|
292
399
|
parameters = parametersOrAbility
|
|
293
|
-
|
|
294
|
-
ability = nil
|
|
400
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
295
401
|
parameters = abilityOrParametersOrResistanceType
|
|
402
|
+
else
|
|
403
|
+
parameters = parametersOrAbility
|
|
296
404
|
end
|
|
297
405
|
end
|
|
406
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
298
407
|
self.typeId = typeId
|
|
299
|
-
self.polarity = polarity
|
|
300
|
-
self.resistanceType = resistanceType
|
|
301
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
302
|
-
parameters = ability
|
|
303
|
-
ability = nil
|
|
304
|
-
end
|
|
305
408
|
local defaultParameters = self.constructor.defaultParameters
|
|
306
409
|
local level = parameters and parameters.level or defaultParameters.level
|
|
307
410
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -324,14 +427,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
324
427
|
learnLevelMinimum = learnLevelMinimum or ability:getField(ABILITY_IF_REQUIRED_LEVEL)
|
|
325
428
|
duration = duration or getAbilityDuration(ability, _unit)
|
|
326
429
|
end
|
|
430
|
+
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
431
|
+
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
432
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
433
|
+
if missProbability ~= nil then
|
|
434
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
435
|
+
self[147] = missProbability
|
|
436
|
+
end
|
|
327
437
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
328
438
|
if buffByTypeId == nil then
|
|
329
439
|
buffByTypeId = {}
|
|
330
440
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
331
441
|
end
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
442
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
443
|
+
local ____opt_15 = self.previousBuff
|
|
444
|
+
if ____opt_15 ~= nil then
|
|
445
|
+
____opt_15:destroy()
|
|
335
446
|
end
|
|
336
447
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
337
448
|
if uniqueGroup ~= nil then
|
|
@@ -340,18 +451,21 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
340
451
|
if not internalApplyBuff(
|
|
341
452
|
_unit,
|
|
342
453
|
typeId,
|
|
343
|
-
polarity,
|
|
344
|
-
resistanceType,
|
|
454
|
+
self.polarity,
|
|
455
|
+
self.resistanceType,
|
|
345
456
|
level,
|
|
346
457
|
duration,
|
|
347
458
|
spellStealPriority,
|
|
348
|
-
learnLevelMinimum
|
|
459
|
+
learnLevelMinimum,
|
|
460
|
+
missProbability
|
|
349
461
|
) then
|
|
462
|
+
self[100] = 1
|
|
350
463
|
UnitBehavior.prototype.destroy(self)
|
|
351
464
|
error(unsuccessfulApplicationMarker, 0)
|
|
352
465
|
end
|
|
353
466
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
354
467
|
if handle == nil then
|
|
468
|
+
self[100] = 1
|
|
355
469
|
UnitBehavior.prototype.destroy(self)
|
|
356
470
|
error(unsuccessfulApplicationMarker, 0)
|
|
357
471
|
end
|
|
@@ -360,20 +474,21 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
360
474
|
self._level = level
|
|
361
475
|
self._spellStealPriority = spellStealPriority
|
|
362
476
|
self._learnLevelMinimum = learnLevelMinimum
|
|
363
|
-
self[
|
|
364
|
-
self[
|
|
365
|
-
self[
|
|
366
|
-
self[
|
|
367
|
-
self[
|
|
477
|
+
self[102] = source
|
|
478
|
+
self[103] = duration or 0
|
|
479
|
+
self[104] = uniqueGroup
|
|
480
|
+
self[105] = parameters and parameters.destructionSoundPresetId or defaultParameters and defaultParameters.destructionSoundPresetId
|
|
481
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
482
|
+
self[107] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
368
483
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
369
484
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
370
|
-
local
|
|
371
|
-
local
|
|
372
|
-
local
|
|
373
|
-
if
|
|
374
|
-
|
|
485
|
+
local ____ability_28 = ability
|
|
486
|
+
local ____level_29 = level
|
|
487
|
+
local ____temp_27 = parameters and parameters[buffBooleanParameter]
|
|
488
|
+
if ____temp_27 == nil then
|
|
489
|
+
____temp_27 = defaultParameters[buffBooleanParameter]
|
|
375
490
|
end
|
|
376
|
-
if resolveBooleanValue(
|
|
491
|
+
if resolveBooleanValue(____ability_28, ____level_29, ____temp_27) then
|
|
377
492
|
self[buffBooleanParameter] = true
|
|
378
493
|
end
|
|
379
494
|
end
|
|
@@ -389,11 +504,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
389
504
|
end
|
|
390
505
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
391
506
|
if maximumDuration ~= nil then
|
|
392
|
-
self[
|
|
507
|
+
self[109] = resolveNumberValue(ability, level, maximumDuration)
|
|
393
508
|
end
|
|
394
509
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
395
510
|
if maximumRemainingDuration ~= nil then
|
|
396
|
-
self[
|
|
511
|
+
self[110] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
397
512
|
end
|
|
398
513
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
399
514
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -402,24 +517,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
402
517
|
abilityTypeIds = {}
|
|
403
518
|
self._abilityTypeIds = abilityTypeIds
|
|
404
519
|
end
|
|
405
|
-
for
|
|
520
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
521
|
+
local abilityParameters = checkNotNull(parametersAbilityTypeIds[abilityTypeId])
|
|
406
522
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
407
523
|
if addedAbility ~= nil then
|
|
408
524
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
409
525
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
413
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
414
|
-
end
|
|
415
|
-
elseif abilityParameterKey ~= "level" then
|
|
416
|
-
abilityParameterKey:setValue(
|
|
417
|
-
addedAbility,
|
|
418
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
419
|
-
)
|
|
420
|
-
end
|
|
526
|
+
if abilityParameters.isButtonVisible == false then
|
|
527
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
421
528
|
end
|
|
422
|
-
|
|
529
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
530
|
+
field[1]:setValue(
|
|
531
|
+
addedAbility,
|
|
532
|
+
resolveNumberValue(ability, level, field[2])
|
|
533
|
+
)
|
|
534
|
+
end
|
|
535
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
423
536
|
end
|
|
424
537
|
end
|
|
425
538
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -431,18 +544,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
431
544
|
self._behaviors = behaviors
|
|
432
545
|
end
|
|
433
546
|
end
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
if
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
547
|
+
if parameters ~= nil then
|
|
548
|
+
local additionalParameters = {}
|
|
549
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
550
|
+
if not buffParametersKeys[key] then
|
|
551
|
+
if ability then
|
|
552
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
553
|
+
else
|
|
554
|
+
additionalParameters[key] = parameters[key]
|
|
555
|
+
end
|
|
441
556
|
end
|
|
442
557
|
end
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
558
|
+
if (next(additionalParameters)) ~= nil then
|
|
559
|
+
self.parameters = additionalParameters
|
|
560
|
+
end
|
|
446
561
|
end
|
|
447
562
|
end
|
|
448
563
|
if duration ~= nil and duration > 0 then
|
|
@@ -450,77 +565,107 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
450
565
|
timer:start(duration, false, expireBuff, self)
|
|
451
566
|
self._timer = timer
|
|
452
567
|
end
|
|
568
|
+
self:onCreate()
|
|
569
|
+
self[100] = 1
|
|
570
|
+
Event.invoke(buffCreatedEvent, self)
|
|
453
571
|
end
|
|
454
|
-
function Buff.prototype.
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
local bonusIdByBonusType = self._bonusIdByBonusType
|
|
461
|
-
if bonusIdByBonusType == nil then
|
|
462
|
-
bonusIdByBonusType = {}
|
|
463
|
-
self._bonusIdByBonusType = bonusIdByBonusType
|
|
572
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
573
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
574
|
+
local abilityCooldownModifier = self[149]
|
|
575
|
+
if abilityCooldownModifier then
|
|
576
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
577
|
+
end
|
|
464
578
|
end
|
|
465
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
466
579
|
end
|
|
467
|
-
function Buff.prototype.
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
474
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
475
|
-
)
|
|
476
|
-
local ____isWidgetProvided_38
|
|
477
|
-
if isWidgetProvided then
|
|
478
|
-
____isWidgetProvided_38 = duration
|
|
479
|
-
else
|
|
480
|
-
____isWidgetProvided_38 = widgetOrDuration
|
|
580
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
581
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
582
|
+
local abilityCooldownModifier = self[149]
|
|
583
|
+
if abilityCooldownModifier then
|
|
584
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
585
|
+
end
|
|
481
586
|
end
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
587
|
+
end
|
|
588
|
+
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
589
|
+
self:flash(
|
|
590
|
+
self[106],
|
|
591
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin",
|
|
592
|
+
widgetOrXOrParametersOrDuration,
|
|
593
|
+
yOrParametersOrDuration,
|
|
594
|
+
parametersOrDuration
|
|
486
595
|
)
|
|
487
596
|
end
|
|
488
|
-
function Buff.prototype.flashSpecialEffect(self,
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
597
|
+
function Buff.prototype.flashSpecialEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
598
|
+
self:flash(
|
|
599
|
+
self[107],
|
|
600
|
+
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin",
|
|
601
|
+
widgetOrXOrParametersOrDuration,
|
|
602
|
+
yOrParametersOrDuration,
|
|
603
|
+
parametersOrDuration
|
|
496
604
|
)
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
605
|
+
end
|
|
606
|
+
function Buff.prototype.flash(self, modelPath, attachmentPoint, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
607
|
+
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
608
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
500
609
|
else
|
|
501
|
-
|
|
610
|
+
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
611
|
+
local ____Effect_44 = Effect
|
|
612
|
+
local ____Effect_flash_45 = Effect.flash
|
|
613
|
+
local ____array_43 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
614
|
+
local ____isWidgetProvided_42
|
|
615
|
+
if isWidgetProvided then
|
|
616
|
+
____isWidgetProvided_42 = yOrParametersOrDuration
|
|
617
|
+
else
|
|
618
|
+
____isWidgetProvided_42 = widgetOrXOrParametersOrDuration
|
|
619
|
+
end
|
|
620
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
621
|
+
____Effect_flash_45(
|
|
622
|
+
____Effect_44,
|
|
623
|
+
__TS__SparseArraySpread(____array_43)
|
|
624
|
+
)
|
|
502
625
|
end
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
626
|
+
end
|
|
627
|
+
function Buff.prototype.expire(self)
|
|
628
|
+
expireBuff(self)
|
|
629
|
+
end
|
|
630
|
+
function Buff.prototype.dispel(self, source)
|
|
631
|
+
if self.isDestroyed or self[100] ~= 1 then
|
|
632
|
+
return
|
|
633
|
+
end
|
|
634
|
+
self[100] = 2
|
|
635
|
+
do
|
|
636
|
+
pcall(function()
|
|
637
|
+
self:onDispel(source)
|
|
638
|
+
end)
|
|
639
|
+
do
|
|
640
|
+
self:destroy()
|
|
641
|
+
end
|
|
642
|
+
end
|
|
643
|
+
end
|
|
644
|
+
function Buff.prototype.onCreate(self)
|
|
508
645
|
end
|
|
509
646
|
function Buff.prototype.onDestroy(self)
|
|
647
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
648
|
+
self[100] = 2
|
|
510
649
|
local unit = self._unit
|
|
650
|
+
local destructionSoundPresetId = self[105]
|
|
651
|
+
if destructionSoundPresetId ~= nil then
|
|
652
|
+
Sound3D:playFromLabel(destructionSoundPresetId, SoundSettings.Ability, unit)
|
|
653
|
+
end
|
|
511
654
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
512
655
|
removeBuff(unit.handle, self.typeId)
|
|
656
|
+
else
|
|
657
|
+
removeBuffApplicator(unit.handle, self.typeId)
|
|
513
658
|
end
|
|
514
659
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
515
|
-
local healingIntervalTimer = self[
|
|
660
|
+
local healingIntervalTimer = self[120]
|
|
516
661
|
if healingIntervalTimer ~= nil then
|
|
517
662
|
healingIntervalTimer:destroy()
|
|
518
|
-
self[
|
|
663
|
+
self[120] = nil
|
|
519
664
|
end
|
|
520
|
-
local damageIntervalTimer = self[
|
|
665
|
+
local damageIntervalTimer = self[115]
|
|
521
666
|
if damageIntervalTimer ~= nil then
|
|
522
667
|
damageIntervalTimer:destroy()
|
|
523
|
-
self[
|
|
668
|
+
self[115] = nil
|
|
524
669
|
end
|
|
525
670
|
if self._timer ~= nil then
|
|
526
671
|
self._timer:destroy()
|
|
@@ -530,25 +675,35 @@ function Buff.prototype.onDestroy(self)
|
|
|
530
675
|
behavior:destroy()
|
|
531
676
|
end
|
|
532
677
|
end
|
|
533
|
-
|
|
678
|
+
local previousAbilityCooldownModifier = self[149]
|
|
679
|
+
if previousAbilityCooldownModifier then
|
|
680
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
681
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
682
|
+
end
|
|
683
|
+
end
|
|
684
|
+
if self[144] then
|
|
685
|
+
unit:decrementInvulnerabilityCounter()
|
|
686
|
+
end
|
|
687
|
+
if self[143] then
|
|
534
688
|
unit:decrementDisableAutoAttackCounter()
|
|
535
689
|
end
|
|
536
|
-
if self[
|
|
537
|
-
if self[
|
|
538
|
-
unit:
|
|
690
|
+
if self[141] then
|
|
691
|
+
if self[142] then
|
|
692
|
+
unit:decrementForceStunCounter()
|
|
539
693
|
end
|
|
540
694
|
unit:decrementStunCounter()
|
|
541
695
|
end
|
|
696
|
+
if self[140] then
|
|
697
|
+
unit:decrementGhostCounter()
|
|
698
|
+
end
|
|
699
|
+
unshareVisionWithSource(self)
|
|
542
700
|
if self._abilityTypeIds ~= nil then
|
|
543
|
-
for abilityTypeId in
|
|
701
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
544
702
|
unit:removeAbility(abilityTypeId)
|
|
545
703
|
end
|
|
546
704
|
end
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
550
|
-
end
|
|
551
|
-
end
|
|
705
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
706
|
+
self[100] = 3
|
|
552
707
|
return UnitBehavior.prototype.onDestroy(self)
|
|
553
708
|
end
|
|
554
709
|
function Buff.apply(self, ...)
|
|
@@ -583,44 +738,88 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
583
738
|
end
|
|
584
739
|
return nil
|
|
585
740
|
end
|
|
741
|
+
function Buff.prototype.onDispel(self, source)
|
|
742
|
+
end
|
|
743
|
+
function Buff.prototype.onExpiration(self)
|
|
744
|
+
local unit = self.unit
|
|
745
|
+
if self[121] ~= nil then
|
|
746
|
+
(self[102] or unit):damageTarget(unit, self[121] or 0)
|
|
747
|
+
end
|
|
748
|
+
if self[122] ~= nil then
|
|
749
|
+
(self[102] or unit):healTarget(unit, self[121] or 0)
|
|
750
|
+
end
|
|
751
|
+
if self[146] then
|
|
752
|
+
unit:explode()
|
|
753
|
+
elseif self[145] then
|
|
754
|
+
unit:kill()
|
|
755
|
+
end
|
|
756
|
+
end
|
|
586
757
|
function Buff.prototype.onDeath(self, source)
|
|
587
758
|
local unit = self.unit
|
|
588
|
-
if self[
|
|
759
|
+
if self[123] ~= nil then
|
|
589
760
|
damageArea(
|
|
590
|
-
self[
|
|
591
|
-
self[
|
|
761
|
+
self[102] or unit,
|
|
762
|
+
self[123],
|
|
592
763
|
unit.x,
|
|
593
764
|
unit.y,
|
|
594
|
-
self[121] or 0,
|
|
595
|
-
self[120] or 0,
|
|
596
|
-
self[123] or 0,
|
|
597
|
-
self[122] or 0,
|
|
598
765
|
self[125] or 0,
|
|
599
|
-
self[124] or 0
|
|
766
|
+
self[124] or 0,
|
|
767
|
+
self[127] or 0,
|
|
768
|
+
self[126] or 0,
|
|
769
|
+
self[129] or 0,
|
|
770
|
+
self[128] or 0
|
|
600
771
|
)
|
|
601
772
|
end
|
|
602
773
|
end
|
|
603
774
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
604
775
|
if event.isAttack then
|
|
605
|
-
if self[
|
|
606
|
-
local durationIncrease = self[
|
|
607
|
-
local maximumDuration = self[
|
|
776
|
+
if self[108] ~= nil then
|
|
777
|
+
local durationIncrease = self[108]
|
|
778
|
+
local maximumDuration = self[109] or 0
|
|
608
779
|
if maximumDuration > 0 then
|
|
609
780
|
durationIncrease = min(
|
|
610
781
|
durationIncrease,
|
|
611
|
-
max(0, maximumDuration - self[
|
|
782
|
+
max(0, maximumDuration - self[103])
|
|
612
783
|
)
|
|
613
784
|
end
|
|
614
785
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
615
|
-
local maximumRemainingDuration = self[
|
|
786
|
+
local maximumRemainingDuration = self[110] or 0
|
|
616
787
|
if maximumRemainingDuration > 0 then
|
|
617
788
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
618
789
|
end
|
|
619
790
|
self.remainingDuration = remainingDuration
|
|
620
791
|
end
|
|
621
|
-
local autoAttackCount = (self[
|
|
622
|
-
self[
|
|
623
|
-
if autoAttackCount == self[
|
|
792
|
+
local autoAttackCount = (self[130] or 0) + 1
|
|
793
|
+
self[130] = autoAttackCount
|
|
794
|
+
if autoAttackCount == self[131] then
|
|
795
|
+
self:destroy()
|
|
796
|
+
end
|
|
797
|
+
end
|
|
798
|
+
if event.originalAmount ~= 0 then
|
|
799
|
+
local damageDealtEventCount = (self[132] or 0) + 1
|
|
800
|
+
self[132] = damageDealtEventCount
|
|
801
|
+
if damageDealtEventCount == self[133] then
|
|
802
|
+
self:destroy()
|
|
803
|
+
end
|
|
804
|
+
end
|
|
805
|
+
end
|
|
806
|
+
function Buff.prototype.onDamageReceived(self, source, event)
|
|
807
|
+
if event.originalAmount ~= 0 then
|
|
808
|
+
local absorbedDamage = min(event.amount * (self[136] or 1), (self[137] or 0) - (self[138] or 0))
|
|
809
|
+
if absorbedDamage > 0 then
|
|
810
|
+
event.amount = event.amount - absorbedDamage
|
|
811
|
+
self[138] = (self[138] or 0) + absorbedDamage
|
|
812
|
+
local ____self__139_48 = self[139]
|
|
813
|
+
if ____self__139_48 == nil then
|
|
814
|
+
____self__139_48 = true
|
|
815
|
+
end
|
|
816
|
+
if ____self__139_48 and self[138] >= (self[137] or 0) then
|
|
817
|
+
self:destroy()
|
|
818
|
+
end
|
|
819
|
+
end
|
|
820
|
+
local damageReceivedEventCount = (self[134] or 0) + 1
|
|
821
|
+
self[134] = damageReceivedEventCount
|
|
822
|
+
if damageReceivedEventCount == self[135] then
|
|
624
823
|
self:destroy()
|
|
625
824
|
end
|
|
626
825
|
end
|
|
@@ -630,7 +829,7 @@ __TS__SetDescriptor(
|
|
|
630
829
|
Buff.prototype,
|
|
631
830
|
"source",
|
|
632
831
|
{get = function(self)
|
|
633
|
-
return self[
|
|
832
|
+
return self[102] or self._unit
|
|
634
833
|
end},
|
|
635
834
|
true
|
|
636
835
|
)
|
|
@@ -647,13 +846,13 @@ __TS__SetDescriptor(
|
|
|
647
846
|
"remainingDamageOverDuration",
|
|
648
847
|
{
|
|
649
848
|
get = function(self)
|
|
650
|
-
return self[
|
|
849
|
+
return self[114] or 0
|
|
651
850
|
end,
|
|
652
851
|
set = function(self, remainingDamageOverDuration)
|
|
653
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
654
|
-
self[
|
|
655
|
-
local damageOverDuration = (self[
|
|
656
|
-
self[
|
|
852
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[114] or 0)
|
|
853
|
+
self[114] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
854
|
+
local damageOverDuration = (self[111] or 0) + remainingDamageOverDurationDelta
|
|
855
|
+
self[111] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
657
856
|
end
|
|
658
857
|
},
|
|
659
858
|
true
|
|
@@ -663,13 +862,13 @@ __TS__SetDescriptor(
|
|
|
663
862
|
"damageOverDuration",
|
|
664
863
|
{
|
|
665
864
|
get = function(self)
|
|
666
|
-
return self[
|
|
865
|
+
return self[111] or 0
|
|
667
866
|
end,
|
|
668
867
|
set = function(self, damageOverDuration)
|
|
669
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
670
|
-
self[
|
|
671
|
-
local remainingDamageOverDuration = (self[
|
|
672
|
-
self[
|
|
868
|
+
local damageOverDurationDelta = damageOverDuration - (self[111] or 0)
|
|
869
|
+
self[111] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
870
|
+
local remainingDamageOverDuration = (self[114] or 0) + damageOverDurationDelta
|
|
871
|
+
self[114] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
673
872
|
end
|
|
674
873
|
},
|
|
675
874
|
true
|
|
@@ -679,10 +878,10 @@ __TS__SetDescriptor(
|
|
|
679
878
|
"damagePerInterval",
|
|
680
879
|
{
|
|
681
880
|
get = function(self)
|
|
682
|
-
return self[
|
|
881
|
+
return self[112] or 0
|
|
683
882
|
end,
|
|
684
883
|
set = function(self, damagePerInterval)
|
|
685
|
-
self[
|
|
884
|
+
self[112] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
686
885
|
end
|
|
687
886
|
},
|
|
688
887
|
true
|
|
@@ -692,25 +891,25 @@ __TS__SetDescriptor(
|
|
|
692
891
|
"damageInterval",
|
|
693
892
|
{
|
|
694
893
|
get = function(self)
|
|
695
|
-
return self[
|
|
894
|
+
return self[113] or 0
|
|
696
895
|
end,
|
|
697
896
|
set = function(self, damageInterval)
|
|
698
897
|
if damageInterval <= 0 then
|
|
699
|
-
self[
|
|
700
|
-
local timer = self[
|
|
898
|
+
self[113] = damageInterval ~= 0 and damageInterval or nil
|
|
899
|
+
local timer = self[115]
|
|
701
900
|
if timer ~= nil then
|
|
702
901
|
timer:destroy()
|
|
703
|
-
self[
|
|
902
|
+
self[115] = nil
|
|
704
903
|
end
|
|
705
904
|
return
|
|
706
905
|
end
|
|
707
|
-
self[
|
|
708
|
-
local
|
|
709
|
-
local elapsed =
|
|
710
|
-
local timer = self[
|
|
906
|
+
self[113] = damageInterval
|
|
907
|
+
local ____opt_49 = self._timer
|
|
908
|
+
local elapsed = ____opt_49 and ____opt_49.elapsed or 0
|
|
909
|
+
local timer = self[115]
|
|
711
910
|
if timer == nil then
|
|
712
911
|
timer = Timer:create()
|
|
713
|
-
self[
|
|
912
|
+
self[115] = timer
|
|
714
913
|
end
|
|
715
914
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
716
915
|
if initialDelay == damageInterval then
|
|
@@ -727,13 +926,13 @@ __TS__SetDescriptor(
|
|
|
727
926
|
"remainingHealingOverDuration",
|
|
728
927
|
{
|
|
729
928
|
get = function(self)
|
|
730
|
-
return self[
|
|
929
|
+
return self[119] or 0
|
|
731
930
|
end,
|
|
732
931
|
set = function(self, remainingHealingOverDuration)
|
|
733
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
734
|
-
self[
|
|
735
|
-
local healingOverDuration = (self[
|
|
736
|
-
self[
|
|
932
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[119] or 0)
|
|
933
|
+
self[114] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
934
|
+
local healingOverDuration = (self[116] or 0) + remainingHealingOverDurationDelta
|
|
935
|
+
self[116] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
737
936
|
end
|
|
738
937
|
},
|
|
739
938
|
true
|
|
@@ -743,13 +942,13 @@ __TS__SetDescriptor(
|
|
|
743
942
|
"healingOverDuration",
|
|
744
943
|
{
|
|
745
944
|
get = function(self)
|
|
746
|
-
return self[
|
|
945
|
+
return self[116] or 0
|
|
747
946
|
end,
|
|
748
947
|
set = function(self, healingOverDuration)
|
|
749
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
750
|
-
self[
|
|
751
|
-
local remainingHealingOverDuration = (self[
|
|
752
|
-
self[
|
|
948
|
+
local healingOverDurationDelta = healingOverDuration - (self[116] or 0)
|
|
949
|
+
self[116] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
950
|
+
local remainingHealingOverDuration = (self[119] or 0) + healingOverDurationDelta
|
|
951
|
+
self[119] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
753
952
|
end
|
|
754
953
|
},
|
|
755
954
|
true
|
|
@@ -759,10 +958,10 @@ __TS__SetDescriptor(
|
|
|
759
958
|
"healingPerInterval",
|
|
760
959
|
{
|
|
761
960
|
get = function(self)
|
|
762
|
-
return self[
|
|
961
|
+
return self[117] or 0
|
|
763
962
|
end,
|
|
764
963
|
set = function(self, healingPerInterval)
|
|
765
|
-
self[
|
|
964
|
+
self[117] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
766
965
|
end
|
|
767
966
|
},
|
|
768
967
|
true
|
|
@@ -772,25 +971,25 @@ __TS__SetDescriptor(
|
|
|
772
971
|
"healingInterval",
|
|
773
972
|
{
|
|
774
973
|
get = function(self)
|
|
775
|
-
return self[
|
|
974
|
+
return self[118] or 0
|
|
776
975
|
end,
|
|
777
976
|
set = function(self, healingInterval)
|
|
778
977
|
if healingInterval <= 0 then
|
|
779
|
-
self[
|
|
780
|
-
local timer = self[
|
|
978
|
+
self[118] = healingInterval ~= 0 and healingInterval or nil
|
|
979
|
+
local timer = self[120]
|
|
781
980
|
if timer ~= nil then
|
|
782
981
|
timer:destroy()
|
|
783
|
-
self[
|
|
982
|
+
self[120] = nil
|
|
784
983
|
end
|
|
785
984
|
return
|
|
786
985
|
end
|
|
787
|
-
self[
|
|
788
|
-
local
|
|
789
|
-
local elapsed =
|
|
790
|
-
local timer = self[
|
|
986
|
+
self[118] = healingInterval
|
|
987
|
+
local ____opt_51 = self._timer
|
|
988
|
+
local elapsed = ____opt_51 and ____opt_51.elapsed or 0
|
|
989
|
+
local timer = self[120]
|
|
791
990
|
if timer == nil then
|
|
792
991
|
timer = Timer:create()
|
|
793
|
-
self[
|
|
992
|
+
self[120] = timer
|
|
794
993
|
end
|
|
795
994
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
796
995
|
if initialDelay == healingInterval then
|
|
@@ -802,6 +1001,45 @@ __TS__SetDescriptor(
|
|
|
802
1001
|
},
|
|
803
1002
|
true
|
|
804
1003
|
)
|
|
1004
|
+
__TS__SetDescriptor(
|
|
1005
|
+
Buff.prototype,
|
|
1006
|
+
"damageOnExpiration",
|
|
1007
|
+
{
|
|
1008
|
+
get = function(self)
|
|
1009
|
+
return self[121] or 0
|
|
1010
|
+
end,
|
|
1011
|
+
set = function(self, damageOnExpiration)
|
|
1012
|
+
self[121] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
1013
|
+
end
|
|
1014
|
+
},
|
|
1015
|
+
true
|
|
1016
|
+
)
|
|
1017
|
+
__TS__SetDescriptor(
|
|
1018
|
+
Buff.prototype,
|
|
1019
|
+
"healingOnExpiration",
|
|
1020
|
+
{
|
|
1021
|
+
get = function(self)
|
|
1022
|
+
return self[122] or 0
|
|
1023
|
+
end,
|
|
1024
|
+
set = function(self, healingOnExpiration)
|
|
1025
|
+
self[122] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
1026
|
+
end
|
|
1027
|
+
},
|
|
1028
|
+
true
|
|
1029
|
+
)
|
|
1030
|
+
__TS__SetDescriptor(
|
|
1031
|
+
Buff.prototype,
|
|
1032
|
+
"damageFactor",
|
|
1033
|
+
{
|
|
1034
|
+
get = function(self)
|
|
1035
|
+
return self:getUnitBonus(UnitBonusType.DAMAGE_FACTOR)
|
|
1036
|
+
end,
|
|
1037
|
+
set = function(self, damageFactor)
|
|
1038
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.DAMAGE_FACTOR, damageFactor)
|
|
1039
|
+
end
|
|
1040
|
+
},
|
|
1041
|
+
true
|
|
1042
|
+
)
|
|
805
1043
|
__TS__SetDescriptor(
|
|
806
1044
|
Buff.prototype,
|
|
807
1045
|
"receivedDamageFactor",
|
|
@@ -815,6 +1053,19 @@ __TS__SetDescriptor(
|
|
|
815
1053
|
},
|
|
816
1054
|
true
|
|
817
1055
|
)
|
|
1056
|
+
__TS__SetDescriptor(
|
|
1057
|
+
Buff.prototype,
|
|
1058
|
+
"returnedMeleeDamageFactor",
|
|
1059
|
+
{
|
|
1060
|
+
get = function(self)
|
|
1061
|
+
return self:getUnitBonus(UnitBonusType.RETURNED_MELEE_DAMAGE_FACTOR)
|
|
1062
|
+
end,
|
|
1063
|
+
set = function(self, returnedMeleeDamageFactor)
|
|
1064
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.RETURNED_MELEE_DAMAGE_FACTOR, returnedMeleeDamageFactor)
|
|
1065
|
+
end
|
|
1066
|
+
},
|
|
1067
|
+
true
|
|
1068
|
+
)
|
|
818
1069
|
__TS__SetDescriptor(
|
|
819
1070
|
Buff.prototype,
|
|
820
1071
|
"armorIncrease",
|
|
@@ -828,30 +1079,79 @@ __TS__SetDescriptor(
|
|
|
828
1079
|
},
|
|
829
1080
|
true
|
|
830
1081
|
)
|
|
1082
|
+
__TS__SetDescriptor(
|
|
1083
|
+
Buff.prototype,
|
|
1084
|
+
"maxHealthIncrease",
|
|
1085
|
+
{
|
|
1086
|
+
get = function(self)
|
|
1087
|
+
return self:getUnitBonus(UnitBonusType.HEALTH)
|
|
1088
|
+
end,
|
|
1089
|
+
set = function(self, maxHealthIncrease)
|
|
1090
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.HEALTH, maxHealthIncrease)
|
|
1091
|
+
end
|
|
1092
|
+
},
|
|
1093
|
+
true
|
|
1094
|
+
)
|
|
1095
|
+
__TS__SetDescriptor(
|
|
1096
|
+
Buff.prototype,
|
|
1097
|
+
"maxManaIncrease",
|
|
1098
|
+
{
|
|
1099
|
+
get = function(self)
|
|
1100
|
+
return self:getUnitBonus(UnitBonusType.MANA)
|
|
1101
|
+
end,
|
|
1102
|
+
set = function(self, maxManaIncrease)
|
|
1103
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA, maxManaIncrease)
|
|
1104
|
+
end
|
|
1105
|
+
},
|
|
1106
|
+
true
|
|
1107
|
+
)
|
|
1108
|
+
__TS__SetDescriptor(
|
|
1109
|
+
Buff.prototype,
|
|
1110
|
+
"turnsIntoGhost",
|
|
1111
|
+
{
|
|
1112
|
+
get = function(self)
|
|
1113
|
+
local ____self__140_53 = self[140]
|
|
1114
|
+
if ____self__140_53 == nil then
|
|
1115
|
+
____self__140_53 = false
|
|
1116
|
+
end
|
|
1117
|
+
return ____self__140_53
|
|
1118
|
+
end,
|
|
1119
|
+
set = function(self, turnsIntoGhost)
|
|
1120
|
+
if not turnsIntoGhost and self[140] then
|
|
1121
|
+
self.object:decrementGhostCounter()
|
|
1122
|
+
self[140] = nil
|
|
1123
|
+
elseif turnsIntoGhost and not self[140] then
|
|
1124
|
+
self.object:incrementGhostCounter()
|
|
1125
|
+
self[140] = true
|
|
1126
|
+
end
|
|
1127
|
+
end
|
|
1128
|
+
},
|
|
1129
|
+
true
|
|
1130
|
+
)
|
|
831
1131
|
__TS__SetDescriptor(
|
|
832
1132
|
Buff.prototype,
|
|
833
1133
|
"stuns",
|
|
834
1134
|
{
|
|
835
1135
|
get = function(self)
|
|
836
|
-
local
|
|
837
|
-
if
|
|
838
|
-
|
|
1136
|
+
local ____self__141_54 = self[141]
|
|
1137
|
+
if ____self__141_54 == nil then
|
|
1138
|
+
____self__141_54 = false
|
|
839
1139
|
end
|
|
840
|
-
return
|
|
1140
|
+
return ____self__141_54
|
|
841
1141
|
end,
|
|
842
1142
|
set = function(self, stuns)
|
|
843
|
-
if not stuns and self[
|
|
844
|
-
if self[
|
|
845
|
-
self.object:
|
|
1143
|
+
if not stuns and self[141] then
|
|
1144
|
+
if self[142] then
|
|
1145
|
+
self.object:decrementForceStunCounter()
|
|
846
1146
|
end
|
|
847
1147
|
self.object:decrementStunCounter()
|
|
848
|
-
self[
|
|
849
|
-
elseif stuns and not self[
|
|
850
|
-
if self[
|
|
851
|
-
self.object:
|
|
1148
|
+
self[141] = nil
|
|
1149
|
+
elseif stuns and not self[141] then
|
|
1150
|
+
if self[142] then
|
|
1151
|
+
self.object:incrementForceStunCounter()
|
|
852
1152
|
end
|
|
853
1153
|
self.object:incrementStunCounter()
|
|
854
|
-
self[
|
|
1154
|
+
self[141] = true
|
|
855
1155
|
end
|
|
856
1156
|
end
|
|
857
1157
|
},
|
|
@@ -862,23 +1162,23 @@ __TS__SetDescriptor(
|
|
|
862
1162
|
"ignoresStunImmunity",
|
|
863
1163
|
{
|
|
864
1164
|
get = function(self)
|
|
865
|
-
local
|
|
866
|
-
if
|
|
867
|
-
|
|
1165
|
+
local ____self__142_55 = self[142]
|
|
1166
|
+
if ____self__142_55 == nil then
|
|
1167
|
+
____self__142_55 = false
|
|
868
1168
|
end
|
|
869
|
-
return
|
|
1169
|
+
return ____self__142_55
|
|
870
1170
|
end,
|
|
871
1171
|
set = function(self, ignoresStunImmunity)
|
|
872
|
-
if not ignoresStunImmunity and self[
|
|
873
|
-
if self[
|
|
874
|
-
self.object:
|
|
1172
|
+
if not ignoresStunImmunity and self[142] then
|
|
1173
|
+
if self[141] then
|
|
1174
|
+
self.object:decrementForceStunCounter()
|
|
875
1175
|
end
|
|
876
|
-
self[
|
|
877
|
-
elseif ignoresStunImmunity and not self[
|
|
878
|
-
if self[
|
|
879
|
-
self.object:
|
|
1176
|
+
self[142] = nil
|
|
1177
|
+
elseif ignoresStunImmunity and not self[142] then
|
|
1178
|
+
if self[141] then
|
|
1179
|
+
self.object:incrementForceStunCounter()
|
|
880
1180
|
end
|
|
881
|
-
self[
|
|
1181
|
+
self[142] = true
|
|
882
1182
|
end
|
|
883
1183
|
end
|
|
884
1184
|
},
|
|
@@ -889,19 +1189,19 @@ __TS__SetDescriptor(
|
|
|
889
1189
|
"disablesAutoAttack",
|
|
890
1190
|
{
|
|
891
1191
|
get = function(self)
|
|
892
|
-
local
|
|
893
|
-
if
|
|
894
|
-
|
|
1192
|
+
local ____self__143_56 = self[143]
|
|
1193
|
+
if ____self__143_56 == nil then
|
|
1194
|
+
____self__143_56 = false
|
|
895
1195
|
end
|
|
896
|
-
return
|
|
1196
|
+
return ____self__143_56
|
|
897
1197
|
end,
|
|
898
1198
|
set = function(self, disablesAutoAttack)
|
|
899
|
-
if not disablesAutoAttack and self[
|
|
1199
|
+
if not disablesAutoAttack and self[143] then
|
|
900
1200
|
self.object:decrementDisableAutoAttackCounter()
|
|
901
|
-
self[
|
|
902
|
-
elseif disablesAutoAttack and not self[
|
|
1201
|
+
self[143] = nil
|
|
1202
|
+
elseif disablesAutoAttack and not self[143] then
|
|
903
1203
|
self.object:incrementDisableAutoAttackCounter()
|
|
904
|
-
self[
|
|
1204
|
+
self[143] = true
|
|
905
1205
|
end
|
|
906
1206
|
end
|
|
907
1207
|
},
|
|
@@ -912,19 +1212,118 @@ __TS__SetDescriptor(
|
|
|
912
1212
|
"providesInvulnerability",
|
|
913
1213
|
{
|
|
914
1214
|
get = function(self)
|
|
915
|
-
local
|
|
916
|
-
if
|
|
917
|
-
|
|
1215
|
+
local ____self__144_57 = self[144]
|
|
1216
|
+
if ____self__144_57 == nil then
|
|
1217
|
+
____self__144_57 = false
|
|
918
1218
|
end
|
|
919
|
-
return
|
|
1219
|
+
return ____self__144_57
|
|
920
1220
|
end,
|
|
921
1221
|
set = function(self, providesInvulnerability)
|
|
922
|
-
if not providesInvulnerability and self[
|
|
1222
|
+
if not providesInvulnerability and self[144] then
|
|
923
1223
|
self.object:decrementInvulnerabilityCounter()
|
|
924
|
-
self[
|
|
925
|
-
elseif providesInvulnerability and not self[
|
|
1224
|
+
self[144] = nil
|
|
1225
|
+
elseif providesInvulnerability and not self[144] then
|
|
926
1226
|
self.object:incrementInvulnerabilityCounter()
|
|
927
|
-
self[
|
|
1227
|
+
self[144] = true
|
|
1228
|
+
end
|
|
1229
|
+
end
|
|
1230
|
+
},
|
|
1231
|
+
true
|
|
1232
|
+
)
|
|
1233
|
+
__TS__SetDescriptor(
|
|
1234
|
+
Buff.prototype,
|
|
1235
|
+
"killsOnExpiration",
|
|
1236
|
+
{
|
|
1237
|
+
get = function(self)
|
|
1238
|
+
local ____self__145_58 = self[145]
|
|
1239
|
+
if ____self__145_58 == nil then
|
|
1240
|
+
____self__145_58 = false
|
|
1241
|
+
end
|
|
1242
|
+
return ____self__145_58
|
|
1243
|
+
end,
|
|
1244
|
+
set = function(self, killsOnExpiration)
|
|
1245
|
+
if not killsOnExpiration and self[145] then
|
|
1246
|
+
self[145] = nil
|
|
1247
|
+
elseif killsOnExpiration and not self[145] then
|
|
1248
|
+
self[145] = true
|
|
1249
|
+
end
|
|
1250
|
+
end
|
|
1251
|
+
},
|
|
1252
|
+
true
|
|
1253
|
+
)
|
|
1254
|
+
__TS__SetDescriptor(
|
|
1255
|
+
Buff.prototype,
|
|
1256
|
+
"explodesOnExpiration",
|
|
1257
|
+
{
|
|
1258
|
+
get = function(self)
|
|
1259
|
+
local ____self__146_59 = self[146]
|
|
1260
|
+
if ____self__146_59 == nil then
|
|
1261
|
+
____self__146_59 = false
|
|
1262
|
+
end
|
|
1263
|
+
return ____self__146_59
|
|
1264
|
+
end,
|
|
1265
|
+
set = function(self, killsOnExpiration)
|
|
1266
|
+
if not killsOnExpiration and self[146] then
|
|
1267
|
+
self[146] = nil
|
|
1268
|
+
elseif killsOnExpiration and not self[146] then
|
|
1269
|
+
self[146] = true
|
|
1270
|
+
end
|
|
1271
|
+
end
|
|
1272
|
+
},
|
|
1273
|
+
true
|
|
1274
|
+
)
|
|
1275
|
+
__TS__SetDescriptor(
|
|
1276
|
+
Buff.prototype,
|
|
1277
|
+
"sharesVisionWithSource",
|
|
1278
|
+
{
|
|
1279
|
+
get = function(self)
|
|
1280
|
+
local ____self__150_60 = self[150]
|
|
1281
|
+
if ____self__150_60 == nil then
|
|
1282
|
+
____self__150_60 = false
|
|
1283
|
+
end
|
|
1284
|
+
return ____self__150_60
|
|
1285
|
+
end,
|
|
1286
|
+
set = function(self, sharesVisionWithSource)
|
|
1287
|
+
if not sharesVisionWithSource and self[150] then
|
|
1288
|
+
unshareVisionWithSource(self)
|
|
1289
|
+
self[150] = nil
|
|
1290
|
+
elseif sharesVisionWithSource and not self[150] then
|
|
1291
|
+
self[150] = true
|
|
1292
|
+
shareVisionWithSource(self)
|
|
1293
|
+
end
|
|
1294
|
+
end
|
|
1295
|
+
},
|
|
1296
|
+
true
|
|
1297
|
+
)
|
|
1298
|
+
__TS__SetDescriptor(
|
|
1299
|
+
Buff.prototype,
|
|
1300
|
+
"maximumDamageDealtEventCount",
|
|
1301
|
+
{
|
|
1302
|
+
get = function(self)
|
|
1303
|
+
return self[133] or 0
|
|
1304
|
+
end,
|
|
1305
|
+
set = function(self, maximumDamageDealtEventCount)
|
|
1306
|
+
if maximumDamageDealtEventCount == 0 then
|
|
1307
|
+
self[133] = nil
|
|
1308
|
+
else
|
|
1309
|
+
self[133] = maximumDamageDealtEventCount
|
|
1310
|
+
end
|
|
1311
|
+
end
|
|
1312
|
+
},
|
|
1313
|
+
true
|
|
1314
|
+
)
|
|
1315
|
+
__TS__SetDescriptor(
|
|
1316
|
+
Buff.prototype,
|
|
1317
|
+
"maximumDamageReceivedEventCount",
|
|
1318
|
+
{
|
|
1319
|
+
get = function(self)
|
|
1320
|
+
return self[135] or 0
|
|
1321
|
+
end,
|
|
1322
|
+
set = function(self, maximumDamageReceivedEventCount)
|
|
1323
|
+
if maximumDamageReceivedEventCount == 0 then
|
|
1324
|
+
self[135] = nil
|
|
1325
|
+
else
|
|
1326
|
+
self[135] = maximumDamageReceivedEventCount
|
|
928
1327
|
end
|
|
929
1328
|
end
|
|
930
1329
|
},
|
|
@@ -935,13 +1334,13 @@ __TS__SetDescriptor(
|
|
|
935
1334
|
"maximumAutoAttackCount",
|
|
936
1335
|
{
|
|
937
1336
|
get = function(self)
|
|
938
|
-
return self[
|
|
1337
|
+
return self[131] or 0
|
|
939
1338
|
end,
|
|
940
1339
|
set = function(self, maximumAutoAttackCount)
|
|
941
1340
|
if maximumAutoAttackCount == 0 then
|
|
942
|
-
self[
|
|
1341
|
+
self[131] = nil
|
|
943
1342
|
else
|
|
944
|
-
self[
|
|
1343
|
+
self[131] = maximumAutoAttackCount
|
|
945
1344
|
end
|
|
946
1345
|
end
|
|
947
1346
|
},
|
|
@@ -952,10 +1351,10 @@ __TS__SetDescriptor(
|
|
|
952
1351
|
"durationIncreaseOnAutoAttack",
|
|
953
1352
|
{
|
|
954
1353
|
get = function(self)
|
|
955
|
-
return self[
|
|
1354
|
+
return self[108] or 0
|
|
956
1355
|
end,
|
|
957
1356
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
958
|
-
self[
|
|
1357
|
+
self[108] = durationIncreaseOnAutoAttack
|
|
959
1358
|
end
|
|
960
1359
|
},
|
|
961
1360
|
true
|
|
@@ -986,12 +1385,52 @@ __TS__SetDescriptor(
|
|
|
986
1385
|
},
|
|
987
1386
|
true
|
|
988
1387
|
)
|
|
1388
|
+
__TS__SetDescriptor(
|
|
1389
|
+
Buff.prototype,
|
|
1390
|
+
"evasionProbability",
|
|
1391
|
+
{
|
|
1392
|
+
get = function(self)
|
|
1393
|
+
return self:getUnitBonus(UnitBonusType.EVASION_PROBABILITY)
|
|
1394
|
+
end,
|
|
1395
|
+
set = function(self, evasionProbability)
|
|
1396
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.EVASION_PROBABILITY, evasionProbability)
|
|
1397
|
+
end
|
|
1398
|
+
},
|
|
1399
|
+
true
|
|
1400
|
+
)
|
|
1401
|
+
__TS__SetDescriptor(
|
|
1402
|
+
Buff.prototype,
|
|
1403
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1404
|
+
{
|
|
1405
|
+
get = function(self)
|
|
1406
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1407
|
+
end,
|
|
1408
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1409
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1410
|
+
end
|
|
1411
|
+
},
|
|
1412
|
+
true
|
|
1413
|
+
)
|
|
989
1414
|
__TS__SetDescriptor(
|
|
990
1415
|
Buff.prototype,
|
|
991
1416
|
"duration",
|
|
992
|
-
{
|
|
993
|
-
|
|
994
|
-
|
|
1417
|
+
{
|
|
1418
|
+
get = function(self)
|
|
1419
|
+
return self[103]
|
|
1420
|
+
end,
|
|
1421
|
+
set = function(self, duration)
|
|
1422
|
+
if duration <= 0 then
|
|
1423
|
+
local timer = self._timer
|
|
1424
|
+
if timer ~= nil then
|
|
1425
|
+
timer:destroy()
|
|
1426
|
+
self._timer = nil
|
|
1427
|
+
end
|
|
1428
|
+
self[103] = 0
|
|
1429
|
+
else
|
|
1430
|
+
self.remainingDuration = self.remainingDuration + (duration - self[103])
|
|
1431
|
+
end
|
|
1432
|
+
end
|
|
1433
|
+
},
|
|
995
1434
|
true
|
|
996
1435
|
)
|
|
997
1436
|
__TS__SetDescriptor(
|
|
@@ -999,15 +1438,15 @@ __TS__SetDescriptor(
|
|
|
999
1438
|
"remainingDuration",
|
|
1000
1439
|
{
|
|
1001
1440
|
get = function(self)
|
|
1002
|
-
local
|
|
1003
|
-
return
|
|
1441
|
+
local ____opt_61 = self._timer
|
|
1442
|
+
return ____opt_61 and ____opt_61.remaining or 0
|
|
1004
1443
|
end,
|
|
1005
1444
|
set = function(self, remainingDuration)
|
|
1006
|
-
local
|
|
1007
|
-
local
|
|
1008
|
-
local remainingDurationDelta =
|
|
1445
|
+
local ____remainingDuration_65 = remainingDuration
|
|
1446
|
+
local ____opt_63 = self._timer
|
|
1447
|
+
local remainingDurationDelta = ____remainingDuration_65 - (____opt_63 and ____opt_63.remaining or 0)
|
|
1009
1448
|
if remainingDurationDelta ~= 0 then
|
|
1010
|
-
self[
|
|
1449
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1011
1450
|
if remainingDuration <= 0 then
|
|
1012
1451
|
Timer:run(destroyBuff, self)
|
|
1013
1452
|
else
|
|
@@ -1019,7 +1458,8 @@ __TS__SetDescriptor(
|
|
|
1019
1458
|
self._level,
|
|
1020
1459
|
remainingDuration,
|
|
1021
1460
|
self._spellStealPriority,
|
|
1022
|
-
self._learnLevelMinimum
|
|
1461
|
+
self._learnLevelMinimum,
|
|
1462
|
+
self[147]
|
|
1023
1463
|
) then
|
|
1024
1464
|
local timer = self._timer
|
|
1025
1465
|
if timer == nil then
|
|
@@ -1033,39 +1473,135 @@ __TS__SetDescriptor(
|
|
|
1033
1473
|
end
|
|
1034
1474
|
},
|
|
1035
1475
|
true
|
|
1036
|
-
)
|
|
1476
|
+
)
|
|
1477
|
+
__TS__SetDescriptor(
|
|
1478
|
+
Buff.prototype,
|
|
1479
|
+
"absorbedDamageFactor",
|
|
1480
|
+
{
|
|
1481
|
+
get = function(self)
|
|
1482
|
+
return self[136] or 1
|
|
1483
|
+
end,
|
|
1484
|
+
set = function(self, absorbedDamageFactor)
|
|
1485
|
+
if absorbedDamageFactor == 1 then
|
|
1486
|
+
self[136] = nil
|
|
1487
|
+
else
|
|
1488
|
+
self[136] = absorbedDamageFactor
|
|
1489
|
+
end
|
|
1490
|
+
end
|
|
1491
|
+
},
|
|
1492
|
+
true
|
|
1493
|
+
)
|
|
1494
|
+
__TS__SetDescriptor(
|
|
1495
|
+
Buff.prototype,
|
|
1496
|
+
"maximumDamageAbsorbed",
|
|
1497
|
+
{
|
|
1498
|
+
get = function(self)
|
|
1499
|
+
return self[137] or 0
|
|
1500
|
+
end,
|
|
1501
|
+
set = function(self, maximumDamageAbsorbed)
|
|
1502
|
+
if maximumDamageAbsorbed == 0 then
|
|
1503
|
+
self[137] = nil
|
|
1504
|
+
else
|
|
1505
|
+
self[137] = maximumDamageAbsorbed
|
|
1506
|
+
end
|
|
1507
|
+
end
|
|
1508
|
+
},
|
|
1509
|
+
true
|
|
1510
|
+
)
|
|
1511
|
+
__TS__SetDescriptor(
|
|
1512
|
+
Buff.prototype,
|
|
1513
|
+
"damageAbsorbed",
|
|
1514
|
+
{get = function(self)
|
|
1515
|
+
return self[138] or 0
|
|
1516
|
+
end},
|
|
1517
|
+
true
|
|
1518
|
+
)
|
|
1519
|
+
__TS__SetDescriptor(
|
|
1520
|
+
Buff.prototype,
|
|
1521
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
1522
|
+
{
|
|
1523
|
+
get = function(self)
|
|
1524
|
+
local ____self__139_66 = self[139]
|
|
1525
|
+
if ____self__139_66 == nil then
|
|
1526
|
+
____self__139_66 = true
|
|
1527
|
+
end
|
|
1528
|
+
return ____self__139_66
|
|
1529
|
+
end,
|
|
1530
|
+
set = function(self, destroysOnMaximumDamageAbsorbed)
|
|
1531
|
+
local ____destroysOnMaximumDamageAbsorbed_67
|
|
1532
|
+
if destroysOnMaximumDamageAbsorbed then
|
|
1533
|
+
____destroysOnMaximumDamageAbsorbed_67 = nil
|
|
1534
|
+
else
|
|
1535
|
+
____destroysOnMaximumDamageAbsorbed_67 = false
|
|
1536
|
+
end
|
|
1537
|
+
self[139] = ____destroysOnMaximumDamageAbsorbed_67
|
|
1538
|
+
end
|
|
1539
|
+
},
|
|
1540
|
+
true
|
|
1541
|
+
)
|
|
1542
|
+
__TS__SetDescriptor(
|
|
1543
|
+
Buff.prototype,
|
|
1544
|
+
"abilityCooldownFactor",
|
|
1545
|
+
{
|
|
1546
|
+
get = function(self)
|
|
1547
|
+
return self[148] or 1
|
|
1548
|
+
end,
|
|
1549
|
+
set = function(self, abilityCooldownFactor)
|
|
1550
|
+
local previousAbilityCooldownModifier = self[149]
|
|
1551
|
+
if previousAbilityCooldownModifier then
|
|
1552
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1553
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1554
|
+
end
|
|
1555
|
+
end
|
|
1556
|
+
local function modifier(ability, level, cooldown)
|
|
1557
|
+
return cooldown * abilityCooldownFactor
|
|
1558
|
+
end
|
|
1559
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1560
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1561
|
+
end
|
|
1562
|
+
self[149] = modifier
|
|
1563
|
+
self[148] = abilityCooldownFactor
|
|
1564
|
+
end
|
|
1565
|
+
},
|
|
1566
|
+
true
|
|
1567
|
+
)
|
|
1568
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1569
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1037
1570
|
(function(self)
|
|
1038
|
-
|
|
1039
|
-
local
|
|
1040
|
-
if
|
|
1041
|
-
|
|
1042
|
-
|
|
1571
|
+
local function destroyBuffIfNeeded(buff, isDispel, source)
|
|
1572
|
+
local currentHandle = getUnitAbility(buff[101].handle, buff.typeId)
|
|
1573
|
+
if currentHandle ~= buff.handle and buff[100] == 1 then
|
|
1574
|
+
if isDispel and currentHandle == nil and buff.unit.isAlive and buff.resistanceType == 1 and (buff._timer == nil or buff.remainingDuration > 0) then
|
|
1575
|
+
buff:dispel(source)
|
|
1576
|
+
else
|
|
1043
1577
|
buff:destroy()
|
|
1044
1578
|
end
|
|
1045
1579
|
end
|
|
1046
1580
|
end
|
|
1047
|
-
____exports.
|
|
1581
|
+
____exports.checkBuff = function(unit, buffTypeId, isDispel, source)
|
|
1048
1582
|
local buffByTypeId = buffByTypeIdByUnit[unit]
|
|
1049
1583
|
if buffByTypeId ~= nil then
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
end
|
|
1584
|
+
local buff = buffByTypeId[buffTypeId]
|
|
1585
|
+
if buff ~= nil then
|
|
1586
|
+
destroyBuffIfNeeded(buff, isDispel, source)
|
|
1054
1587
|
end
|
|
1055
1588
|
end
|
|
1056
1589
|
end
|
|
1590
|
+
____exports.checkBuffs = function(unit, isDispel, source)
|
|
1591
|
+
____exports.Buff:forAll(unit, destroyBuffIfNeeded, isDispel, source)
|
|
1592
|
+
end
|
|
1057
1593
|
Unit.abilityChannelingStartEvent:addListener(
|
|
1058
1594
|
0,
|
|
1059
1595
|
function(caster)
|
|
1060
|
-
____exports.checkBuffs(caster)
|
|
1061
|
-
Timer:run(____exports.checkBuffs, caster)
|
|
1596
|
+
____exports.checkBuffs(caster, true, caster)
|
|
1597
|
+
Timer:run(____exports.checkBuffs, caster, true, caster)
|
|
1062
1598
|
end
|
|
1063
1599
|
)
|
|
1064
1600
|
Unit.abilityUnitTargetChannelingStartEvent:addListener(
|
|
1065
1601
|
0,
|
|
1066
1602
|
function(caster, ability, target)
|
|
1067
|
-
____exports.checkBuffs(target)
|
|
1068
|
-
Timer:run(____exports.checkBuffs, target)
|
|
1603
|
+
____exports.checkBuffs(target, true, caster)
|
|
1604
|
+
Timer:run(____exports.checkBuffs, target, true, caster)
|
|
1069
1605
|
end
|
|
1070
1606
|
)
|
|
1071
1607
|
Unit.abilityPointTargetChannelingStartEvent:addListener(
|
|
@@ -1076,18 +1612,53 @@ __TS__SetDescriptor(
|
|
|
1076
1612
|
y,
|
|
1077
1613
|
ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1078
1614
|
)
|
|
1079
|
-
forEach(units, ____exports.checkBuffs)
|
|
1080
|
-
Timer:run(
|
|
1615
|
+
forEach(units, ____exports.checkBuffs, true, caster)
|
|
1616
|
+
Timer:run(
|
|
1617
|
+
forEach,
|
|
1618
|
+
units,
|
|
1619
|
+
____exports.checkBuffs,
|
|
1620
|
+
true,
|
|
1621
|
+
caster
|
|
1622
|
+
)
|
|
1623
|
+
end
|
|
1624
|
+
)
|
|
1625
|
+
Unit.abilityNoTargetChannelingStartEvent:addListener(
|
|
1626
|
+
0,
|
|
1627
|
+
function(caster, ability)
|
|
1628
|
+
local radius = ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1629
|
+
if radius > 0 then
|
|
1630
|
+
local units = Unit:getInCollisionRange(caster.x, caster.y, radius)
|
|
1631
|
+
forEach(units, ____exports.checkBuffs, true, caster)
|
|
1632
|
+
Timer:run(
|
|
1633
|
+
forEach,
|
|
1634
|
+
units,
|
|
1635
|
+
____exports.checkBuffs,
|
|
1636
|
+
true,
|
|
1637
|
+
caster
|
|
1638
|
+
)
|
|
1639
|
+
end
|
|
1081
1640
|
end
|
|
1082
1641
|
)
|
|
1083
1642
|
Unit.onDamage:addListener(
|
|
1084
1643
|
0,
|
|
1085
1644
|
function(source, target)
|
|
1086
1645
|
if source ~= nil then
|
|
1087
|
-
____exports.checkBuffs
|
|
1646
|
+
Timer:run(____exports.checkBuffs, source, false)
|
|
1088
1647
|
end
|
|
1089
|
-
____exports.checkBuffs
|
|
1648
|
+
Timer:run(____exports.checkBuffs, target, false)
|
|
1649
|
+
end
|
|
1650
|
+
)
|
|
1651
|
+
Unit.deathEvent:addListener(
|
|
1652
|
+
-999999,
|
|
1653
|
+
function(unit)
|
|
1654
|
+
____exports.Buff:forAll(unit, destroyBuffOnDeath)
|
|
1090
1655
|
end
|
|
1091
1656
|
)
|
|
1657
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1658
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1659
|
+
end)
|
|
1660
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1661
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1662
|
+
end)
|
|
1092
1663
|
end)(Buff)
|
|
1093
1664
|
return ____exports
|