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