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