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