warscript 0.0.1-dev.24ac045 → 0.0.1-dev.24da7f2
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 +1 -0
- package/attributes.lua +9 -0
- package/core/dummy.lua +4 -2
- package/core/types/effect.d.ts +11 -1
- package/core/types/effect.lua +43 -77
- package/core/types/frame.d.ts +21 -2
- package/core/types/frame.lua +165 -87
- package/core/types/handle.lua +9 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/missile.lua +8 -7
- package/core/types/player.d.ts +18 -1
- package/core/types/player.lua +76 -26
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +1 -1
- package/core/types/sound.lua +14 -9
- package/core/types/tileCell.d.ts +18 -3
- package/core/types/tileCell.lua +108 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/core/types/unit.d.ts +5 -0
- package/core/types/unit.lua +5 -0
- package/core/util.d.ts +3 -1
- package/core/util.lua +109 -3
- package/decl/native.d.ts +712 -11
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/ability-type-extended-tooltip.d.ts +8 -0
- package/engine/ability-type-extended-tooltip.lua +44 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +4 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
- package/engine/behaviour/ability/damage.d.ts +4 -0
- package/engine/behaviour/ability/damage.lua +19 -15
- package/engine/behaviour/ability/emulate-impact.d.ts +15 -1
- package/engine/behaviour/ability/emulate-impact.lua +81 -6
- package/engine/behaviour/ability/instant-impact.d.ts +12 -1
- package/engine/behaviour/ability/instant-impact.lua +17 -2
- package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
- package/engine/behaviour/ability/on-command-impact.lua +1 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +19 -6
- package/engine/behaviour/ability.lua +120 -9
- package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
- package/engine/behaviour/unit/stun-immunity.lua +17 -7
- package/engine/behaviour/unit.d.ts +16 -5
- package/engine/behaviour/unit.lua +127 -22
- package/engine/buff.d.ts +124 -57
- package/engine/buff.lua +608 -296
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +10 -1
- package/engine/internal/ability.lua +99 -47
- 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 +27 -14
- package/engine/internal/item.lua +185 -82
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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/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 +14 -14
- package/engine/internal/unit/ability.lua +88 -45
- package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
- package/engine/internal/unit/add-item-to-slot.lua +53 -12
- package/engine/internal/unit/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +17 -0
- package/engine/internal/unit/bonus.lua +113 -8
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +34 -19
- package/engine/internal/unit/equipment-inventory.d.ts +44 -0
- package/engine/internal/unit/equipment-inventory.lua +233 -0
- package/engine/internal/unit/expiration-timer.lua +1 -1
- package/engine/internal/unit/extended-inventory.d.ts +25 -0
- package/engine/internal/unit/extended-inventory.lua +99 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/ignore-events-items.lua +10 -1
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
- package/engine/internal/unit/inventory.lua +87 -0
- package/engine/internal/unit/item-container.d.ts +25 -0
- package/engine/internal/unit/item-container.lua +11 -0
- package/engine/internal/unit/item-order-events.d.ts +17 -0
- package/engine/internal/unit/item-order-events.lua +67 -0
- package/engine/internal/unit/item-slot.d.ts +27 -0
- package/engine/internal/unit/item-slot.lua +92 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +3 -3
- package/engine/internal/unit/order.lua +10 -10
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit/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 +83 -3
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +9 -0
- package/engine/internal/unit+damage.lua +33 -0
- package/engine/internal/unit+rally.lua +9 -31
- package/engine/internal/unit-missile-data.lua +96 -68
- package/engine/internal/unit-missile-launch.lua +65 -27
- package/engine/internal/unit.d.ts +20 -33
- package/engine/internal/unit.lua +227 -295
- package/engine/lightning.lua +4 -4
- package/engine/local-client.d.ts +28 -0
- package/engine/local-client.lua +324 -54
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
- package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
- package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
- package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-type.lua +26 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/item-class.d.ts +11 -0
- package/engine/object-data/auxiliary/item-class.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/order-type.d.ts +939 -0
- package/engine/object-data/auxiliary/order-type.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
- package/engine/object-data/entry/ability-type/barrage.lua +52 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
- package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
- package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
- package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
- package/engine/object-data/entry/ability-type/channel.lua +3 -3
- package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
- package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
- package/engine/object-data/entry/ability-type/consecration.lua +52 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
- package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment.lua +27 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
- package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
- package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
- package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
- package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
- package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
- package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
- package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
- package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
- package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
- package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
- package/engine/object-data/entry/ability-type/provoke.lua +66 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
- package/engine/object-data/entry/ability-type/resolve.lua +39 -0
- package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
- package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
- package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
- package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
- package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
- package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
- package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
- package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
- package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
- package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
- package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
- package/engine/object-data/entry/ability-type/talents.lua +27 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
- package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
- package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
- package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
- package/engine/object-data/entry/ability-type/warcry.lua +26 -0
- package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
- package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
- package/engine/object-data/entry/ability-type.d.ts +35 -8
- package/engine/object-data/entry/ability-type.lua +304 -15
- package/engine/object-data/entry/buff-type/applicable.lua +122 -111
- package/engine/object-data/entry/buff-type.d.ts +6 -2
- package/engine/object-data/entry/buff-type.lua +26 -0
- package/engine/object-data/entry/destructible-type.d.ts +32 -2
- package/engine/object-data/entry/destructible-type.lua +181 -0
- package/engine/object-data/entry/item-type.d.ts +18 -3
- package/engine/object-data/entry/item-type.lua +84 -0
- package/engine/object-data/entry/lightning-type.d.ts +6 -8
- package/engine/object-data/entry/lightning-type.lua +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +2 -2
- package/engine/object-data/entry/unit-type.d.ts +72 -4
- package/engine/object-data/entry/unit-type.lua +503 -53
- package/engine/object-data/entry/upgrade.d.ts +2 -2
- package/engine/object-data/entry.d.ts +6 -1
- package/engine/object-data/entry.lua +8 -0
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +20 -5
- package/engine/object-field/unit.lua +61 -0
- package/engine/object-field.d.ts +12 -4
- package/engine/object-field.lua +273 -126
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/ability-type.d.ts +3102 -7
- package/engine/standard/entries/ability-type.lua +0 -6
- package/engine/standard/entries/buff-type.d.ts +45 -0
- package/engine/standard/entries/buff-type.lua +43 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/lightning-type.d.ts +42 -15
- package/engine/standard/entries/lightning-type.lua +0 -14
- package/engine/standard/entries/unit-type.d.ts +5 -0
- package/engine/standard/entries/unit-type.lua +5 -0
- package/engine/standard/fields/ability.d.ts +4 -4
- package/engine/standard/fields/ability.lua +4 -4
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +11 -3
- package/engine/standard/fields/unit.lua +15 -2
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +14 -2
- package/engine/text-tag.lua +135 -23
- package/engine/unit.d.ts +11 -1
- package/engine/unit.lua +11 -1
- package/event.d.ts +1 -1
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/network.lua +25 -1
- package/objutil/buff.lua +11 -9
- package/objutil/object.lua +1 -1
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +3 -23
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +8 -1
- package/utility/arrays.lua +25 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +4 -0
- package/utility/functions.lua +9 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +46 -1
- package/utility/lua-maps.d.ts +11 -2
- package/utility/lua-maps.lua +33 -2
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +4 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/engine/internal/unit/item.lua +0 -78
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.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,9 +30,6 @@ 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
|
|
@@ -44,6 +43,7 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
44
43
|
local ____unit = require("engine.behaviour.unit")
|
|
45
44
|
local UnitBehavior = ____unit.UnitBehavior
|
|
46
45
|
local ____arrays = require("utility.arrays")
|
|
46
|
+
local emptyArray = ____arrays.emptyArray
|
|
47
47
|
local forEach = ____arrays.forEach
|
|
48
48
|
local ____event = require("event")
|
|
49
49
|
local Event = ____event.Event
|
|
@@ -53,6 +53,15 @@ local ____item = require("engine.internal.item")
|
|
|
53
53
|
local Item = ____item.Item
|
|
54
54
|
local ____destructable = require("core.types.destructable")
|
|
55
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
|
|
56
65
|
local getUnitAbility = BlzGetUnitAbility
|
|
57
66
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
58
67
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -98,13 +107,16 @@ local buffParametersKeys = {
|
|
|
98
107
|
damageIncrease = true,
|
|
99
108
|
damageIncreaseFactor = true,
|
|
100
109
|
armorIncrease = true,
|
|
101
|
-
|
|
110
|
+
maxHealthIncrease = true,
|
|
111
|
+
maxManaIncrease = true,
|
|
102
112
|
attackSpeedIncreaseFactor = true,
|
|
103
113
|
movementSpeedIncreaseFactor = true,
|
|
114
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
104
115
|
evasionProbability = true,
|
|
105
116
|
missProbability = true,
|
|
106
117
|
damageFactor = true,
|
|
107
118
|
receivedDamageFactor = true,
|
|
119
|
+
returnedMeleeDamageFactor = true,
|
|
108
120
|
receivedMagicDamageFactor = true,
|
|
109
121
|
durationIncreaseOnAutoAttack = true,
|
|
110
122
|
maximumDuration = true,
|
|
@@ -120,11 +132,17 @@ local buffParametersKeys = {
|
|
|
120
132
|
maximumAutoAttackCount = true,
|
|
121
133
|
maximumDamageDealtEventCount = true,
|
|
122
134
|
maximumDamageReceivedEventCount = true,
|
|
135
|
+
absorbedDamageFactor = true,
|
|
136
|
+
maximumDamageAbsorbed = true,
|
|
137
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
123
138
|
uniqueGroup = true,
|
|
139
|
+
destructionSoundPresetId = true,
|
|
124
140
|
damageOnExpiration = true,
|
|
125
141
|
healingOnExpiration = true,
|
|
126
142
|
killsOnExpiration = true,
|
|
127
|
-
explodesOnExpiration = true
|
|
143
|
+
explodesOnExpiration = true,
|
|
144
|
+
abilityCooldownFactor = true,
|
|
145
|
+
sharesVisionWithSource = true
|
|
128
146
|
}
|
|
129
147
|
local function resolveEnumValue(ability, level, value)
|
|
130
148
|
if value == nil or type(value) == "number" then
|
|
@@ -175,22 +193,28 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
175
193
|
end
|
|
176
194
|
end
|
|
177
195
|
local buffBooleanParameters = {
|
|
196
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
178
197
|
"turnsIntoGhost",
|
|
179
198
|
"stuns",
|
|
180
199
|
"ignoresStunImmunity",
|
|
181
200
|
"disablesAutoAttack",
|
|
182
201
|
"providesInvulnerability",
|
|
183
202
|
"killsOnExpiration",
|
|
184
|
-
"explodesOnExpiration"
|
|
203
|
+
"explodesOnExpiration",
|
|
204
|
+
"sharesVisionWithSource"
|
|
185
205
|
}
|
|
186
206
|
local buffNumberParameters = {
|
|
187
207
|
"durationIncreaseOnAutoAttack",
|
|
188
208
|
"attackSpeedIncreaseFactor",
|
|
189
209
|
"movementSpeedIncreaseFactor",
|
|
210
|
+
"manaRegenerationRateIncreaseFactor",
|
|
190
211
|
"evasionProbability",
|
|
191
212
|
"armorIncrease",
|
|
213
|
+
"maxHealthIncrease",
|
|
214
|
+
"maxManaIncrease",
|
|
192
215
|
"damageFactor",
|
|
193
216
|
"receivedDamageFactor",
|
|
217
|
+
"returnedMeleeDamageFactor",
|
|
194
218
|
"maximumAutoAttackCount",
|
|
195
219
|
"maximumDamageDealtEventCount",
|
|
196
220
|
"maximumDamageReceivedEventCount",
|
|
@@ -201,7 +225,10 @@ local buffNumberParameters = {
|
|
|
201
225
|
"healingPerInterval",
|
|
202
226
|
"healingOverDuration",
|
|
203
227
|
"damageOnExpiration",
|
|
204
|
-
"healingOnExpiration"
|
|
228
|
+
"healingOnExpiration",
|
|
229
|
+
"absorbedDamageFactor",
|
|
230
|
+
"maximumDamageAbsorbed",
|
|
231
|
+
"abilityCooldownFactor"
|
|
205
232
|
}
|
|
206
233
|
local unsuccessfulApplicationMarker = {}
|
|
207
234
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -235,18 +262,44 @@ end
|
|
|
235
262
|
local function destroyBuff(buff)
|
|
236
263
|
buff:destroy()
|
|
237
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
|
|
238
287
|
local function expireBuff(buff)
|
|
239
|
-
|
|
240
|
-
|
|
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
|
|
241
294
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
242
295
|
buff:flashSpecialEffect()
|
|
243
296
|
if remainingDamageOverDuration ~= 0 then
|
|
244
297
|
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
245
|
-
buff[
|
|
298
|
+
buff[114] = nil
|
|
246
299
|
end
|
|
247
300
|
if remainingHealingOverDuration ~= 0 then
|
|
248
301
|
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
249
|
-
buff[
|
|
302
|
+
buff[119] = nil
|
|
250
303
|
end
|
|
251
304
|
end
|
|
252
305
|
Timer:run(destroyBuff, buff)
|
|
@@ -254,8 +307,8 @@ local function expireBuff(buff)
|
|
|
254
307
|
end
|
|
255
308
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
256
309
|
buffDamageIntervalTimerCallback(buff)
|
|
257
|
-
local timer = buff[
|
|
258
|
-
local damageInterval = buff[
|
|
310
|
+
local timer = buff[115]
|
|
311
|
+
local damageInterval = buff[113]
|
|
259
312
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
260
313
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
261
314
|
end
|
|
@@ -263,43 +316,43 @@ end
|
|
|
263
316
|
buffDamageIntervalTimerCallback = function(buff)
|
|
264
317
|
buff:flashSpecialEffect()
|
|
265
318
|
local source = buff[102] or buff[101]
|
|
266
|
-
local remainingDamageOverDuration = buff[
|
|
319
|
+
local remainingDamageOverDuration = buff[114] or 0
|
|
267
320
|
if remainingDamageOverDuration ~= 0 then
|
|
268
|
-
local damageInterval = buff[
|
|
321
|
+
local damageInterval = buff[113] or 0
|
|
269
322
|
if damageInterval ~= 0 then
|
|
270
323
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
271
324
|
source:damageTarget(buff[101], damage)
|
|
272
|
-
buff[
|
|
325
|
+
buff[114] = remainingDamageOverDuration - damage
|
|
273
326
|
end
|
|
274
327
|
end
|
|
275
|
-
local damagePerInterval = buff[
|
|
328
|
+
local damagePerInterval = buff[112] or 0
|
|
276
329
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
277
330
|
source:damageTarget(buff[101], damagePerInterval)
|
|
278
331
|
end
|
|
279
332
|
end
|
|
280
333
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
281
334
|
buffHealingIntervalTimerCallback(buff)
|
|
282
|
-
local timer = buff[
|
|
283
|
-
local healingInterval = buff[
|
|
335
|
+
local timer = buff[120]
|
|
336
|
+
local healingInterval = buff[118]
|
|
284
337
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
285
338
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
286
339
|
end
|
|
287
340
|
end
|
|
288
341
|
buffHealingIntervalTimerCallback = function(buff)
|
|
289
|
-
if buff[
|
|
342
|
+
if buff[118] ~= buff[113] then
|
|
290
343
|
buff:flashSpecialEffect()
|
|
291
344
|
end
|
|
292
345
|
local source = buff[102] or buff[101]
|
|
293
|
-
local remainingHealingOverDuration = buff[
|
|
346
|
+
local remainingHealingOverDuration = buff[119] or 0
|
|
294
347
|
if remainingHealingOverDuration ~= 0 then
|
|
295
|
-
local healingInterval = buff[
|
|
348
|
+
local healingInterval = buff[118] or 0
|
|
296
349
|
if healingInterval ~= 0 then
|
|
297
350
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
298
351
|
source:healTarget(buff[101], healing)
|
|
299
|
-
buff[
|
|
352
|
+
buff[119] = remainingHealingOverDuration - healing
|
|
300
353
|
end
|
|
301
354
|
end
|
|
302
|
-
local healingPerInterval = buff[
|
|
355
|
+
local healingPerInterval = buff[117] or 0
|
|
303
356
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
304
357
|
source:healTarget(buff[101], healingPerInterval)
|
|
305
358
|
end
|
|
@@ -320,33 +373,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
320
373
|
local polarity
|
|
321
374
|
local resistanceType
|
|
322
375
|
local ability
|
|
376
|
+
local abilityBehavior
|
|
323
377
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
324
378
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
325
379
|
polarity = resistanceTypeOrPolarity
|
|
326
380
|
resistanceType = abilityOrParametersOrResistanceType
|
|
327
|
-
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
|
|
328
385
|
ability = parametersOrAbility
|
|
329
|
-
|
|
330
|
-
ability = nil
|
|
386
|
+
elseif parametersOrAbility ~= nil then
|
|
331
387
|
parameters = parametersOrAbility
|
|
332
388
|
end
|
|
333
389
|
else
|
|
334
390
|
typeId = typeIdOrTypeIds
|
|
335
391
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
336
392
|
resistanceType = resistanceTypeOrPolarity
|
|
337
|
-
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
|
|
338
398
|
ability = abilityOrParametersOrResistanceType
|
|
339
399
|
parameters = parametersOrAbility
|
|
340
|
-
|
|
341
|
-
ability = nil
|
|
400
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
342
401
|
parameters = abilityOrParametersOrResistanceType
|
|
402
|
+
else
|
|
403
|
+
parameters = parametersOrAbility
|
|
343
404
|
end
|
|
344
405
|
end
|
|
406
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
345
407
|
self.typeId = typeId
|
|
346
|
-
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
347
|
-
parameters = ability
|
|
348
|
-
ability = nil
|
|
349
|
-
end
|
|
350
408
|
local defaultParameters = self.constructor.defaultParameters
|
|
351
409
|
local level = parameters and parameters.level or defaultParameters.level
|
|
352
410
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -374,14 +432,15 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
374
432
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
375
433
|
if missProbability ~= nil then
|
|
376
434
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
377
|
-
self[
|
|
435
|
+
self[147] = missProbability
|
|
378
436
|
end
|
|
379
437
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
380
438
|
if buffByTypeId == nil then
|
|
381
439
|
buffByTypeId = {}
|
|
382
440
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
383
441
|
end
|
|
384
|
-
|
|
442
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
443
|
+
local ____opt_15 = self.previousBuff
|
|
385
444
|
if ____opt_15 ~= nil then
|
|
386
445
|
____opt_15:destroy()
|
|
387
446
|
end
|
|
@@ -418,17 +477,18 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
418
477
|
self[102] = source
|
|
419
478
|
self[103] = duration or 0
|
|
420
479
|
self[104] = uniqueGroup
|
|
421
|
-
self[105] =
|
|
422
|
-
self[106] = BlzGetAbilityStringLevelField(self.handle,
|
|
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)
|
|
423
483
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
424
484
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
425
|
-
local
|
|
426
|
-
local
|
|
427
|
-
local
|
|
428
|
-
if
|
|
429
|
-
|
|
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]
|
|
430
490
|
end
|
|
431
|
-
if resolveBooleanValue(
|
|
491
|
+
if resolveBooleanValue(____ability_28, ____level_29, ____temp_27) then
|
|
432
492
|
self[buffBooleanParameter] = true
|
|
433
493
|
end
|
|
434
494
|
end
|
|
@@ -444,11 +504,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
444
504
|
end
|
|
445
505
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
446
506
|
if maximumDuration ~= nil then
|
|
447
|
-
self[
|
|
507
|
+
self[109] = resolveNumberValue(ability, level, maximumDuration)
|
|
448
508
|
end
|
|
449
509
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
450
510
|
if maximumRemainingDuration ~= nil then
|
|
451
|
-
self[
|
|
511
|
+
self[110] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
452
512
|
end
|
|
453
513
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
454
514
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -457,24 +517,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
457
517
|
abilityTypeIds = {}
|
|
458
518
|
self._abilityTypeIds = abilityTypeIds
|
|
459
519
|
end
|
|
460
|
-
for
|
|
520
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
521
|
+
local abilityParameters = checkNotNull(parametersAbilityTypeIds[abilityTypeId])
|
|
461
522
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
462
523
|
if addedAbility ~= nil then
|
|
463
524
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
464
525
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
468
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
469
|
-
end
|
|
470
|
-
elseif abilityParameterKey ~= "level" then
|
|
471
|
-
abilityParameterKey:setValue(
|
|
472
|
-
addedAbility,
|
|
473
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
474
|
-
)
|
|
475
|
-
end
|
|
526
|
+
if abilityParameters.isButtonVisible == false then
|
|
527
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
476
528
|
end
|
|
477
|
-
|
|
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
|
|
478
536
|
end
|
|
479
537
|
end
|
|
480
538
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -486,18 +544,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
486
544
|
self._behaviors = behaviors
|
|
487
545
|
end
|
|
488
546
|
end
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
if
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
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
|
|
496
556
|
end
|
|
497
557
|
end
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
558
|
+
if (next(additionalParameters)) ~= nil then
|
|
559
|
+
self.parameters = additionalParameters
|
|
560
|
+
end
|
|
501
561
|
end
|
|
502
562
|
end
|
|
503
563
|
if duration ~= nil and duration > 0 then
|
|
@@ -509,64 +569,77 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
509
569
|
self[100] = 1
|
|
510
570
|
Event.invoke(buffCreatedEvent, self)
|
|
511
571
|
end
|
|
512
|
-
function Buff.prototype.
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
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
|
|
578
|
+
end
|
|
516
579
|
end
|
|
517
|
-
function Buff.prototype.
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
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
|
|
522
586
|
end
|
|
523
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
524
587
|
end
|
|
525
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
|
|
595
|
+
)
|
|
596
|
+
end
|
|
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
|
|
604
|
+
)
|
|
605
|
+
end
|
|
606
|
+
function Buff.prototype.flash(self, modelPath, attachmentPoint, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
526
607
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
527
|
-
Effect:flash(
|
|
608
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
528
609
|
else
|
|
529
610
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
530
|
-
local
|
|
531
|
-
local
|
|
532
|
-
local
|
|
533
|
-
|
|
534
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
535
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
536
|
-
)
|
|
537
|
-
local ____isWidgetProvided_40
|
|
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
|
|
538
615
|
if isWidgetProvided then
|
|
539
|
-
|
|
616
|
+
____isWidgetProvided_42 = yOrParametersOrDuration
|
|
540
617
|
else
|
|
541
|
-
|
|
618
|
+
____isWidgetProvided_42 = widgetOrXOrParametersOrDuration
|
|
542
619
|
end
|
|
543
|
-
__TS__SparseArrayPush(
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
__TS__SparseArraySpread(
|
|
620
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
621
|
+
____Effect_flash_45(
|
|
622
|
+
____Effect_44,
|
|
623
|
+
__TS__SparseArraySpread(____array_43)
|
|
547
624
|
)
|
|
548
625
|
end
|
|
549
626
|
end
|
|
550
|
-
function Buff.prototype.
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
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
|
|
564
642
|
end
|
|
565
|
-
__TS__SparseArrayPush(____array_45, ____isWidgetProvided_44)
|
|
566
|
-
____Effect_flash_47(
|
|
567
|
-
____Effect_46,
|
|
568
|
-
__TS__SparseArraySpread(____array_45)
|
|
569
|
-
)
|
|
570
643
|
end
|
|
571
644
|
function Buff.prototype.onCreate(self)
|
|
572
645
|
end
|
|
@@ -574,19 +647,25 @@ function Buff.prototype.onDestroy(self)
|
|
|
574
647
|
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
575
648
|
self[100] = 2
|
|
576
649
|
local unit = self._unit
|
|
650
|
+
local destructionSoundPresetId = self[105]
|
|
651
|
+
if destructionSoundPresetId ~= nil then
|
|
652
|
+
Sound3D:playFromLabel(destructionSoundPresetId, SoundSettings.Ability, unit)
|
|
653
|
+
end
|
|
577
654
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
578
655
|
removeBuff(unit.handle, self.typeId)
|
|
656
|
+
else
|
|
657
|
+
removeBuffApplicator(unit.handle, self.typeId)
|
|
579
658
|
end
|
|
580
659
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
581
|
-
local healingIntervalTimer = self[
|
|
660
|
+
local healingIntervalTimer = self[120]
|
|
582
661
|
if healingIntervalTimer ~= nil then
|
|
583
662
|
healingIntervalTimer:destroy()
|
|
584
|
-
self[
|
|
663
|
+
self[120] = nil
|
|
585
664
|
end
|
|
586
|
-
local damageIntervalTimer = self[
|
|
665
|
+
local damageIntervalTimer = self[115]
|
|
587
666
|
if damageIntervalTimer ~= nil then
|
|
588
667
|
damageIntervalTimer:destroy()
|
|
589
|
-
self[
|
|
668
|
+
self[115] = nil
|
|
590
669
|
end
|
|
591
670
|
if self._timer ~= nil then
|
|
592
671
|
self._timer:destroy()
|
|
@@ -596,31 +675,33 @@ function Buff.prototype.onDestroy(self)
|
|
|
596
675
|
behavior:destroy()
|
|
597
676
|
end
|
|
598
677
|
end
|
|
599
|
-
|
|
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
|
|
600
685
|
unit:decrementInvulnerabilityCounter()
|
|
601
686
|
end
|
|
602
|
-
if self[
|
|
687
|
+
if self[143] then
|
|
603
688
|
unit:decrementDisableAutoAttackCounter()
|
|
604
689
|
end
|
|
605
|
-
if self[
|
|
606
|
-
if self[
|
|
607
|
-
unit:
|
|
690
|
+
if self[141] then
|
|
691
|
+
if self[142] then
|
|
692
|
+
unit:decrementForceStunCounter()
|
|
608
693
|
end
|
|
609
694
|
unit:decrementStunCounter()
|
|
610
695
|
end
|
|
611
|
-
if self[
|
|
696
|
+
if self[140] then
|
|
612
697
|
unit:decrementGhostCounter()
|
|
613
698
|
end
|
|
699
|
+
unshareVisionWithSource(self)
|
|
614
700
|
if self._abilityTypeIds ~= nil then
|
|
615
|
-
for abilityTypeId in
|
|
701
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
616
702
|
unit:removeAbility(abilityTypeId)
|
|
617
703
|
end
|
|
618
704
|
end
|
|
619
|
-
if self._bonusIdByBonusType ~= nil then
|
|
620
|
-
for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
|
|
621
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
622
|
-
end
|
|
623
|
-
end
|
|
624
705
|
Event.invoke(buffBeingDestroyedEvent, self)
|
|
625
706
|
self[100] = 3
|
|
626
707
|
return UnitBehavior.prototype.onDestroy(self)
|
|
@@ -650,49 +731,51 @@ function Buff.apply(self, ...)
|
|
|
650
731
|
end
|
|
651
732
|
end
|
|
652
733
|
function Buff.getByTypeId(self, unit, typeId)
|
|
653
|
-
local
|
|
654
|
-
local buff =
|
|
734
|
+
local ____opt_46 = buffByTypeIdByUnit[unit]
|
|
735
|
+
local buff = ____opt_46 and ____opt_46[typeId]
|
|
655
736
|
if __TS__InstanceOf(buff, self) then
|
|
656
737
|
return buff
|
|
657
738
|
end
|
|
658
739
|
return nil
|
|
659
740
|
end
|
|
741
|
+
function Buff.prototype.onDispel(self, source)
|
|
742
|
+
end
|
|
660
743
|
function Buff.prototype.onExpiration(self)
|
|
661
744
|
local unit = self.unit
|
|
662
|
-
if self[120] ~= nil then
|
|
663
|
-
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
664
|
-
end
|
|
665
745
|
if self[121] ~= nil then
|
|
666
|
-
(self[102] or unit):
|
|
746
|
+
(self[102] or unit):damageTarget(unit, self[121] or 0)
|
|
667
747
|
end
|
|
668
|
-
if self[
|
|
748
|
+
if self[122] ~= nil then
|
|
749
|
+
(self[102] or unit):healTarget(unit, self[121] or 0)
|
|
750
|
+
end
|
|
751
|
+
if self[146] then
|
|
669
752
|
unit:explode()
|
|
670
|
-
elseif self[
|
|
753
|
+
elseif self[145] then
|
|
671
754
|
unit:kill()
|
|
672
755
|
end
|
|
673
756
|
end
|
|
674
757
|
function Buff.prototype.onDeath(self, source)
|
|
675
758
|
local unit = self.unit
|
|
676
|
-
if self[
|
|
759
|
+
if self[123] ~= nil then
|
|
677
760
|
damageArea(
|
|
678
761
|
self[102] or unit,
|
|
679
|
-
self[
|
|
762
|
+
self[123],
|
|
680
763
|
unit.x,
|
|
681
764
|
unit.y,
|
|
765
|
+
self[125] or 0,
|
|
682
766
|
self[124] or 0,
|
|
683
|
-
self[
|
|
767
|
+
self[127] or 0,
|
|
684
768
|
self[126] or 0,
|
|
685
|
-
self[
|
|
686
|
-
self[128] or 0
|
|
687
|
-
self[127] or 0
|
|
769
|
+
self[129] or 0,
|
|
770
|
+
self[128] or 0
|
|
688
771
|
)
|
|
689
772
|
end
|
|
690
773
|
end
|
|
691
774
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
692
775
|
if event.isAttack then
|
|
693
|
-
if self[
|
|
694
|
-
local durationIncrease = self[
|
|
695
|
-
local maximumDuration = self[
|
|
776
|
+
if self[108] ~= nil then
|
|
777
|
+
local durationIncrease = self[108]
|
|
778
|
+
local maximumDuration = self[109] or 0
|
|
696
779
|
if maximumDuration > 0 then
|
|
697
780
|
durationIncrease = min(
|
|
698
781
|
durationIncrease,
|
|
@@ -700,31 +783,43 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
700
783
|
)
|
|
701
784
|
end
|
|
702
785
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
703
|
-
local maximumRemainingDuration = self[
|
|
786
|
+
local maximumRemainingDuration = self[110] or 0
|
|
704
787
|
if maximumRemainingDuration > 0 then
|
|
705
788
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
706
789
|
end
|
|
707
790
|
self.remainingDuration = remainingDuration
|
|
708
791
|
end
|
|
709
|
-
local autoAttackCount = (self[
|
|
710
|
-
self[
|
|
711
|
-
if autoAttackCount == self[
|
|
792
|
+
local autoAttackCount = (self[130] or 0) + 1
|
|
793
|
+
self[130] = autoAttackCount
|
|
794
|
+
if autoAttackCount == self[131] then
|
|
712
795
|
self:destroy()
|
|
713
796
|
end
|
|
714
797
|
end
|
|
715
798
|
if event.originalAmount ~= 0 then
|
|
716
|
-
local damageDealtEventCount = (self[
|
|
717
|
-
self[
|
|
718
|
-
if damageDealtEventCount == self[
|
|
799
|
+
local damageDealtEventCount = (self[132] or 0) + 1
|
|
800
|
+
self[132] = damageDealtEventCount
|
|
801
|
+
if damageDealtEventCount == self[133] then
|
|
719
802
|
self:destroy()
|
|
720
803
|
end
|
|
721
804
|
end
|
|
722
805
|
end
|
|
723
806
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
724
807
|
if event.originalAmount ~= 0 then
|
|
725
|
-
local
|
|
726
|
-
|
|
727
|
-
|
|
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
|
|
728
823
|
self:destroy()
|
|
729
824
|
end
|
|
730
825
|
end
|
|
@@ -751,13 +846,13 @@ __TS__SetDescriptor(
|
|
|
751
846
|
"remainingDamageOverDuration",
|
|
752
847
|
{
|
|
753
848
|
get = function(self)
|
|
754
|
-
return self[
|
|
849
|
+
return self[114] or 0
|
|
755
850
|
end,
|
|
756
851
|
set = function(self, remainingDamageOverDuration)
|
|
757
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
758
|
-
self[
|
|
759
|
-
local damageOverDuration = (self[
|
|
760
|
-
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
|
|
761
856
|
end
|
|
762
857
|
},
|
|
763
858
|
true
|
|
@@ -767,13 +862,13 @@ __TS__SetDescriptor(
|
|
|
767
862
|
"damageOverDuration",
|
|
768
863
|
{
|
|
769
864
|
get = function(self)
|
|
770
|
-
return self[
|
|
865
|
+
return self[111] or 0
|
|
771
866
|
end,
|
|
772
867
|
set = function(self, damageOverDuration)
|
|
773
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
774
|
-
self[
|
|
775
|
-
local remainingDamageOverDuration = (self[
|
|
776
|
-
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
|
|
777
872
|
end
|
|
778
873
|
},
|
|
779
874
|
true
|
|
@@ -783,10 +878,10 @@ __TS__SetDescriptor(
|
|
|
783
878
|
"damagePerInterval",
|
|
784
879
|
{
|
|
785
880
|
get = function(self)
|
|
786
|
-
return self[
|
|
881
|
+
return self[112] or 0
|
|
787
882
|
end,
|
|
788
883
|
set = function(self, damagePerInterval)
|
|
789
|
-
self[
|
|
884
|
+
self[112] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
790
885
|
end
|
|
791
886
|
},
|
|
792
887
|
true
|
|
@@ -796,25 +891,25 @@ __TS__SetDescriptor(
|
|
|
796
891
|
"damageInterval",
|
|
797
892
|
{
|
|
798
893
|
get = function(self)
|
|
799
|
-
return self[
|
|
894
|
+
return self[113] or 0
|
|
800
895
|
end,
|
|
801
896
|
set = function(self, damageInterval)
|
|
802
897
|
if damageInterval <= 0 then
|
|
803
|
-
self[
|
|
804
|
-
local timer = self[
|
|
898
|
+
self[113] = damageInterval ~= 0 and damageInterval or nil
|
|
899
|
+
local timer = self[115]
|
|
805
900
|
if timer ~= nil then
|
|
806
901
|
timer:destroy()
|
|
807
|
-
self[
|
|
902
|
+
self[115] = nil
|
|
808
903
|
end
|
|
809
904
|
return
|
|
810
905
|
end
|
|
811
|
-
self[
|
|
812
|
-
local
|
|
813
|
-
local elapsed =
|
|
814
|
-
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]
|
|
815
910
|
if timer == nil then
|
|
816
911
|
timer = Timer:create()
|
|
817
|
-
self[
|
|
912
|
+
self[115] = timer
|
|
818
913
|
end
|
|
819
914
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
820
915
|
if initialDelay == damageInterval then
|
|
@@ -831,13 +926,13 @@ __TS__SetDescriptor(
|
|
|
831
926
|
"remainingHealingOverDuration",
|
|
832
927
|
{
|
|
833
928
|
get = function(self)
|
|
834
|
-
return self[
|
|
929
|
+
return self[119] or 0
|
|
835
930
|
end,
|
|
836
931
|
set = function(self, remainingHealingOverDuration)
|
|
837
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
838
|
-
self[
|
|
839
|
-
local healingOverDuration = (self[
|
|
840
|
-
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
|
|
841
936
|
end
|
|
842
937
|
},
|
|
843
938
|
true
|
|
@@ -847,13 +942,13 @@ __TS__SetDescriptor(
|
|
|
847
942
|
"healingOverDuration",
|
|
848
943
|
{
|
|
849
944
|
get = function(self)
|
|
850
|
-
return self[
|
|
945
|
+
return self[116] or 0
|
|
851
946
|
end,
|
|
852
947
|
set = function(self, healingOverDuration)
|
|
853
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
854
|
-
self[
|
|
855
|
-
local remainingHealingOverDuration = (self[
|
|
856
|
-
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
|
|
857
952
|
end
|
|
858
953
|
},
|
|
859
954
|
true
|
|
@@ -863,10 +958,10 @@ __TS__SetDescriptor(
|
|
|
863
958
|
"healingPerInterval",
|
|
864
959
|
{
|
|
865
960
|
get = function(self)
|
|
866
|
-
return self[
|
|
961
|
+
return self[117] or 0
|
|
867
962
|
end,
|
|
868
963
|
set = function(self, healingPerInterval)
|
|
869
|
-
self[
|
|
964
|
+
self[117] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
870
965
|
end
|
|
871
966
|
},
|
|
872
967
|
true
|
|
@@ -876,25 +971,25 @@ __TS__SetDescriptor(
|
|
|
876
971
|
"healingInterval",
|
|
877
972
|
{
|
|
878
973
|
get = function(self)
|
|
879
|
-
return self[
|
|
974
|
+
return self[118] or 0
|
|
880
975
|
end,
|
|
881
976
|
set = function(self, healingInterval)
|
|
882
977
|
if healingInterval <= 0 then
|
|
883
|
-
self[
|
|
884
|
-
local timer = self[
|
|
978
|
+
self[118] = healingInterval ~= 0 and healingInterval or nil
|
|
979
|
+
local timer = self[120]
|
|
885
980
|
if timer ~= nil then
|
|
886
981
|
timer:destroy()
|
|
887
|
-
self[
|
|
982
|
+
self[120] = nil
|
|
888
983
|
end
|
|
889
984
|
return
|
|
890
985
|
end
|
|
891
|
-
self[
|
|
892
|
-
local
|
|
893
|
-
local elapsed =
|
|
894
|
-
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]
|
|
895
990
|
if timer == nil then
|
|
896
991
|
timer = Timer:create()
|
|
897
|
-
self[
|
|
992
|
+
self[120] = timer
|
|
898
993
|
end
|
|
899
994
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
900
995
|
if initialDelay == healingInterval then
|
|
@@ -911,10 +1006,10 @@ __TS__SetDescriptor(
|
|
|
911
1006
|
"damageOnExpiration",
|
|
912
1007
|
{
|
|
913
1008
|
get = function(self)
|
|
914
|
-
return self[
|
|
1009
|
+
return self[121] or 0
|
|
915
1010
|
end,
|
|
916
1011
|
set = function(self, damageOnExpiration)
|
|
917
|
-
self[
|
|
1012
|
+
self[121] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
918
1013
|
end
|
|
919
1014
|
},
|
|
920
1015
|
true
|
|
@@ -924,10 +1019,10 @@ __TS__SetDescriptor(
|
|
|
924
1019
|
"healingOnExpiration",
|
|
925
1020
|
{
|
|
926
1021
|
get = function(self)
|
|
927
|
-
return self[
|
|
1022
|
+
return self[122] or 0
|
|
928
1023
|
end,
|
|
929
1024
|
set = function(self, healingOnExpiration)
|
|
930
|
-
self[
|
|
1025
|
+
self[122] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
931
1026
|
end
|
|
932
1027
|
},
|
|
933
1028
|
true
|
|
@@ -958,6 +1053,19 @@ __TS__SetDescriptor(
|
|
|
958
1053
|
},
|
|
959
1054
|
true
|
|
960
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
|
+
)
|
|
961
1069
|
__TS__SetDescriptor(
|
|
962
1070
|
Buff.prototype,
|
|
963
1071
|
"armorIncrease",
|
|
@@ -971,24 +1079,50 @@ __TS__SetDescriptor(
|
|
|
971
1079
|
},
|
|
972
1080
|
true
|
|
973
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
|
+
)
|
|
974
1108
|
__TS__SetDescriptor(
|
|
975
1109
|
Buff.prototype,
|
|
976
1110
|
"turnsIntoGhost",
|
|
977
1111
|
{
|
|
978
1112
|
get = function(self)
|
|
979
|
-
local
|
|
980
|
-
if
|
|
981
|
-
|
|
1113
|
+
local ____self__140_53 = self[140]
|
|
1114
|
+
if ____self__140_53 == nil then
|
|
1115
|
+
____self__140_53 = false
|
|
982
1116
|
end
|
|
983
|
-
return
|
|
1117
|
+
return ____self__140_53
|
|
984
1118
|
end,
|
|
985
1119
|
set = function(self, turnsIntoGhost)
|
|
986
|
-
if not turnsIntoGhost and self[
|
|
1120
|
+
if not turnsIntoGhost and self[140] then
|
|
987
1121
|
self.object:decrementGhostCounter()
|
|
988
|
-
self[
|
|
989
|
-
elseif turnsIntoGhost and not self[
|
|
1122
|
+
self[140] = nil
|
|
1123
|
+
elseif turnsIntoGhost and not self[140] then
|
|
990
1124
|
self.object:incrementGhostCounter()
|
|
991
|
-
self[
|
|
1125
|
+
self[140] = true
|
|
992
1126
|
end
|
|
993
1127
|
end
|
|
994
1128
|
},
|
|
@@ -999,25 +1133,25 @@ __TS__SetDescriptor(
|
|
|
999
1133
|
"stuns",
|
|
1000
1134
|
{
|
|
1001
1135
|
get = function(self)
|
|
1002
|
-
local
|
|
1003
|
-
if
|
|
1004
|
-
|
|
1136
|
+
local ____self__141_54 = self[141]
|
|
1137
|
+
if ____self__141_54 == nil then
|
|
1138
|
+
____self__141_54 = false
|
|
1005
1139
|
end
|
|
1006
|
-
return
|
|
1140
|
+
return ____self__141_54
|
|
1007
1141
|
end,
|
|
1008
1142
|
set = function(self, stuns)
|
|
1009
|
-
if not stuns and self[
|
|
1010
|
-
if self[
|
|
1011
|
-
self.object:
|
|
1143
|
+
if not stuns and self[141] then
|
|
1144
|
+
if self[142] then
|
|
1145
|
+
self.object:decrementForceStunCounter()
|
|
1012
1146
|
end
|
|
1013
1147
|
self.object:decrementStunCounter()
|
|
1014
|
-
self[
|
|
1015
|
-
elseif stuns and not self[
|
|
1016
|
-
if self[
|
|
1017
|
-
self.object:
|
|
1148
|
+
self[141] = nil
|
|
1149
|
+
elseif stuns and not self[141] then
|
|
1150
|
+
if self[142] then
|
|
1151
|
+
self.object:incrementForceStunCounter()
|
|
1018
1152
|
end
|
|
1019
1153
|
self.object:incrementStunCounter()
|
|
1020
|
-
self[
|
|
1154
|
+
self[141] = true
|
|
1021
1155
|
end
|
|
1022
1156
|
end
|
|
1023
1157
|
},
|
|
@@ -1028,23 +1162,23 @@ __TS__SetDescriptor(
|
|
|
1028
1162
|
"ignoresStunImmunity",
|
|
1029
1163
|
{
|
|
1030
1164
|
get = function(self)
|
|
1031
|
-
local
|
|
1032
|
-
if
|
|
1033
|
-
|
|
1165
|
+
local ____self__142_55 = self[142]
|
|
1166
|
+
if ____self__142_55 == nil then
|
|
1167
|
+
____self__142_55 = false
|
|
1034
1168
|
end
|
|
1035
|
-
return
|
|
1169
|
+
return ____self__142_55
|
|
1036
1170
|
end,
|
|
1037
1171
|
set = function(self, ignoresStunImmunity)
|
|
1038
|
-
if not ignoresStunImmunity and self[
|
|
1039
|
-
if self[
|
|
1040
|
-
self.object:
|
|
1172
|
+
if not ignoresStunImmunity and self[142] then
|
|
1173
|
+
if self[141] then
|
|
1174
|
+
self.object:decrementForceStunCounter()
|
|
1041
1175
|
end
|
|
1042
|
-
self[
|
|
1043
|
-
elseif ignoresStunImmunity and not self[
|
|
1044
|
-
if self[
|
|
1045
|
-
self.object:
|
|
1176
|
+
self[142] = nil
|
|
1177
|
+
elseif ignoresStunImmunity and not self[142] then
|
|
1178
|
+
if self[141] then
|
|
1179
|
+
self.object:incrementForceStunCounter()
|
|
1046
1180
|
end
|
|
1047
|
-
self[
|
|
1181
|
+
self[142] = true
|
|
1048
1182
|
end
|
|
1049
1183
|
end
|
|
1050
1184
|
},
|
|
@@ -1055,19 +1189,19 @@ __TS__SetDescriptor(
|
|
|
1055
1189
|
"disablesAutoAttack",
|
|
1056
1190
|
{
|
|
1057
1191
|
get = function(self)
|
|
1058
|
-
local
|
|
1059
|
-
if
|
|
1060
|
-
|
|
1192
|
+
local ____self__143_56 = self[143]
|
|
1193
|
+
if ____self__143_56 == nil then
|
|
1194
|
+
____self__143_56 = false
|
|
1061
1195
|
end
|
|
1062
|
-
return
|
|
1196
|
+
return ____self__143_56
|
|
1063
1197
|
end,
|
|
1064
1198
|
set = function(self, disablesAutoAttack)
|
|
1065
|
-
if not disablesAutoAttack and self[
|
|
1199
|
+
if not disablesAutoAttack and self[143] then
|
|
1066
1200
|
self.object:decrementDisableAutoAttackCounter()
|
|
1067
|
-
self[
|
|
1068
|
-
elseif disablesAutoAttack and not self[
|
|
1201
|
+
self[143] = nil
|
|
1202
|
+
elseif disablesAutoAttack and not self[143] then
|
|
1069
1203
|
self.object:incrementDisableAutoAttackCounter()
|
|
1070
|
-
self[
|
|
1204
|
+
self[143] = true
|
|
1071
1205
|
end
|
|
1072
1206
|
end
|
|
1073
1207
|
},
|
|
@@ -1078,19 +1212,19 @@ __TS__SetDescriptor(
|
|
|
1078
1212
|
"providesInvulnerability",
|
|
1079
1213
|
{
|
|
1080
1214
|
get = function(self)
|
|
1081
|
-
local
|
|
1082
|
-
if
|
|
1083
|
-
|
|
1215
|
+
local ____self__144_57 = self[144]
|
|
1216
|
+
if ____self__144_57 == nil then
|
|
1217
|
+
____self__144_57 = false
|
|
1084
1218
|
end
|
|
1085
|
-
return
|
|
1219
|
+
return ____self__144_57
|
|
1086
1220
|
end,
|
|
1087
1221
|
set = function(self, providesInvulnerability)
|
|
1088
|
-
if not providesInvulnerability and self[
|
|
1222
|
+
if not providesInvulnerability and self[144] then
|
|
1089
1223
|
self.object:decrementInvulnerabilityCounter()
|
|
1090
|
-
self[
|
|
1091
|
-
elseif providesInvulnerability and not self[
|
|
1224
|
+
self[144] = nil
|
|
1225
|
+
elseif providesInvulnerability and not self[144] then
|
|
1092
1226
|
self.object:incrementInvulnerabilityCounter()
|
|
1093
|
-
self[
|
|
1227
|
+
self[144] = true
|
|
1094
1228
|
end
|
|
1095
1229
|
end
|
|
1096
1230
|
},
|
|
@@ -1101,17 +1235,17 @@ __TS__SetDescriptor(
|
|
|
1101
1235
|
"killsOnExpiration",
|
|
1102
1236
|
{
|
|
1103
1237
|
get = function(self)
|
|
1104
|
-
local
|
|
1105
|
-
if
|
|
1106
|
-
|
|
1238
|
+
local ____self__145_58 = self[145]
|
|
1239
|
+
if ____self__145_58 == nil then
|
|
1240
|
+
____self__145_58 = false
|
|
1107
1241
|
end
|
|
1108
|
-
return
|
|
1242
|
+
return ____self__145_58
|
|
1109
1243
|
end,
|
|
1110
1244
|
set = function(self, killsOnExpiration)
|
|
1111
|
-
if not killsOnExpiration and self[
|
|
1112
|
-
self[
|
|
1113
|
-
elseif killsOnExpiration and not self[
|
|
1114
|
-
self[
|
|
1245
|
+
if not killsOnExpiration and self[145] then
|
|
1246
|
+
self[145] = nil
|
|
1247
|
+
elseif killsOnExpiration and not self[145] then
|
|
1248
|
+
self[145] = true
|
|
1115
1249
|
end
|
|
1116
1250
|
end
|
|
1117
1251
|
},
|
|
@@ -1122,17 +1256,40 @@ __TS__SetDescriptor(
|
|
|
1122
1256
|
"explodesOnExpiration",
|
|
1123
1257
|
{
|
|
1124
1258
|
get = function(self)
|
|
1125
|
-
local
|
|
1126
|
-
if
|
|
1127
|
-
|
|
1259
|
+
local ____self__146_59 = self[146]
|
|
1260
|
+
if ____self__146_59 == nil then
|
|
1261
|
+
____self__146_59 = false
|
|
1128
1262
|
end
|
|
1129
|
-
return
|
|
1263
|
+
return ____self__146_59
|
|
1130
1264
|
end,
|
|
1131
1265
|
set = function(self, killsOnExpiration)
|
|
1132
|
-
if not killsOnExpiration and self[
|
|
1133
|
-
self[
|
|
1134
|
-
elseif killsOnExpiration and not self[
|
|
1135
|
-
self[
|
|
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)
|
|
1136
1293
|
end
|
|
1137
1294
|
end
|
|
1138
1295
|
},
|
|
@@ -1143,13 +1300,13 @@ __TS__SetDescriptor(
|
|
|
1143
1300
|
"maximumDamageDealtEventCount",
|
|
1144
1301
|
{
|
|
1145
1302
|
get = function(self)
|
|
1146
|
-
return self[
|
|
1303
|
+
return self[133] or 0
|
|
1147
1304
|
end,
|
|
1148
1305
|
set = function(self, maximumDamageDealtEventCount)
|
|
1149
1306
|
if maximumDamageDealtEventCount == 0 then
|
|
1150
|
-
self[
|
|
1307
|
+
self[133] = nil
|
|
1151
1308
|
else
|
|
1152
|
-
self[
|
|
1309
|
+
self[133] = maximumDamageDealtEventCount
|
|
1153
1310
|
end
|
|
1154
1311
|
end
|
|
1155
1312
|
},
|
|
@@ -1160,13 +1317,13 @@ __TS__SetDescriptor(
|
|
|
1160
1317
|
"maximumDamageReceivedEventCount",
|
|
1161
1318
|
{
|
|
1162
1319
|
get = function(self)
|
|
1163
|
-
return self[
|
|
1320
|
+
return self[135] or 0
|
|
1164
1321
|
end,
|
|
1165
1322
|
set = function(self, maximumDamageReceivedEventCount)
|
|
1166
1323
|
if maximumDamageReceivedEventCount == 0 then
|
|
1167
|
-
self[
|
|
1324
|
+
self[135] = nil
|
|
1168
1325
|
else
|
|
1169
|
-
self[
|
|
1326
|
+
self[135] = maximumDamageReceivedEventCount
|
|
1170
1327
|
end
|
|
1171
1328
|
end
|
|
1172
1329
|
},
|
|
@@ -1177,13 +1334,13 @@ __TS__SetDescriptor(
|
|
|
1177
1334
|
"maximumAutoAttackCount",
|
|
1178
1335
|
{
|
|
1179
1336
|
get = function(self)
|
|
1180
|
-
return self[
|
|
1337
|
+
return self[131] or 0
|
|
1181
1338
|
end,
|
|
1182
1339
|
set = function(self, maximumAutoAttackCount)
|
|
1183
1340
|
if maximumAutoAttackCount == 0 then
|
|
1184
|
-
self[
|
|
1341
|
+
self[131] = nil
|
|
1185
1342
|
else
|
|
1186
|
-
self[
|
|
1343
|
+
self[131] = maximumAutoAttackCount
|
|
1187
1344
|
end
|
|
1188
1345
|
end
|
|
1189
1346
|
},
|
|
@@ -1194,10 +1351,10 @@ __TS__SetDescriptor(
|
|
|
1194
1351
|
"durationIncreaseOnAutoAttack",
|
|
1195
1352
|
{
|
|
1196
1353
|
get = function(self)
|
|
1197
|
-
return self[
|
|
1354
|
+
return self[108] or 0
|
|
1198
1355
|
end,
|
|
1199
1356
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1200
|
-
self[
|
|
1357
|
+
self[108] = durationIncreaseOnAutoAttack
|
|
1201
1358
|
end
|
|
1202
1359
|
},
|
|
1203
1360
|
true
|
|
@@ -1241,12 +1398,39 @@ __TS__SetDescriptor(
|
|
|
1241
1398
|
},
|
|
1242
1399
|
true
|
|
1243
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
|
+
)
|
|
1244
1414
|
__TS__SetDescriptor(
|
|
1245
1415
|
Buff.prototype,
|
|
1246
1416
|
"duration",
|
|
1247
|
-
{
|
|
1248
|
-
|
|
1249
|
-
|
|
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
|
+
},
|
|
1250
1434
|
true
|
|
1251
1435
|
)
|
|
1252
1436
|
__TS__SetDescriptor(
|
|
@@ -1275,7 +1459,7 @@ __TS__SetDescriptor(
|
|
|
1275
1459
|
remainingDuration,
|
|
1276
1460
|
self._spellStealPriority,
|
|
1277
1461
|
self._learnLevelMinimum,
|
|
1278
|
-
self[
|
|
1462
|
+
self[147]
|
|
1279
1463
|
) then
|
|
1280
1464
|
local timer = self._timer
|
|
1281
1465
|
if timer == nil then
|
|
@@ -1290,38 +1474,134 @@ __TS__SetDescriptor(
|
|
|
1290
1474
|
},
|
|
1291
1475
|
true
|
|
1292
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
|
+
)
|
|
1293
1568
|
Buff.createdEvent = buffCreatedEvent
|
|
1294
1569
|
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1295
1570
|
(function(self)
|
|
1296
|
-
local function destroyBuffIfNeeded(buff)
|
|
1297
|
-
|
|
1298
|
-
|
|
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
|
|
1577
|
+
buff:destroy()
|
|
1578
|
+
end
|
|
1299
1579
|
end
|
|
1300
1580
|
end
|
|
1301
|
-
____exports.checkBuff = function(unit, buffTypeId)
|
|
1581
|
+
____exports.checkBuff = function(unit, buffTypeId, isDispel, source)
|
|
1302
1582
|
local buffByTypeId = buffByTypeIdByUnit[unit]
|
|
1303
1583
|
if buffByTypeId ~= nil then
|
|
1304
1584
|
local buff = buffByTypeId[buffTypeId]
|
|
1305
1585
|
if buff ~= nil then
|
|
1306
|
-
destroyBuffIfNeeded(buff)
|
|
1586
|
+
destroyBuffIfNeeded(buff, isDispel, source)
|
|
1307
1587
|
end
|
|
1308
1588
|
end
|
|
1309
1589
|
end
|
|
1310
|
-
____exports.checkBuffs = function(unit)
|
|
1311
|
-
____exports.Buff:forAll(unit, destroyBuffIfNeeded)
|
|
1590
|
+
____exports.checkBuffs = function(unit, isDispel, source)
|
|
1591
|
+
____exports.Buff:forAll(unit, destroyBuffIfNeeded, isDispel, source)
|
|
1312
1592
|
end
|
|
1313
1593
|
Unit.abilityChannelingStartEvent:addListener(
|
|
1314
1594
|
0,
|
|
1315
1595
|
function(caster)
|
|
1316
|
-
____exports.checkBuffs(caster)
|
|
1317
|
-
Timer:run(____exports.checkBuffs, caster)
|
|
1596
|
+
____exports.checkBuffs(caster, true, caster)
|
|
1597
|
+
Timer:run(____exports.checkBuffs, caster, true, caster)
|
|
1318
1598
|
end
|
|
1319
1599
|
)
|
|
1320
1600
|
Unit.abilityUnitTargetChannelingStartEvent:addListener(
|
|
1321
1601
|
0,
|
|
1322
1602
|
function(caster, ability, target)
|
|
1323
|
-
____exports.checkBuffs(target)
|
|
1324
|
-
Timer:run(____exports.checkBuffs, target)
|
|
1603
|
+
____exports.checkBuffs(target, true, caster)
|
|
1604
|
+
Timer:run(____exports.checkBuffs, target, true, caster)
|
|
1325
1605
|
end
|
|
1326
1606
|
)
|
|
1327
1607
|
Unit.abilityPointTargetChannelingStartEvent:addListener(
|
|
@@ -1332,21 +1612,53 @@ Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
|
1332
1612
|
y,
|
|
1333
1613
|
ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1334
1614
|
)
|
|
1335
|
-
forEach(units, ____exports.checkBuffs)
|
|
1336
|
-
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
|
|
1337
1640
|
end
|
|
1338
1641
|
)
|
|
1339
1642
|
Unit.onDamage:addListener(
|
|
1340
1643
|
0,
|
|
1341
1644
|
function(source, target)
|
|
1342
1645
|
if source ~= nil then
|
|
1343
|
-
____exports.checkBuffs
|
|
1646
|
+
Timer:run(____exports.checkBuffs, source, false)
|
|
1344
1647
|
end
|
|
1345
|
-
____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)
|
|
1346
1655
|
end
|
|
1347
1656
|
)
|
|
1348
1657
|
buffCreatedEvent:addListener(function(buff)
|
|
1349
1658
|
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1350
1659
|
end)
|
|
1660
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1661
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1662
|
+
end)
|
|
1351
1663
|
end)(Buff)
|
|
1352
1664
|
return ____exports
|