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