warscript 0.0.1-dev.3642572 → 0.0.1-dev.37ce2c3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/core/dummy.lua +4 -2
- package/core/types/effect.d.ts +12 -4
- package/core/types/effect.lua +67 -104
- package/core/types/frame.d.ts +16 -2
- package/core/types/frame.lua +141 -77
- package/core/types/handle.lua +9 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +18 -1
- package/core/types/player.lua +76 -26
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +18 -26
- package/core/types/sound.lua +99 -53
- package/core/types/tileCell.d.ts +18 -3
- package/core/types/tileCell.lua +108 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/types/unit.d.ts +5 -0
- package/core/types/unit.lua +5 -0
- package/core/util.d.ts +3 -1
- package/core/util.lua +109 -3
- package/decl/native.d.ts +1719 -964
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/ability-type-extended-tooltip.d.ts +8 -0
- package/engine/ability-type-extended-tooltip.lua +44 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
- package/engine/behaviour/ability/damage.d.ts +10 -3
- package/engine/behaviour/ability/damage.lua +41 -49
- package/engine/behaviour/ability/emulate-impact.d.ts +15 -1
- package/engine/behaviour/ability/emulate-impact.lua +96 -7
- 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 +22 -6
- package/engine/behaviour/ability.lua +133 -29
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +41 -2
- package/engine/behaviour/unit.lua +270 -6
- package/engine/buff.d.ts +118 -57
- package/engine/buff.lua +583 -288
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +14 -1
- package/engine/internal/ability.lua +113 -44
- package/engine/internal/item/ability.lua +63 -11
- 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 +32 -16
- package/engine/internal/item.lua +257 -82
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
- package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/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 +35 -0
- package/engine/internal/unit/ability.lua +114 -9
- 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/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +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 +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+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 +11 -11
- package/engine/internal/unit+damage.lua +43 -14
- package/engine/internal/unit+rally.lua +9 -31
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +65 -27
- package/engine/internal/unit.d.ts +42 -36
- package/engine/internal/unit.lua +400 -325
- 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 +14 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
- package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-type.lua +26 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/item-class.d.ts +11 -0
- package/engine/object-data/auxiliary/item-class.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/order-type.d.ts +939 -0
- package/engine/object-data/auxiliary/order-type.lua +2 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.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/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +2 -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/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
- package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment.lua +27 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
- package/engine/object-data/entry/ability-type/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/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/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/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
- package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/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/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
- package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
- package/engine/object-data/entry/ability-type.d.ts +41 -16
- package/engine/object-data/entry/ability-type.lua +321 -24
- package/engine/object-data/entry/buff-type/applicable.lua +122 -106
- package/engine/object-data/entry/buff-type.d.ts +10 -12
- package/engine/object-data/entry/buff-type.lua +37 -27
- 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 +19 -2
- package/engine/object-data/entry/sound-preset.lua +104 -0
- package/engine/object-data/entry/unit-type.d.ts +74 -6
- package/engine/object-data/entry/unit-type.lua +560 -100
- 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 +4 -4
- 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 +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +360 -119
- 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 +48 -0
- package/engine/standard/entries/buff-type.lua +46 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/lightning-type.d.ts +42 -15
- package/engine/standard/entries/lightning-type.lua +0 -14
- package/engine/standard/entries/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 +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- 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 +12 -11
- 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 +9 -1
- package/utility/arrays.lua +28 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +5 -1
- package/utility/linked-set.lua +49 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- package/engine/internal/unit/item.lua +0 -78
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.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,17 +107,21 @@ 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,
|
|
111
123
|
maximumRemainingDuration = true,
|
|
124
|
+
turnsIntoGhost = true,
|
|
112
125
|
stuns = true,
|
|
113
126
|
ignoresStunImmunity = true,
|
|
114
127
|
providesStunImmunity = true,
|
|
@@ -119,11 +132,16 @@ local buffParametersKeys = {
|
|
|
119
132
|
maximumAutoAttackCount = true,
|
|
120
133
|
maximumDamageDealtEventCount = true,
|
|
121
134
|
maximumDamageReceivedEventCount = true,
|
|
135
|
+
absorbedDamageFactor = true,
|
|
136
|
+
maximumDamageAbsorbed = true,
|
|
137
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
122
138
|
uniqueGroup = true,
|
|
139
|
+
destructionSoundPresetId = true,
|
|
123
140
|
damageOnExpiration = true,
|
|
124
141
|
healingOnExpiration = true,
|
|
125
142
|
killsOnExpiration = true,
|
|
126
|
-
explodesOnExpiration = true
|
|
143
|
+
explodesOnExpiration = true,
|
|
144
|
+
abilityCooldownFactor = true
|
|
127
145
|
}
|
|
128
146
|
local function resolveEnumValue(ability, level, value)
|
|
129
147
|
if value == nil or type(value) == "number" then
|
|
@@ -174,6 +192,8 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
174
192
|
end
|
|
175
193
|
end
|
|
176
194
|
local buffBooleanParameters = {
|
|
195
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
196
|
+
"turnsIntoGhost",
|
|
177
197
|
"stuns",
|
|
178
198
|
"ignoresStunImmunity",
|
|
179
199
|
"disablesAutoAttack",
|
|
@@ -185,10 +205,14 @@ local buffNumberParameters = {
|
|
|
185
205
|
"durationIncreaseOnAutoAttack",
|
|
186
206
|
"attackSpeedIncreaseFactor",
|
|
187
207
|
"movementSpeedIncreaseFactor",
|
|
208
|
+
"manaRegenerationRateIncreaseFactor",
|
|
188
209
|
"evasionProbability",
|
|
189
210
|
"armorIncrease",
|
|
211
|
+
"maxHealthIncrease",
|
|
212
|
+
"maxManaIncrease",
|
|
190
213
|
"damageFactor",
|
|
191
214
|
"receivedDamageFactor",
|
|
215
|
+
"returnedMeleeDamageFactor",
|
|
192
216
|
"maximumAutoAttackCount",
|
|
193
217
|
"maximumDamageDealtEventCount",
|
|
194
218
|
"maximumDamageReceivedEventCount",
|
|
@@ -199,7 +223,10 @@ local buffNumberParameters = {
|
|
|
199
223
|
"healingPerInterval",
|
|
200
224
|
"healingOverDuration",
|
|
201
225
|
"damageOnExpiration",
|
|
202
|
-
"healingOnExpiration"
|
|
226
|
+
"healingOnExpiration",
|
|
227
|
+
"absorbedDamageFactor",
|
|
228
|
+
"maximumDamageAbsorbed",
|
|
229
|
+
"abilityCooldownFactor"
|
|
203
230
|
}
|
|
204
231
|
local unsuccessfulApplicationMarker = {}
|
|
205
232
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -234,17 +261,21 @@ local function destroyBuff(buff)
|
|
|
234
261
|
buff:destroy()
|
|
235
262
|
end
|
|
236
263
|
local function expireBuff(buff)
|
|
237
|
-
|
|
238
|
-
|
|
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
|
|
239
270
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
240
271
|
buff:flashSpecialEffect()
|
|
241
272
|
if remainingDamageOverDuration ~= 0 then
|
|
242
273
|
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
243
|
-
buff[
|
|
274
|
+
buff[114] = nil
|
|
244
275
|
end
|
|
245
276
|
if remainingHealingOverDuration ~= 0 then
|
|
246
277
|
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
247
|
-
buff[
|
|
278
|
+
buff[119] = nil
|
|
248
279
|
end
|
|
249
280
|
end
|
|
250
281
|
Timer:run(destroyBuff, buff)
|
|
@@ -252,8 +283,8 @@ local function expireBuff(buff)
|
|
|
252
283
|
end
|
|
253
284
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
254
285
|
buffDamageIntervalTimerCallback(buff)
|
|
255
|
-
local timer = buff[
|
|
256
|
-
local damageInterval = buff[
|
|
286
|
+
local timer = buff[115]
|
|
287
|
+
local damageInterval = buff[113]
|
|
257
288
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
258
289
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
259
290
|
end
|
|
@@ -261,48 +292,49 @@ end
|
|
|
261
292
|
buffDamageIntervalTimerCallback = function(buff)
|
|
262
293
|
buff:flashSpecialEffect()
|
|
263
294
|
local source = buff[102] or buff[101]
|
|
264
|
-
local remainingDamageOverDuration = buff[
|
|
295
|
+
local remainingDamageOverDuration = buff[114] or 0
|
|
265
296
|
if remainingDamageOverDuration ~= 0 then
|
|
266
|
-
local damageInterval = buff[
|
|
297
|
+
local damageInterval = buff[113] or 0
|
|
267
298
|
if damageInterval ~= 0 then
|
|
268
299
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
269
300
|
source:damageTarget(buff[101], damage)
|
|
270
|
-
buff[
|
|
301
|
+
buff[114] = remainingDamageOverDuration - damage
|
|
271
302
|
end
|
|
272
303
|
end
|
|
273
|
-
local damagePerInterval = buff[
|
|
304
|
+
local damagePerInterval = buff[112] or 0
|
|
274
305
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
275
306
|
source:damageTarget(buff[101], damagePerInterval)
|
|
276
307
|
end
|
|
277
308
|
end
|
|
278
309
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
279
310
|
buffHealingIntervalTimerCallback(buff)
|
|
280
|
-
local timer = buff[
|
|
281
|
-
local healingInterval = buff[
|
|
311
|
+
local timer = buff[120]
|
|
312
|
+
local healingInterval = buff[118]
|
|
282
313
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
283
314
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
284
315
|
end
|
|
285
316
|
end
|
|
286
317
|
buffHealingIntervalTimerCallback = function(buff)
|
|
287
|
-
if buff[
|
|
318
|
+
if buff[118] ~= buff[113] then
|
|
288
319
|
buff:flashSpecialEffect()
|
|
289
320
|
end
|
|
290
321
|
local source = buff[102] or buff[101]
|
|
291
|
-
local remainingHealingOverDuration = buff[
|
|
322
|
+
local remainingHealingOverDuration = buff[119] or 0
|
|
292
323
|
if remainingHealingOverDuration ~= 0 then
|
|
293
|
-
local healingInterval = buff[
|
|
324
|
+
local healingInterval = buff[118] or 0
|
|
294
325
|
if healingInterval ~= 0 then
|
|
295
326
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
296
327
|
source:healTarget(buff[101], healing)
|
|
297
|
-
buff[
|
|
328
|
+
buff[119] = remainingHealingOverDuration - healing
|
|
298
329
|
end
|
|
299
330
|
end
|
|
300
|
-
local healingPerInterval = buff[
|
|
331
|
+
local healingPerInterval = buff[117] or 0
|
|
301
332
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
302
333
|
source:healTarget(buff[101], healingPerInterval)
|
|
303
334
|
end
|
|
304
335
|
end
|
|
305
|
-
local
|
|
336
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
337
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
306
338
|
____exports.Buff = __TS__Class()
|
|
307
339
|
local Buff = ____exports.Buff
|
|
308
340
|
Buff.name = "Buff"
|
|
@@ -317,33 +349,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
317
349
|
local polarity
|
|
318
350
|
local resistanceType
|
|
319
351
|
local ability
|
|
352
|
+
local abilityBehavior
|
|
320
353
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
321
354
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
322
355
|
polarity = resistanceTypeOrPolarity
|
|
323
356
|
resistanceType = abilityOrParametersOrResistanceType
|
|
324
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
357
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
358
|
+
abilityBehavior = parametersOrAbility
|
|
359
|
+
ability = abilityBehavior.ability
|
|
360
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
325
361
|
ability = parametersOrAbility
|
|
326
|
-
|
|
327
|
-
ability = nil
|
|
362
|
+
elseif parametersOrAbility ~= nil then
|
|
328
363
|
parameters = parametersOrAbility
|
|
329
364
|
end
|
|
330
365
|
else
|
|
331
366
|
typeId = typeIdOrTypeIds
|
|
332
367
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
333
368
|
resistanceType = resistanceTypeOrPolarity
|
|
334
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
369
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
370
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
371
|
+
ability = abilityBehavior.ability
|
|
372
|
+
parameters = parametersOrAbility
|
|
373
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
335
374
|
ability = abilityOrParametersOrResistanceType
|
|
336
375
|
parameters = parametersOrAbility
|
|
337
|
-
|
|
338
|
-
ability = nil
|
|
376
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
339
377
|
parameters = abilityOrParametersOrResistanceType
|
|
378
|
+
else
|
|
379
|
+
parameters = parametersOrAbility
|
|
340
380
|
end
|
|
341
381
|
end
|
|
382
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
342
383
|
self.typeId = typeId
|
|
343
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
344
|
-
parameters = ability
|
|
345
|
-
ability = nil
|
|
346
|
-
end
|
|
347
384
|
local defaultParameters = self.constructor.defaultParameters
|
|
348
385
|
local level = parameters and parameters.level or defaultParameters.level
|
|
349
386
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -371,14 +408,15 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
371
408
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
372
409
|
if missProbability ~= nil then
|
|
373
410
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
374
|
-
self[
|
|
411
|
+
self[147] = missProbability
|
|
375
412
|
end
|
|
376
413
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
377
414
|
if buffByTypeId == nil then
|
|
378
415
|
buffByTypeId = {}
|
|
379
416
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
380
417
|
end
|
|
381
|
-
|
|
418
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
419
|
+
local ____opt_15 = self.previousBuff
|
|
382
420
|
if ____opt_15 ~= nil then
|
|
383
421
|
____opt_15:destroy()
|
|
384
422
|
end
|
|
@@ -415,17 +453,18 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
415
453
|
self[102] = source
|
|
416
454
|
self[103] = duration or 0
|
|
417
455
|
self[104] = uniqueGroup
|
|
418
|
-
self[105] =
|
|
419
|
-
self[106] = BlzGetAbilityStringLevelField(self.handle,
|
|
456
|
+
self[105] = parameters and parameters.destructionSoundPresetId or defaultParameters and defaultParameters.destructionSoundPresetId
|
|
457
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
458
|
+
self[107] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
420
459
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
421
460
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
422
|
-
local
|
|
423
|
-
local
|
|
424
|
-
local
|
|
425
|
-
if
|
|
426
|
-
|
|
461
|
+
local ____ability_28 = ability
|
|
462
|
+
local ____level_29 = level
|
|
463
|
+
local ____temp_27 = parameters and parameters[buffBooleanParameter]
|
|
464
|
+
if ____temp_27 == nil then
|
|
465
|
+
____temp_27 = defaultParameters[buffBooleanParameter]
|
|
427
466
|
end
|
|
428
|
-
if resolveBooleanValue(
|
|
467
|
+
if resolveBooleanValue(____ability_28, ____level_29, ____temp_27) then
|
|
429
468
|
self[buffBooleanParameter] = true
|
|
430
469
|
end
|
|
431
470
|
end
|
|
@@ -441,11 +480,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
441
480
|
end
|
|
442
481
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
443
482
|
if maximumDuration ~= nil then
|
|
444
|
-
self[
|
|
483
|
+
self[109] = resolveNumberValue(ability, level, maximumDuration)
|
|
445
484
|
end
|
|
446
485
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
447
486
|
if maximumRemainingDuration ~= nil then
|
|
448
|
-
self[
|
|
487
|
+
self[110] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
449
488
|
end
|
|
450
489
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
451
490
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -454,24 +493,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
454
493
|
abilityTypeIds = {}
|
|
455
494
|
self._abilityTypeIds = abilityTypeIds
|
|
456
495
|
end
|
|
457
|
-
for
|
|
496
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
497
|
+
local abilityParameters = checkNotNull(parametersAbilityTypeIds[abilityTypeId])
|
|
458
498
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
459
499
|
if addedAbility ~= nil then
|
|
460
500
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
461
501
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
471
|
-
)
|
|
472
|
-
end
|
|
502
|
+
if abilityParameters.isButtonVisible == false then
|
|
503
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
504
|
+
end
|
|
505
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
506
|
+
field[1]:setValue(
|
|
507
|
+
addedAbility,
|
|
508
|
+
resolveNumberValue(ability, level, field[2])
|
|
509
|
+
)
|
|
473
510
|
end
|
|
474
|
-
abilityTypeIds[
|
|
511
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
475
512
|
end
|
|
476
513
|
end
|
|
477
514
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -483,18 +520,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
483
520
|
self._behaviors = behaviors
|
|
484
521
|
end
|
|
485
522
|
end
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
if
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
523
|
+
if parameters ~= nil then
|
|
524
|
+
local additionalParameters = {}
|
|
525
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
526
|
+
if not buffParametersKeys[key] then
|
|
527
|
+
if ability then
|
|
528
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
529
|
+
else
|
|
530
|
+
additionalParameters[key] = parameters[key]
|
|
531
|
+
end
|
|
493
532
|
end
|
|
494
533
|
end
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
534
|
+
if (next(additionalParameters)) ~= nil then
|
|
535
|
+
self.parameters = additionalParameters
|
|
536
|
+
end
|
|
498
537
|
end
|
|
499
538
|
end
|
|
500
539
|
if duration ~= nil and duration > 0 then
|
|
@@ -504,65 +543,79 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
504
543
|
end
|
|
505
544
|
self:onCreate()
|
|
506
545
|
self[100] = 1
|
|
546
|
+
Event.invoke(buffCreatedEvent, self)
|
|
507
547
|
end
|
|
508
|
-
function Buff.prototype.
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
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
|
|
512
555
|
end
|
|
513
|
-
function Buff.prototype.
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
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
|
|
518
562
|
end
|
|
519
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
520
563
|
end
|
|
521
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)
|
|
522
583
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
523
|
-
Effect:flash(
|
|
584
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
524
585
|
else
|
|
525
586
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
526
|
-
local
|
|
527
|
-
local
|
|
528
|
-
local
|
|
529
|
-
|
|
530
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
531
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
532
|
-
)
|
|
533
|
-
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
|
|
534
591
|
if isWidgetProvided then
|
|
535
|
-
|
|
592
|
+
____isWidgetProvided_42 = yOrParametersOrDuration
|
|
536
593
|
else
|
|
537
|
-
|
|
594
|
+
____isWidgetProvided_42 = widgetOrXOrParametersOrDuration
|
|
538
595
|
end
|
|
539
|
-
__TS__SparseArrayPush(
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
__TS__SparseArraySpread(
|
|
596
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
597
|
+
____Effect_flash_45(
|
|
598
|
+
____Effect_44,
|
|
599
|
+
__TS__SparseArraySpread(____array_43)
|
|
543
600
|
)
|
|
544
601
|
end
|
|
545
602
|
end
|
|
546
|
-
function Buff.prototype.
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
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
|
|
560
618
|
end
|
|
561
|
-
__TS__SparseArrayPush(____array_45, ____isWidgetProvided_44)
|
|
562
|
-
____Effect_flash_47(
|
|
563
|
-
____Effect_46,
|
|
564
|
-
__TS__SparseArraySpread(____array_45)
|
|
565
|
-
)
|
|
566
619
|
end
|
|
567
620
|
function Buff.prototype.onCreate(self)
|
|
568
621
|
end
|
|
@@ -570,19 +623,25 @@ function Buff.prototype.onDestroy(self)
|
|
|
570
623
|
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
571
624
|
self[100] = 2
|
|
572
625
|
local unit = self._unit
|
|
626
|
+
local destructionSoundPresetId = self[105]
|
|
627
|
+
if destructionSoundPresetId ~= nil then
|
|
628
|
+
Sound3D:playFromLabel(destructionSoundPresetId, SoundSettings.Ability, unit)
|
|
629
|
+
end
|
|
573
630
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
574
631
|
removeBuff(unit.handle, self.typeId)
|
|
632
|
+
else
|
|
633
|
+
removeBuffApplicator(unit.handle, self.typeId)
|
|
575
634
|
end
|
|
576
635
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
577
|
-
local healingIntervalTimer = self[
|
|
636
|
+
local healingIntervalTimer = self[120]
|
|
578
637
|
if healingIntervalTimer ~= nil then
|
|
579
638
|
healingIntervalTimer:destroy()
|
|
580
|
-
self[
|
|
639
|
+
self[120] = nil
|
|
581
640
|
end
|
|
582
|
-
local damageIntervalTimer = self[
|
|
641
|
+
local damageIntervalTimer = self[115]
|
|
583
642
|
if damageIntervalTimer ~= nil then
|
|
584
643
|
damageIntervalTimer:destroy()
|
|
585
|
-
self[
|
|
644
|
+
self[115] = nil
|
|
586
645
|
end
|
|
587
646
|
if self._timer ~= nil then
|
|
588
647
|
self._timer:destroy()
|
|
@@ -592,26 +651,33 @@ function Buff.prototype.onDestroy(self)
|
|
|
592
651
|
behavior:destroy()
|
|
593
652
|
end
|
|
594
653
|
end
|
|
595
|
-
|
|
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
|
|
661
|
+
unit:decrementInvulnerabilityCounter()
|
|
662
|
+
end
|
|
663
|
+
if self[143] then
|
|
596
664
|
unit:decrementDisableAutoAttackCounter()
|
|
597
665
|
end
|
|
598
|
-
if self[
|
|
599
|
-
if self[
|
|
600
|
-
unit:
|
|
666
|
+
if self[141] then
|
|
667
|
+
if self[142] then
|
|
668
|
+
unit:decrementForceStunCounter()
|
|
601
669
|
end
|
|
602
670
|
unit:decrementStunCounter()
|
|
603
671
|
end
|
|
672
|
+
if self[140] then
|
|
673
|
+
unit:decrementGhostCounter()
|
|
674
|
+
end
|
|
604
675
|
if self._abilityTypeIds ~= nil then
|
|
605
|
-
for abilityTypeId in
|
|
676
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
606
677
|
unit:removeAbility(abilityTypeId)
|
|
607
678
|
end
|
|
608
679
|
end
|
|
609
|
-
|
|
610
|
-
for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
|
|
611
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
612
|
-
end
|
|
613
|
-
end
|
|
614
|
-
Event.invoke(buffDestroyEvent, self)
|
|
680
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
615
681
|
self[100] = 3
|
|
616
682
|
return UnitBehavior.prototype.onDestroy(self)
|
|
617
683
|
end
|
|
@@ -640,49 +706,51 @@ function Buff.apply(self, ...)
|
|
|
640
706
|
end
|
|
641
707
|
end
|
|
642
708
|
function Buff.getByTypeId(self, unit, typeId)
|
|
643
|
-
local
|
|
644
|
-
local buff =
|
|
709
|
+
local ____opt_46 = buffByTypeIdByUnit[unit]
|
|
710
|
+
local buff = ____opt_46 and ____opt_46[typeId]
|
|
645
711
|
if __TS__InstanceOf(buff, self) then
|
|
646
712
|
return buff
|
|
647
713
|
end
|
|
648
714
|
return nil
|
|
649
715
|
end
|
|
716
|
+
function Buff.prototype.onDispel(self, source)
|
|
717
|
+
end
|
|
650
718
|
function Buff.prototype.onExpiration(self)
|
|
651
719
|
local unit = self.unit
|
|
652
|
-
if self[120] ~= nil then
|
|
653
|
-
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
654
|
-
end
|
|
655
720
|
if self[121] ~= nil then
|
|
656
|
-
(self[102] or unit):
|
|
721
|
+
(self[102] or unit):damageTarget(unit, self[121] or 0)
|
|
657
722
|
end
|
|
658
|
-
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
|
|
659
727
|
unit:explode()
|
|
660
|
-
elseif self[
|
|
728
|
+
elseif self[145] then
|
|
661
729
|
unit:kill()
|
|
662
730
|
end
|
|
663
731
|
end
|
|
664
732
|
function Buff.prototype.onDeath(self, source)
|
|
665
733
|
local unit = self.unit
|
|
666
|
-
if self[
|
|
734
|
+
if self[123] ~= nil then
|
|
667
735
|
damageArea(
|
|
668
736
|
self[102] or unit,
|
|
669
|
-
self[
|
|
737
|
+
self[123],
|
|
670
738
|
unit.x,
|
|
671
739
|
unit.y,
|
|
740
|
+
self[125] or 0,
|
|
672
741
|
self[124] or 0,
|
|
673
|
-
self[
|
|
742
|
+
self[127] or 0,
|
|
674
743
|
self[126] or 0,
|
|
675
|
-
self[
|
|
676
|
-
self[128] or 0
|
|
677
|
-
self[127] or 0
|
|
744
|
+
self[129] or 0,
|
|
745
|
+
self[128] or 0
|
|
678
746
|
)
|
|
679
747
|
end
|
|
680
748
|
end
|
|
681
749
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
682
750
|
if event.isAttack then
|
|
683
|
-
if self[
|
|
684
|
-
local durationIncrease = self[
|
|
685
|
-
local maximumDuration = self[
|
|
751
|
+
if self[108] ~= nil then
|
|
752
|
+
local durationIncrease = self[108]
|
|
753
|
+
local maximumDuration = self[109] or 0
|
|
686
754
|
if maximumDuration > 0 then
|
|
687
755
|
durationIncrease = min(
|
|
688
756
|
durationIncrease,
|
|
@@ -690,31 +758,43 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
690
758
|
)
|
|
691
759
|
end
|
|
692
760
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
693
|
-
local maximumRemainingDuration = self[
|
|
761
|
+
local maximumRemainingDuration = self[110] or 0
|
|
694
762
|
if maximumRemainingDuration > 0 then
|
|
695
763
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
696
764
|
end
|
|
697
765
|
self.remainingDuration = remainingDuration
|
|
698
766
|
end
|
|
699
|
-
local autoAttackCount = (self[
|
|
700
|
-
self[
|
|
701
|
-
if autoAttackCount == self[
|
|
767
|
+
local autoAttackCount = (self[130] or 0) + 1
|
|
768
|
+
self[130] = autoAttackCount
|
|
769
|
+
if autoAttackCount == self[131] then
|
|
702
770
|
self:destroy()
|
|
703
771
|
end
|
|
704
772
|
end
|
|
705
773
|
if event.originalAmount ~= 0 then
|
|
706
|
-
local damageDealtEventCount = (self[
|
|
707
|
-
self[
|
|
708
|
-
if damageDealtEventCount == self[
|
|
774
|
+
local damageDealtEventCount = (self[132] or 0) + 1
|
|
775
|
+
self[132] = damageDealtEventCount
|
|
776
|
+
if damageDealtEventCount == self[133] then
|
|
709
777
|
self:destroy()
|
|
710
778
|
end
|
|
711
779
|
end
|
|
712
780
|
end
|
|
713
781
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
714
782
|
if event.originalAmount ~= 0 then
|
|
715
|
-
local
|
|
716
|
-
|
|
717
|
-
|
|
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
|
|
718
798
|
self:destroy()
|
|
719
799
|
end
|
|
720
800
|
end
|
|
@@ -741,13 +821,13 @@ __TS__SetDescriptor(
|
|
|
741
821
|
"remainingDamageOverDuration",
|
|
742
822
|
{
|
|
743
823
|
get = function(self)
|
|
744
|
-
return self[
|
|
824
|
+
return self[114] or 0
|
|
745
825
|
end,
|
|
746
826
|
set = function(self, remainingDamageOverDuration)
|
|
747
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
748
|
-
self[
|
|
749
|
-
local damageOverDuration = (self[
|
|
750
|
-
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
|
|
751
831
|
end
|
|
752
832
|
},
|
|
753
833
|
true
|
|
@@ -757,13 +837,13 @@ __TS__SetDescriptor(
|
|
|
757
837
|
"damageOverDuration",
|
|
758
838
|
{
|
|
759
839
|
get = function(self)
|
|
760
|
-
return self[
|
|
840
|
+
return self[111] or 0
|
|
761
841
|
end,
|
|
762
842
|
set = function(self, damageOverDuration)
|
|
763
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
764
|
-
self[
|
|
765
|
-
local remainingDamageOverDuration = (self[
|
|
766
|
-
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
|
|
767
847
|
end
|
|
768
848
|
},
|
|
769
849
|
true
|
|
@@ -773,10 +853,10 @@ __TS__SetDescriptor(
|
|
|
773
853
|
"damagePerInterval",
|
|
774
854
|
{
|
|
775
855
|
get = function(self)
|
|
776
|
-
return self[
|
|
856
|
+
return self[112] or 0
|
|
777
857
|
end,
|
|
778
858
|
set = function(self, damagePerInterval)
|
|
779
|
-
self[
|
|
859
|
+
self[112] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
780
860
|
end
|
|
781
861
|
},
|
|
782
862
|
true
|
|
@@ -786,25 +866,25 @@ __TS__SetDescriptor(
|
|
|
786
866
|
"damageInterval",
|
|
787
867
|
{
|
|
788
868
|
get = function(self)
|
|
789
|
-
return self[
|
|
869
|
+
return self[113] or 0
|
|
790
870
|
end,
|
|
791
871
|
set = function(self, damageInterval)
|
|
792
872
|
if damageInterval <= 0 then
|
|
793
|
-
self[
|
|
794
|
-
local timer = self[
|
|
873
|
+
self[113] = damageInterval ~= 0 and damageInterval or nil
|
|
874
|
+
local timer = self[115]
|
|
795
875
|
if timer ~= nil then
|
|
796
876
|
timer:destroy()
|
|
797
|
-
self[
|
|
877
|
+
self[115] = nil
|
|
798
878
|
end
|
|
799
879
|
return
|
|
800
880
|
end
|
|
801
|
-
self[
|
|
802
|
-
local
|
|
803
|
-
local elapsed =
|
|
804
|
-
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]
|
|
805
885
|
if timer == nil then
|
|
806
886
|
timer = Timer:create()
|
|
807
|
-
self[
|
|
887
|
+
self[115] = timer
|
|
808
888
|
end
|
|
809
889
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
810
890
|
if initialDelay == damageInterval then
|
|
@@ -821,13 +901,13 @@ __TS__SetDescriptor(
|
|
|
821
901
|
"remainingHealingOverDuration",
|
|
822
902
|
{
|
|
823
903
|
get = function(self)
|
|
824
|
-
return self[
|
|
904
|
+
return self[119] or 0
|
|
825
905
|
end,
|
|
826
906
|
set = function(self, remainingHealingOverDuration)
|
|
827
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
828
|
-
self[
|
|
829
|
-
local healingOverDuration = (self[
|
|
830
|
-
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
|
|
831
911
|
end
|
|
832
912
|
},
|
|
833
913
|
true
|
|
@@ -837,13 +917,13 @@ __TS__SetDescriptor(
|
|
|
837
917
|
"healingOverDuration",
|
|
838
918
|
{
|
|
839
919
|
get = function(self)
|
|
840
|
-
return self[
|
|
920
|
+
return self[116] or 0
|
|
841
921
|
end,
|
|
842
922
|
set = function(self, healingOverDuration)
|
|
843
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
844
|
-
self[
|
|
845
|
-
local remainingHealingOverDuration = (self[
|
|
846
|
-
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
|
|
847
927
|
end
|
|
848
928
|
},
|
|
849
929
|
true
|
|
@@ -853,10 +933,10 @@ __TS__SetDescriptor(
|
|
|
853
933
|
"healingPerInterval",
|
|
854
934
|
{
|
|
855
935
|
get = function(self)
|
|
856
|
-
return self[
|
|
936
|
+
return self[117] or 0
|
|
857
937
|
end,
|
|
858
938
|
set = function(self, healingPerInterval)
|
|
859
|
-
self[
|
|
939
|
+
self[117] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
860
940
|
end
|
|
861
941
|
},
|
|
862
942
|
true
|
|
@@ -866,25 +946,25 @@ __TS__SetDescriptor(
|
|
|
866
946
|
"healingInterval",
|
|
867
947
|
{
|
|
868
948
|
get = function(self)
|
|
869
|
-
return self[
|
|
949
|
+
return self[118] or 0
|
|
870
950
|
end,
|
|
871
951
|
set = function(self, healingInterval)
|
|
872
952
|
if healingInterval <= 0 then
|
|
873
|
-
self[
|
|
874
|
-
local timer = self[
|
|
953
|
+
self[118] = healingInterval ~= 0 and healingInterval or nil
|
|
954
|
+
local timer = self[120]
|
|
875
955
|
if timer ~= nil then
|
|
876
956
|
timer:destroy()
|
|
877
|
-
self[
|
|
957
|
+
self[120] = nil
|
|
878
958
|
end
|
|
879
959
|
return
|
|
880
960
|
end
|
|
881
|
-
self[
|
|
882
|
-
local
|
|
883
|
-
local elapsed =
|
|
884
|
-
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]
|
|
885
965
|
if timer == nil then
|
|
886
966
|
timer = Timer:create()
|
|
887
|
-
self[
|
|
967
|
+
self[120] = timer
|
|
888
968
|
end
|
|
889
969
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
890
970
|
if initialDelay == healingInterval then
|
|
@@ -901,10 +981,10 @@ __TS__SetDescriptor(
|
|
|
901
981
|
"damageOnExpiration",
|
|
902
982
|
{
|
|
903
983
|
get = function(self)
|
|
904
|
-
return self[
|
|
984
|
+
return self[121] or 0
|
|
905
985
|
end,
|
|
906
986
|
set = function(self, damageOnExpiration)
|
|
907
|
-
self[
|
|
987
|
+
self[121] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
908
988
|
end
|
|
909
989
|
},
|
|
910
990
|
true
|
|
@@ -914,10 +994,10 @@ __TS__SetDescriptor(
|
|
|
914
994
|
"healingOnExpiration",
|
|
915
995
|
{
|
|
916
996
|
get = function(self)
|
|
917
|
-
return self[
|
|
997
|
+
return self[122] or 0
|
|
918
998
|
end,
|
|
919
999
|
set = function(self, healingOnExpiration)
|
|
920
|
-
self[
|
|
1000
|
+
self[122] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
921
1001
|
end
|
|
922
1002
|
},
|
|
923
1003
|
true
|
|
@@ -948,6 +1028,19 @@ __TS__SetDescriptor(
|
|
|
948
1028
|
},
|
|
949
1029
|
true
|
|
950
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
|
+
)
|
|
951
1044
|
__TS__SetDescriptor(
|
|
952
1045
|
Buff.prototype,
|
|
953
1046
|
"armorIncrease",
|
|
@@ -961,30 +1054,79 @@ __TS__SetDescriptor(
|
|
|
961
1054
|
},
|
|
962
1055
|
true
|
|
963
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
|
+
)
|
|
1083
|
+
__TS__SetDescriptor(
|
|
1084
|
+
Buff.prototype,
|
|
1085
|
+
"turnsIntoGhost",
|
|
1086
|
+
{
|
|
1087
|
+
get = function(self)
|
|
1088
|
+
local ____self__140_53 = self[140]
|
|
1089
|
+
if ____self__140_53 == nil then
|
|
1090
|
+
____self__140_53 = false
|
|
1091
|
+
end
|
|
1092
|
+
return ____self__140_53
|
|
1093
|
+
end,
|
|
1094
|
+
set = function(self, turnsIntoGhost)
|
|
1095
|
+
if not turnsIntoGhost and self[140] then
|
|
1096
|
+
self.object:decrementGhostCounter()
|
|
1097
|
+
self[140] = nil
|
|
1098
|
+
elseif turnsIntoGhost and not self[140] then
|
|
1099
|
+
self.object:incrementGhostCounter()
|
|
1100
|
+
self[140] = true
|
|
1101
|
+
end
|
|
1102
|
+
end
|
|
1103
|
+
},
|
|
1104
|
+
true
|
|
1105
|
+
)
|
|
964
1106
|
__TS__SetDescriptor(
|
|
965
1107
|
Buff.prototype,
|
|
966
1108
|
"stuns",
|
|
967
1109
|
{
|
|
968
1110
|
get = function(self)
|
|
969
|
-
local
|
|
970
|
-
if
|
|
971
|
-
|
|
1111
|
+
local ____self__141_54 = self[141]
|
|
1112
|
+
if ____self__141_54 == nil then
|
|
1113
|
+
____self__141_54 = false
|
|
972
1114
|
end
|
|
973
|
-
return
|
|
1115
|
+
return ____self__141_54
|
|
974
1116
|
end,
|
|
975
1117
|
set = function(self, stuns)
|
|
976
|
-
if not stuns and self[
|
|
977
|
-
if self[
|
|
978
|
-
self.object:
|
|
1118
|
+
if not stuns and self[141] then
|
|
1119
|
+
if self[142] then
|
|
1120
|
+
self.object:decrementForceStunCounter()
|
|
979
1121
|
end
|
|
980
1122
|
self.object:decrementStunCounter()
|
|
981
|
-
self[
|
|
982
|
-
elseif stuns and not self[
|
|
983
|
-
if self[
|
|
984
|
-
self.object:
|
|
1123
|
+
self[141] = nil
|
|
1124
|
+
elseif stuns and not self[141] then
|
|
1125
|
+
if self[142] then
|
|
1126
|
+
self.object:incrementForceStunCounter()
|
|
985
1127
|
end
|
|
986
1128
|
self.object:incrementStunCounter()
|
|
987
|
-
self[
|
|
1129
|
+
self[141] = true
|
|
988
1130
|
end
|
|
989
1131
|
end
|
|
990
1132
|
},
|
|
@@ -995,23 +1137,23 @@ __TS__SetDescriptor(
|
|
|
995
1137
|
"ignoresStunImmunity",
|
|
996
1138
|
{
|
|
997
1139
|
get = function(self)
|
|
998
|
-
local
|
|
999
|
-
if
|
|
1000
|
-
|
|
1140
|
+
local ____self__142_55 = self[142]
|
|
1141
|
+
if ____self__142_55 == nil then
|
|
1142
|
+
____self__142_55 = false
|
|
1001
1143
|
end
|
|
1002
|
-
return
|
|
1144
|
+
return ____self__142_55
|
|
1003
1145
|
end,
|
|
1004
1146
|
set = function(self, ignoresStunImmunity)
|
|
1005
|
-
if not ignoresStunImmunity and self[
|
|
1006
|
-
if self[
|
|
1007
|
-
self.object:
|
|
1147
|
+
if not ignoresStunImmunity and self[142] then
|
|
1148
|
+
if self[141] then
|
|
1149
|
+
self.object:decrementForceStunCounter()
|
|
1008
1150
|
end
|
|
1009
|
-
self[
|
|
1010
|
-
elseif ignoresStunImmunity and not self[
|
|
1011
|
-
if self[
|
|
1012
|
-
self.object:
|
|
1151
|
+
self[142] = nil
|
|
1152
|
+
elseif ignoresStunImmunity and not self[142] then
|
|
1153
|
+
if self[141] then
|
|
1154
|
+
self.object:incrementForceStunCounter()
|
|
1013
1155
|
end
|
|
1014
|
-
self[
|
|
1156
|
+
self[142] = true
|
|
1015
1157
|
end
|
|
1016
1158
|
end
|
|
1017
1159
|
},
|
|
@@ -1022,19 +1164,19 @@ __TS__SetDescriptor(
|
|
|
1022
1164
|
"disablesAutoAttack",
|
|
1023
1165
|
{
|
|
1024
1166
|
get = function(self)
|
|
1025
|
-
local
|
|
1026
|
-
if
|
|
1027
|
-
|
|
1167
|
+
local ____self__143_56 = self[143]
|
|
1168
|
+
if ____self__143_56 == nil then
|
|
1169
|
+
____self__143_56 = false
|
|
1028
1170
|
end
|
|
1029
|
-
return
|
|
1171
|
+
return ____self__143_56
|
|
1030
1172
|
end,
|
|
1031
1173
|
set = function(self, disablesAutoAttack)
|
|
1032
|
-
if not disablesAutoAttack and self[
|
|
1174
|
+
if not disablesAutoAttack and self[143] then
|
|
1033
1175
|
self.object:decrementDisableAutoAttackCounter()
|
|
1034
|
-
self[
|
|
1035
|
-
elseif disablesAutoAttack and not self[
|
|
1176
|
+
self[143] = nil
|
|
1177
|
+
elseif disablesAutoAttack and not self[143] then
|
|
1036
1178
|
self.object:incrementDisableAutoAttackCounter()
|
|
1037
|
-
self[
|
|
1179
|
+
self[143] = true
|
|
1038
1180
|
end
|
|
1039
1181
|
end
|
|
1040
1182
|
},
|
|
@@ -1045,19 +1187,19 @@ __TS__SetDescriptor(
|
|
|
1045
1187
|
"providesInvulnerability",
|
|
1046
1188
|
{
|
|
1047
1189
|
get = function(self)
|
|
1048
|
-
local
|
|
1049
|
-
if
|
|
1050
|
-
|
|
1190
|
+
local ____self__144_57 = self[144]
|
|
1191
|
+
if ____self__144_57 == nil then
|
|
1192
|
+
____self__144_57 = false
|
|
1051
1193
|
end
|
|
1052
|
-
return
|
|
1194
|
+
return ____self__144_57
|
|
1053
1195
|
end,
|
|
1054
1196
|
set = function(self, providesInvulnerability)
|
|
1055
|
-
if not providesInvulnerability and self[
|
|
1197
|
+
if not providesInvulnerability and self[144] then
|
|
1056
1198
|
self.object:decrementInvulnerabilityCounter()
|
|
1057
|
-
self[
|
|
1058
|
-
elseif providesInvulnerability and not self[
|
|
1199
|
+
self[144] = nil
|
|
1200
|
+
elseif providesInvulnerability and not self[144] then
|
|
1059
1201
|
self.object:incrementInvulnerabilityCounter()
|
|
1060
|
-
self[
|
|
1202
|
+
self[144] = true
|
|
1061
1203
|
end
|
|
1062
1204
|
end
|
|
1063
1205
|
},
|
|
@@ -1068,17 +1210,17 @@ __TS__SetDescriptor(
|
|
|
1068
1210
|
"killsOnExpiration",
|
|
1069
1211
|
{
|
|
1070
1212
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1213
|
+
local ____self__145_58 = self[145]
|
|
1214
|
+
if ____self__145_58 == nil then
|
|
1215
|
+
____self__145_58 = false
|
|
1074
1216
|
end
|
|
1075
|
-
return
|
|
1217
|
+
return ____self__145_58
|
|
1076
1218
|
end,
|
|
1077
1219
|
set = function(self, killsOnExpiration)
|
|
1078
|
-
if not killsOnExpiration and self[
|
|
1079
|
-
self[
|
|
1080
|
-
elseif killsOnExpiration and not self[
|
|
1081
|
-
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
|
|
1082
1224
|
end
|
|
1083
1225
|
end
|
|
1084
1226
|
},
|
|
@@ -1089,17 +1231,17 @@ __TS__SetDescriptor(
|
|
|
1089
1231
|
"explodesOnExpiration",
|
|
1090
1232
|
{
|
|
1091
1233
|
get = function(self)
|
|
1092
|
-
local
|
|
1093
|
-
if
|
|
1094
|
-
|
|
1234
|
+
local ____self__146_59 = self[146]
|
|
1235
|
+
if ____self__146_59 == nil then
|
|
1236
|
+
____self__146_59 = false
|
|
1095
1237
|
end
|
|
1096
|
-
return
|
|
1238
|
+
return ____self__146_59
|
|
1097
1239
|
end,
|
|
1098
1240
|
set = function(self, killsOnExpiration)
|
|
1099
|
-
if not killsOnExpiration and self[
|
|
1100
|
-
self[
|
|
1101
|
-
elseif killsOnExpiration and not self[
|
|
1102
|
-
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
|
|
1103
1245
|
end
|
|
1104
1246
|
end
|
|
1105
1247
|
},
|
|
@@ -1110,13 +1252,13 @@ __TS__SetDescriptor(
|
|
|
1110
1252
|
"maximumDamageDealtEventCount",
|
|
1111
1253
|
{
|
|
1112
1254
|
get = function(self)
|
|
1113
|
-
return self[
|
|
1255
|
+
return self[133] or 0
|
|
1114
1256
|
end,
|
|
1115
1257
|
set = function(self, maximumDamageDealtEventCount)
|
|
1116
1258
|
if maximumDamageDealtEventCount == 0 then
|
|
1117
|
-
self[
|
|
1259
|
+
self[133] = nil
|
|
1118
1260
|
else
|
|
1119
|
-
self[
|
|
1261
|
+
self[133] = maximumDamageDealtEventCount
|
|
1120
1262
|
end
|
|
1121
1263
|
end
|
|
1122
1264
|
},
|
|
@@ -1127,13 +1269,13 @@ __TS__SetDescriptor(
|
|
|
1127
1269
|
"maximumDamageReceivedEventCount",
|
|
1128
1270
|
{
|
|
1129
1271
|
get = function(self)
|
|
1130
|
-
return self[
|
|
1272
|
+
return self[135] or 0
|
|
1131
1273
|
end,
|
|
1132
1274
|
set = function(self, maximumDamageReceivedEventCount)
|
|
1133
1275
|
if maximumDamageReceivedEventCount == 0 then
|
|
1134
|
-
self[
|
|
1276
|
+
self[135] = nil
|
|
1135
1277
|
else
|
|
1136
|
-
self[
|
|
1278
|
+
self[135] = maximumDamageReceivedEventCount
|
|
1137
1279
|
end
|
|
1138
1280
|
end
|
|
1139
1281
|
},
|
|
@@ -1144,13 +1286,13 @@ __TS__SetDescriptor(
|
|
|
1144
1286
|
"maximumAutoAttackCount",
|
|
1145
1287
|
{
|
|
1146
1288
|
get = function(self)
|
|
1147
|
-
return self[
|
|
1289
|
+
return self[131] or 0
|
|
1148
1290
|
end,
|
|
1149
1291
|
set = function(self, maximumAutoAttackCount)
|
|
1150
1292
|
if maximumAutoAttackCount == 0 then
|
|
1151
|
-
self[
|
|
1293
|
+
self[131] = nil
|
|
1152
1294
|
else
|
|
1153
|
-
self[
|
|
1295
|
+
self[131] = maximumAutoAttackCount
|
|
1154
1296
|
end
|
|
1155
1297
|
end
|
|
1156
1298
|
},
|
|
@@ -1161,10 +1303,10 @@ __TS__SetDescriptor(
|
|
|
1161
1303
|
"durationIncreaseOnAutoAttack",
|
|
1162
1304
|
{
|
|
1163
1305
|
get = function(self)
|
|
1164
|
-
return self[
|
|
1306
|
+
return self[108] or 0
|
|
1165
1307
|
end,
|
|
1166
1308
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1167
|
-
self[
|
|
1309
|
+
self[108] = durationIncreaseOnAutoAttack
|
|
1168
1310
|
end
|
|
1169
1311
|
},
|
|
1170
1312
|
true
|
|
@@ -1208,12 +1350,39 @@ __TS__SetDescriptor(
|
|
|
1208
1350
|
},
|
|
1209
1351
|
true
|
|
1210
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
|
+
)
|
|
1211
1366
|
__TS__SetDescriptor(
|
|
1212
1367
|
Buff.prototype,
|
|
1213
1368
|
"duration",
|
|
1214
|
-
{
|
|
1215
|
-
|
|
1216
|
-
|
|
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
|
+
},
|
|
1217
1386
|
true
|
|
1218
1387
|
)
|
|
1219
1388
|
__TS__SetDescriptor(
|
|
@@ -1242,7 +1411,7 @@ __TS__SetDescriptor(
|
|
|
1242
1411
|
remainingDuration,
|
|
1243
1412
|
self._spellStealPriority,
|
|
1244
1413
|
self._learnLevelMinimum,
|
|
1245
|
-
self[
|
|
1414
|
+
self[147]
|
|
1246
1415
|
) then
|
|
1247
1416
|
local timer = self._timer
|
|
1248
1417
|
if timer == nil then
|
|
@@ -1257,37 +1426,134 @@ __TS__SetDescriptor(
|
|
|
1257
1426
|
},
|
|
1258
1427
|
true
|
|
1259
1428
|
)
|
|
1260
|
-
|
|
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
|
+
)
|
|
1520
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1521
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1261
1522
|
(function(self)
|
|
1262
|
-
local function destroyBuffIfNeeded(buff)
|
|
1263
|
-
|
|
1264
|
-
|
|
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
|
|
1265
1531
|
end
|
|
1266
1532
|
end
|
|
1267
|
-
____exports.checkBuff = function(unit, buffTypeId)
|
|
1533
|
+
____exports.checkBuff = function(unit, buffTypeId, isDispel, source)
|
|
1268
1534
|
local buffByTypeId = buffByTypeIdByUnit[unit]
|
|
1269
1535
|
if buffByTypeId ~= nil then
|
|
1270
1536
|
local buff = buffByTypeId[buffTypeId]
|
|
1271
1537
|
if buff ~= nil then
|
|
1272
|
-
destroyBuffIfNeeded(buff)
|
|
1538
|
+
destroyBuffIfNeeded(buff, isDispel, source)
|
|
1273
1539
|
end
|
|
1274
1540
|
end
|
|
1275
1541
|
end
|
|
1276
|
-
____exports.checkBuffs = function(unit)
|
|
1277
|
-
____exports.Buff:forAll(unit, destroyBuffIfNeeded)
|
|
1542
|
+
____exports.checkBuffs = function(unit, isDispel, source)
|
|
1543
|
+
____exports.Buff:forAll(unit, destroyBuffIfNeeded, isDispel, source)
|
|
1278
1544
|
end
|
|
1279
1545
|
Unit.abilityChannelingStartEvent:addListener(
|
|
1280
1546
|
0,
|
|
1281
1547
|
function(caster)
|
|
1282
|
-
____exports.checkBuffs(caster)
|
|
1283
|
-
Timer:run(____exports.checkBuffs, caster)
|
|
1548
|
+
____exports.checkBuffs(caster, true, caster)
|
|
1549
|
+
Timer:run(____exports.checkBuffs, caster, true, caster)
|
|
1284
1550
|
end
|
|
1285
1551
|
)
|
|
1286
1552
|
Unit.abilityUnitTargetChannelingStartEvent:addListener(
|
|
1287
1553
|
0,
|
|
1288
1554
|
function(caster, ability, target)
|
|
1289
|
-
____exports.checkBuffs(target)
|
|
1290
|
-
Timer:run(____exports.checkBuffs, target)
|
|
1555
|
+
____exports.checkBuffs(target, true, caster)
|
|
1556
|
+
Timer:run(____exports.checkBuffs, target, true, caster)
|
|
1291
1557
|
end
|
|
1292
1558
|
)
|
|
1293
1559
|
Unit.abilityPointTargetChannelingStartEvent:addListener(
|
|
@@ -1298,18 +1564,47 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1298
1564
|
y,
|
|
1299
1565
|
ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1300
1566
|
)
|
|
1301
|
-
forEach(units, ____exports.checkBuffs)
|
|
1302
|
-
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
|
|
1303
1592
|
end
|
|
1304
1593
|
)
|
|
1305
1594
|
Unit.onDamage:addListener(
|
|
1306
1595
|
0,
|
|
1307
1596
|
function(source, target)
|
|
1308
1597
|
if source ~= nil then
|
|
1309
|
-
____exports.checkBuffs
|
|
1598
|
+
Timer:run(____exports.checkBuffs, source, false)
|
|
1310
1599
|
end
|
|
1311
|
-
____exports.checkBuffs
|
|
1600
|
+
Timer:run(____exports.checkBuffs, target, false)
|
|
1312
1601
|
end
|
|
1313
1602
|
)
|
|
1603
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1604
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1605
|
+
end)
|
|
1606
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1607
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1608
|
+
end)
|
|
1314
1609
|
end)(Buff)
|
|
1315
1610
|
return ____exports
|