warscript 0.0.1-dev.d750e38 → 0.0.1-dev.d77b529
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/dummy.lua +4 -2
- package/core/types/effect.d.ts +12 -4
- package/core/types/effect.lua +67 -104
- package/core/types/frame.d.ts +1 -0
- package/core/types/frame.lua +136 -58
- package/core/types/handle.lua +9 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +18 -1
- package/core/types/player.lua +76 -26
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +18 -25
- package/core/types/sound.lua +113 -33
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/types/unit.d.ts +5 -0
- package/core/types/unit.lua +5 -0
- package/core/util.d.ts +3 -1
- package/core/util.lua +115 -4
- package/decl/native.d.ts +1718 -964
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- 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 +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +23 -7
- package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
- package/engine/behaviour/ability/on-command-impact.lua +1 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +17 -5
- package/engine/behaviour/ability.lua +97 -24
- 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 +121 -59
- package/engine/buff.lua +605 -301
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +11 -1
- package/engine/internal/ability.lua +104 -44
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item/owner-cache.d.ts +5 -0
- package/engine/internal/item/owner-cache.lua +4 -0
- package/engine/internal/item+owner.d.ts +2 -0
- package/engine/internal/item+owner.lua +37 -8
- package/engine/internal/item.d.ts +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/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/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +113 -12
- package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
- package/engine/internal/unit/add-item-to-slot.lua +57 -14
- 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 +16 -0
- package/engine/internal/unit/bonus.lua +119 -8
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +34 -19
- package/engine/internal/unit/equipment-inventory.d.ts +44 -0
- package/engine/internal/unit/equipment-inventory.lua +233 -0
- package/engine/internal/unit/expiration-timer.lua +1 -1
- package/engine/internal/unit/extended-inventory.d.ts +25 -0
- package/engine/internal/unit/extended-inventory.lua +99 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/ignore-events-items.lua +10 -1
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
- package/engine/internal/unit/inventory.lua +87 -0
- package/engine/internal/unit/item-container.d.ts +25 -0
- package/engine/internal/unit/item-container.lua +11 -0
- package/engine/internal/unit/item-order-events.d.ts +17 -0
- package/engine/internal/unit/item-order-events.lua +67 -0
- package/engine/internal/unit/item-slot.d.ts +27 -0
- package/engine/internal/unit/item-slot.lua +92 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
- package/engine/internal/unit/pseudo-passive-abilities.lua +11 -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 +73 -3
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +11 -11
- package/engine/internal/unit+damage.lua +43 -14
- package/engine/internal/unit+rally.lua +9 -31
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +65 -27
- package/engine/internal/unit.d.ts +43 -33
- package/engine/internal/unit.lua +391 -323
- package/engine/lightning.d.ts +4 -3
- package/engine/lightning.lua +22 -15
- 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 +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
- package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-type.lua +26 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/item-class.d.ts +11 -0
- package/engine/object-data/auxiliary/item-class.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/order-type.d.ts +939 -0
- package/engine/object-data/auxiliary/order-type.lua +2 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
- 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/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/feral-spirit.lua +2 -2
- 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/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/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-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 +36 -19
- package/engine/object-data/entry/ability-type.lua +307 -29
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- package/engine/object-data/entry/buff-type.d.ts +10 -12
- package/engine/object-data/entry/buff-type.lua +39 -29
- package/engine/object-data/entry/destructible-type.d.ts +32 -2
- package/engine/object-data/entry/destructible-type.lua +181 -0
- package/engine/object-data/entry/item-type.d.ts +18 -3
- package/engine/object-data/entry/item-type.lua +88 -4
- package/engine/object-data/entry/lightning-type.d.ts +6 -8
- package/engine/object-data/entry/lightning-type.lua +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +71 -6
- package/engine/object-data/entry/unit-type.lua +592 -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-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +360 -119
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/ability-type.d.ts +3102 -7
- package/engine/standard/entries/ability-type.lua +0 -6
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -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 +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +11 -1
- package/engine/unit.lua +11 -1
- package/event.d.ts +1 -1
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/network.lua +25 -1
- package/objutil/buff.lua +12 -11
- package/objutil/object.lua +1 -1
- package/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 +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +5 -1
- package/utility/linked-set.lua +49 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- package/engine/internal/unit/item.lua +0 -78
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/buff.lua
CHANGED
|
@@ -16,6 +16,7 @@ local internalApplyBuff = ____applicable.internalApplyBuff
|
|
|
16
16
|
local removeBuff = ____applicable.removeBuff
|
|
17
17
|
local ____ability = require("engine.internal.ability")
|
|
18
18
|
local Ability = ____ability.Ability
|
|
19
|
+
local UnitAbility = ____ability.UnitAbility
|
|
19
20
|
local ____ability = require("engine.object-field.ability")
|
|
20
21
|
local AbilityBooleanField = ____ability.AbilityBooleanField
|
|
21
22
|
local AbilityNumberField = ____ability.AbilityNumberField
|
|
@@ -28,13 +29,11 @@ local ____math = require("math")
|
|
|
28
29
|
local max = ____math.max
|
|
29
30
|
local min = ____math.min
|
|
30
31
|
local ____bonus = require("engine.internal.unit.bonus")
|
|
31
|
-
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
32
|
-
local getUnitBonus = ____bonus.getUnitBonus
|
|
33
|
-
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
34
32
|
local UnitBonusType = ____bonus.UnitBonusType
|
|
35
33
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
34
|
local damageArea = ____area_2Ddamage.damageArea
|
|
37
35
|
local ____preconditions = require("utility.preconditions")
|
|
36
|
+
local check = ____preconditions.check
|
|
38
37
|
local checkNotNull = ____preconditions.checkNotNull
|
|
39
38
|
local ____effect = require("core.types.effect")
|
|
40
39
|
local Effect = ____effect.Effect
|
|
@@ -43,13 +42,22 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
43
42
|
local ____unit = require("engine.behaviour.unit")
|
|
44
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
45
44
|
local ____arrays = require("utility.arrays")
|
|
45
|
+
local emptyArray = ____arrays.emptyArray
|
|
46
46
|
local forEach = ____arrays.forEach
|
|
47
|
+
local ____event = require("event")
|
|
48
|
+
local Event = ____event.Event
|
|
47
49
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
50
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
49
51
|
local ____item = require("engine.internal.item")
|
|
50
52
|
local Item = ____item.Item
|
|
51
53
|
local ____destructable = require("core.types.destructable")
|
|
52
54
|
local Destructable = ____destructable.Destructable
|
|
55
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
56
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
57
|
+
local ____ability = require("engine.behaviour.ability")
|
|
58
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
59
|
+
local ____records = require("utility.records")
|
|
60
|
+
local sortedKeysUnnested = ____records.sortedKeysUnnested
|
|
53
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
54
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
55
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -95,15 +103,20 @@ local buffParametersKeys = {
|
|
|
95
103
|
damageIncrease = true,
|
|
96
104
|
damageIncreaseFactor = true,
|
|
97
105
|
armorIncrease = true,
|
|
98
|
-
|
|
106
|
+
maxHealthIncrease = true,
|
|
107
|
+
maxManaIncrease = true,
|
|
99
108
|
attackSpeedIncreaseFactor = true,
|
|
100
109
|
movementSpeedIncreaseFactor = true,
|
|
110
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
111
|
+
evasionProbability = true,
|
|
112
|
+
missProbability = true,
|
|
101
113
|
damageFactor = true,
|
|
102
114
|
receivedDamageFactor = true,
|
|
103
115
|
receivedMagicDamageFactor = true,
|
|
104
116
|
durationIncreaseOnAutoAttack = true,
|
|
105
117
|
maximumDuration = true,
|
|
106
118
|
maximumRemainingDuration = true,
|
|
119
|
+
turnsIntoGhost = true,
|
|
107
120
|
stuns = true,
|
|
108
121
|
ignoresStunImmunity = true,
|
|
109
122
|
providesStunImmunity = true,
|
|
@@ -114,11 +127,15 @@ local buffParametersKeys = {
|
|
|
114
127
|
maximumAutoAttackCount = true,
|
|
115
128
|
maximumDamageDealtEventCount = true,
|
|
116
129
|
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
117
133
|
uniqueGroup = true,
|
|
118
134
|
damageOnExpiration = true,
|
|
119
135
|
healingOnExpiration = true,
|
|
120
136
|
killsOnExpiration = true,
|
|
121
|
-
explodesOnExpiration = true
|
|
137
|
+
explodesOnExpiration = true,
|
|
138
|
+
abilityCooldownFactor = true
|
|
122
139
|
}
|
|
123
140
|
local function resolveEnumValue(ability, level, value)
|
|
124
141
|
if value == nil or type(value) == "number" then
|
|
@@ -169,6 +186,8 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
169
186
|
end
|
|
170
187
|
end
|
|
171
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
190
|
+
"turnsIntoGhost",
|
|
172
191
|
"stuns",
|
|
173
192
|
"ignoresStunImmunity",
|
|
174
193
|
"disablesAutoAttack",
|
|
@@ -180,7 +199,11 @@ local buffNumberParameters = {
|
|
|
180
199
|
"durationIncreaseOnAutoAttack",
|
|
181
200
|
"attackSpeedIncreaseFactor",
|
|
182
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
203
|
+
"evasionProbability",
|
|
183
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
184
207
|
"damageFactor",
|
|
185
208
|
"receivedDamageFactor",
|
|
186
209
|
"maximumAutoAttackCount",
|
|
@@ -193,7 +216,10 @@ local buffNumberParameters = {
|
|
|
193
216
|
"healingPerInterval",
|
|
194
217
|
"healingOverDuration",
|
|
195
218
|
"damageOnExpiration",
|
|
196
|
-
"healingOnExpiration"
|
|
219
|
+
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
222
|
+
"abilityCooldownFactor"
|
|
197
223
|
}
|
|
198
224
|
local unsuccessfulApplicationMarker = {}
|
|
199
225
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -220,7 +246,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
220
246
|
return checkNotNull(firstNativeBuffTypeId)
|
|
221
247
|
end
|
|
222
248
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
223
|
-
if buff[
|
|
249
|
+
if buff[104] == uniqueGroup then
|
|
224
250
|
buff:destroy()
|
|
225
251
|
end
|
|
226
252
|
end
|
|
@@ -228,17 +254,21 @@ local function destroyBuff(buff)
|
|
|
228
254
|
buff:destroy()
|
|
229
255
|
end
|
|
230
256
|
local function expireBuff(buff)
|
|
231
|
-
|
|
232
|
-
|
|
257
|
+
if buff.isDestroyed or buff[100] ~= 1 then
|
|
258
|
+
return
|
|
259
|
+
end
|
|
260
|
+
buff[100] = 2
|
|
261
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
262
|
+
local remainingHealingOverDuration = buff[113] or 0
|
|
233
263
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
234
264
|
buff:flashSpecialEffect()
|
|
235
265
|
if remainingDamageOverDuration ~= 0 then
|
|
236
|
-
(buff[
|
|
237
|
-
buff[
|
|
266
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
267
|
+
buff[113] = nil
|
|
238
268
|
end
|
|
239
269
|
if remainingHealingOverDuration ~= 0 then
|
|
240
|
-
(buff[
|
|
241
|
-
buff[
|
|
270
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
271
|
+
buff[118] = nil
|
|
242
272
|
end
|
|
243
273
|
end
|
|
244
274
|
Timer:run(destroyBuff, buff)
|
|
@@ -246,56 +276,58 @@ local function expireBuff(buff)
|
|
|
246
276
|
end
|
|
247
277
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
248
278
|
buffDamageIntervalTimerCallback(buff)
|
|
249
|
-
local timer = buff[
|
|
250
|
-
local damageInterval = buff[
|
|
279
|
+
local timer = buff[114]
|
|
280
|
+
local damageInterval = buff[112]
|
|
251
281
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
252
282
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
253
283
|
end
|
|
254
284
|
end
|
|
255
285
|
buffDamageIntervalTimerCallback = function(buff)
|
|
256
286
|
buff:flashSpecialEffect()
|
|
257
|
-
local source = buff[
|
|
258
|
-
local remainingDamageOverDuration = buff[
|
|
287
|
+
local source = buff[102] or buff[101]
|
|
288
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
259
289
|
if remainingDamageOverDuration ~= 0 then
|
|
260
|
-
local damageInterval = buff[
|
|
290
|
+
local damageInterval = buff[112] or 0
|
|
261
291
|
if damageInterval ~= 0 then
|
|
262
292
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
263
|
-
source:damageTarget(buff[
|
|
264
|
-
buff[
|
|
293
|
+
source:damageTarget(buff[101], damage)
|
|
294
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
265
295
|
end
|
|
266
296
|
end
|
|
267
|
-
local damagePerInterval = buff[
|
|
297
|
+
local damagePerInterval = buff[111] or 0
|
|
268
298
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
269
|
-
source:damageTarget(buff[
|
|
299
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
270
300
|
end
|
|
271
301
|
end
|
|
272
302
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
273
303
|
buffHealingIntervalTimerCallback(buff)
|
|
274
|
-
local timer = buff[
|
|
275
|
-
local healingInterval = buff[
|
|
304
|
+
local timer = buff[119]
|
|
305
|
+
local healingInterval = buff[117]
|
|
276
306
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
277
307
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
278
308
|
end
|
|
279
309
|
end
|
|
280
310
|
buffHealingIntervalTimerCallback = function(buff)
|
|
281
|
-
if buff[
|
|
311
|
+
if buff[117] ~= buff[112] then
|
|
282
312
|
buff:flashSpecialEffect()
|
|
283
313
|
end
|
|
284
|
-
local source = buff[
|
|
285
|
-
local remainingHealingOverDuration = buff[
|
|
314
|
+
local source = buff[102] or buff[101]
|
|
315
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
286
316
|
if remainingHealingOverDuration ~= 0 then
|
|
287
|
-
local healingInterval = buff[
|
|
317
|
+
local healingInterval = buff[117] or 0
|
|
288
318
|
if healingInterval ~= 0 then
|
|
289
319
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
290
|
-
source:healTarget(buff[
|
|
291
|
-
buff[
|
|
320
|
+
source:healTarget(buff[101], healing)
|
|
321
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
292
322
|
end
|
|
293
323
|
end
|
|
294
|
-
local healingPerInterval = buff[
|
|
324
|
+
local healingPerInterval = buff[116] or 0
|
|
295
325
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
296
|
-
source:healTarget(buff[
|
|
326
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
297
327
|
end
|
|
298
328
|
end
|
|
329
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
330
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
299
331
|
____exports.Buff = __TS__Class()
|
|
300
332
|
local Buff = ____exports.Buff
|
|
301
333
|
Buff.name = "Buff"
|
|
@@ -304,38 +336,44 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
304
336
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
305
337
|
self._unit = _unit
|
|
306
338
|
self.parameters = nil
|
|
307
|
-
self[100] =
|
|
339
|
+
self[100] = 0
|
|
340
|
+
self[101] = _unit
|
|
308
341
|
local typeId
|
|
309
342
|
local polarity
|
|
310
343
|
local resistanceType
|
|
311
344
|
local ability
|
|
345
|
+
local abilityBehavior
|
|
312
346
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
313
347
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
314
348
|
polarity = resistanceTypeOrPolarity
|
|
315
349
|
resistanceType = abilityOrParametersOrResistanceType
|
|
316
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
350
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
351
|
+
abilityBehavior = parametersOrAbility
|
|
352
|
+
ability = abilityBehavior.ability
|
|
353
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
317
354
|
ability = parametersOrAbility
|
|
318
|
-
|
|
319
|
-
ability = nil
|
|
355
|
+
elseif parametersOrAbility ~= nil then
|
|
320
356
|
parameters = parametersOrAbility
|
|
321
357
|
end
|
|
322
358
|
else
|
|
323
359
|
typeId = typeIdOrTypeIds
|
|
324
360
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
325
361
|
resistanceType = resistanceTypeOrPolarity
|
|
326
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
362
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
363
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
364
|
+
ability = abilityBehavior.ability
|
|
365
|
+
parameters = parametersOrAbility
|
|
366
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
327
367
|
ability = abilityOrParametersOrResistanceType
|
|
328
368
|
parameters = parametersOrAbility
|
|
329
|
-
|
|
330
|
-
ability = nil
|
|
369
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
331
370
|
parameters = abilityOrParametersOrResistanceType
|
|
371
|
+
else
|
|
372
|
+
parameters = parametersOrAbility
|
|
332
373
|
end
|
|
333
374
|
end
|
|
375
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
334
376
|
self.typeId = typeId
|
|
335
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
336
|
-
parameters = ability
|
|
337
|
-
ability = nil
|
|
338
|
-
end
|
|
339
377
|
local defaultParameters = self.constructor.defaultParameters
|
|
340
378
|
local level = parameters and parameters.level or defaultParameters.level
|
|
341
379
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -360,14 +398,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
360
398
|
end
|
|
361
399
|
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
362
400
|
self.resistanceType = resolveEnumValue(ability, level, resistanceType)
|
|
401
|
+
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
402
|
+
if missProbability ~= nil then
|
|
403
|
+
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
404
|
+
self[146] = missProbability
|
|
405
|
+
end
|
|
363
406
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
364
407
|
if buffByTypeId == nil then
|
|
365
408
|
buffByTypeId = {}
|
|
366
409
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
367
410
|
end
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
411
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
412
|
+
local ____opt_15 = self.previousBuff
|
|
413
|
+
if ____opt_15 ~= nil then
|
|
414
|
+
____opt_15:destroy()
|
|
371
415
|
end
|
|
372
416
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
373
417
|
if uniqueGroup ~= nil then
|
|
@@ -381,13 +425,16 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
381
425
|
level,
|
|
382
426
|
duration,
|
|
383
427
|
spellStealPriority,
|
|
384
|
-
learnLevelMinimum
|
|
428
|
+
learnLevelMinimum,
|
|
429
|
+
missProbability
|
|
385
430
|
) then
|
|
431
|
+
self[100] = 1
|
|
386
432
|
UnitBehavior.prototype.destroy(self)
|
|
387
433
|
error(unsuccessfulApplicationMarker, 0)
|
|
388
434
|
end
|
|
389
435
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
390
436
|
if handle == nil then
|
|
437
|
+
self[100] = 1
|
|
391
438
|
UnitBehavior.prototype.destroy(self)
|
|
392
439
|
error(unsuccessfulApplicationMarker, 0)
|
|
393
440
|
end
|
|
@@ -396,20 +443,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
396
443
|
self._level = level
|
|
397
444
|
self._spellStealPriority = spellStealPriority
|
|
398
445
|
self._learnLevelMinimum = learnLevelMinimum
|
|
399
|
-
self[
|
|
400
|
-
self[
|
|
401
|
-
self[
|
|
402
|
-
self[
|
|
403
|
-
self[
|
|
446
|
+
self[102] = source
|
|
447
|
+
self[103] = duration or 0
|
|
448
|
+
self[104] = uniqueGroup
|
|
449
|
+
self[105] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_EFFECT, 0)
|
|
450
|
+
self[106] = BlzGetAbilityStringLevelField(self.handle, ABILITY_SLF_SPECIAL, 0)
|
|
404
451
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
405
452
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
406
|
-
local
|
|
407
|
-
local
|
|
408
|
-
local
|
|
409
|
-
if
|
|
410
|
-
|
|
453
|
+
local ____ability_24 = ability
|
|
454
|
+
local ____level_25 = level
|
|
455
|
+
local ____temp_23 = parameters and parameters[buffBooleanParameter]
|
|
456
|
+
if ____temp_23 == nil then
|
|
457
|
+
____temp_23 = defaultParameters[buffBooleanParameter]
|
|
411
458
|
end
|
|
412
|
-
if resolveBooleanValue(
|
|
459
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
413
460
|
self[buffBooleanParameter] = true
|
|
414
461
|
end
|
|
415
462
|
end
|
|
@@ -425,11 +472,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
425
472
|
end
|
|
426
473
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
427
474
|
if maximumDuration ~= nil then
|
|
428
|
-
self[
|
|
475
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
429
476
|
end
|
|
430
477
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
431
478
|
if maximumRemainingDuration ~= nil then
|
|
432
|
-
self[
|
|
479
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
433
480
|
end
|
|
434
481
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
435
482
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -438,24 +485,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
438
485
|
abilityTypeIds = {}
|
|
439
486
|
self._abilityTypeIds = abilityTypeIds
|
|
440
487
|
end
|
|
441
|
-
for
|
|
488
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
489
|
+
local abilityParameters = checkNotNull(parametersAbilityTypeIds[abilityTypeId])
|
|
442
490
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
443
491
|
if addedAbility ~= nil then
|
|
444
492
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
445
493
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
449
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
450
|
-
end
|
|
451
|
-
elseif abilityParameterKey ~= "level" then
|
|
452
|
-
abilityParameterKey:setValue(
|
|
453
|
-
addedAbility,
|
|
454
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
455
|
-
)
|
|
456
|
-
end
|
|
494
|
+
if abilityParameters.isButtonVisible == false then
|
|
495
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
457
496
|
end
|
|
458
|
-
|
|
497
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
498
|
+
field[1]:setValue(
|
|
499
|
+
addedAbility,
|
|
500
|
+
resolveNumberValue(ability, level, field[2])
|
|
501
|
+
)
|
|
502
|
+
end
|
|
503
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
459
504
|
end
|
|
460
505
|
end
|
|
461
506
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -467,18 +512,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
467
512
|
self._behaviors = behaviors
|
|
468
513
|
end
|
|
469
514
|
end
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
if
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
515
|
+
if parameters ~= nil then
|
|
516
|
+
local additionalParameters = {}
|
|
517
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
518
|
+
if not buffParametersKeys[key] then
|
|
519
|
+
if ability then
|
|
520
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
521
|
+
else
|
|
522
|
+
additionalParameters[key] = parameters[key]
|
|
523
|
+
end
|
|
477
524
|
end
|
|
478
525
|
end
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
526
|
+
if (next(additionalParameters)) ~= nil then
|
|
527
|
+
self.parameters = additionalParameters
|
|
528
|
+
end
|
|
482
529
|
end
|
|
483
530
|
end
|
|
484
531
|
if duration ~= nil and duration > 0 then
|
|
@@ -487,32 +534,51 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
487
534
|
self._timer = timer
|
|
488
535
|
end
|
|
489
536
|
self:onCreate()
|
|
537
|
+
self[100] = 1
|
|
538
|
+
Event.invoke(buffCreatedEvent, self)
|
|
490
539
|
end
|
|
491
|
-
function Buff.prototype.
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
540
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
541
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
542
|
+
local abilityCooldownModifier = self[148]
|
|
543
|
+
if abilityCooldownModifier then
|
|
544
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
545
|
+
end
|
|
546
|
+
end
|
|
495
547
|
end
|
|
496
|
-
function Buff.prototype.
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
548
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
549
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
550
|
+
local abilityCooldownModifier = self[148]
|
|
551
|
+
if abilityCooldownModifier then
|
|
552
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
553
|
+
end
|
|
501
554
|
end
|
|
502
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
503
555
|
end
|
|
504
556
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
557
|
+
self:flash(
|
|
558
|
+
self[105],
|
|
559
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin",
|
|
560
|
+
widgetOrXOrParametersOrDuration,
|
|
561
|
+
yOrParametersOrDuration,
|
|
562
|
+
parametersOrDuration
|
|
563
|
+
)
|
|
564
|
+
end
|
|
565
|
+
function Buff.prototype.flashSpecialEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
566
|
+
self:flash(
|
|
567
|
+
self[106],
|
|
568
|
+
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin",
|
|
569
|
+
widgetOrXOrParametersOrDuration,
|
|
570
|
+
yOrParametersOrDuration,
|
|
571
|
+
parametersOrDuration
|
|
572
|
+
)
|
|
573
|
+
end
|
|
574
|
+
function Buff.prototype.flash(self, modelPath, attachmentPoint, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
505
575
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
506
|
-
Effect:flash(
|
|
576
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
507
577
|
else
|
|
508
578
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
509
579
|
local ____Effect_40 = Effect
|
|
510
580
|
local ____Effect_flash_41 = Effect.flash
|
|
511
|
-
local ____array_39 = __TS__SparseArrayNew(
|
|
512
|
-
self[104],
|
|
513
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
514
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
515
|
-
)
|
|
581
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
516
582
|
local ____isWidgetProvided_38
|
|
517
583
|
if isWidgetProvided then
|
|
518
584
|
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
@@ -526,44 +592,42 @@ function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrPa
|
|
|
526
592
|
)
|
|
527
593
|
end
|
|
528
594
|
end
|
|
529
|
-
function Buff.prototype.
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
595
|
+
function Buff.prototype.expire(self)
|
|
596
|
+
expireBuff(self)
|
|
597
|
+
end
|
|
598
|
+
function Buff.prototype.dispel(self, source)
|
|
599
|
+
if self.isDestroyed or self[100] ~= 1 then
|
|
600
|
+
return
|
|
601
|
+
end
|
|
602
|
+
self[100] = 2
|
|
603
|
+
do
|
|
604
|
+
pcall(function()
|
|
605
|
+
self:onDispel(source)
|
|
606
|
+
end)
|
|
607
|
+
do
|
|
608
|
+
self:destroy()
|
|
609
|
+
end
|
|
543
610
|
end
|
|
544
|
-
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
545
|
-
____Effect_flash_45(
|
|
546
|
-
____Effect_44,
|
|
547
|
-
__TS__SparseArraySpread(____array_43)
|
|
548
|
-
)
|
|
549
611
|
end
|
|
550
612
|
function Buff.prototype.onCreate(self)
|
|
551
613
|
end
|
|
552
614
|
function Buff.prototype.onDestroy(self)
|
|
615
|
+
check(self[100] ~= 0, "Cannot destroy a buff that has not finished creating yet.")
|
|
616
|
+
self[100] = 2
|
|
553
617
|
local unit = self._unit
|
|
554
618
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
555
619
|
removeBuff(unit.handle, self.typeId)
|
|
556
620
|
end
|
|
557
621
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
558
|
-
local healingIntervalTimer = self[
|
|
622
|
+
local healingIntervalTimer = self[119]
|
|
559
623
|
if healingIntervalTimer ~= nil then
|
|
560
624
|
healingIntervalTimer:destroy()
|
|
561
|
-
self[
|
|
625
|
+
self[119] = nil
|
|
562
626
|
end
|
|
563
|
-
local damageIntervalTimer = self[
|
|
627
|
+
local damageIntervalTimer = self[114]
|
|
564
628
|
if damageIntervalTimer ~= nil then
|
|
565
629
|
damageIntervalTimer:destroy()
|
|
566
|
-
self[
|
|
630
|
+
self[114] = nil
|
|
567
631
|
end
|
|
568
632
|
if self._timer ~= nil then
|
|
569
633
|
self._timer:destroy()
|
|
@@ -573,25 +637,34 @@ function Buff.prototype.onDestroy(self)
|
|
|
573
637
|
behavior:destroy()
|
|
574
638
|
end
|
|
575
639
|
end
|
|
576
|
-
|
|
640
|
+
local previousAbilityCooldownModifier = self[148]
|
|
641
|
+
if previousAbilityCooldownModifier then
|
|
642
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
643
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
644
|
+
end
|
|
645
|
+
end
|
|
646
|
+
if self[143] then
|
|
647
|
+
unit:decrementInvulnerabilityCounter()
|
|
648
|
+
end
|
|
649
|
+
if self[142] then
|
|
577
650
|
unit:decrementDisableAutoAttackCounter()
|
|
578
651
|
end
|
|
579
|
-
if self[
|
|
580
|
-
if self[
|
|
581
|
-
unit:
|
|
652
|
+
if self[140] then
|
|
653
|
+
if self[141] then
|
|
654
|
+
unit:decrementForceStunCounter()
|
|
582
655
|
end
|
|
583
656
|
unit:decrementStunCounter()
|
|
584
657
|
end
|
|
658
|
+
if self[139] then
|
|
659
|
+
unit:decrementGhostCounter()
|
|
660
|
+
end
|
|
585
661
|
if self._abilityTypeIds ~= nil then
|
|
586
|
-
for abilityTypeId in
|
|
662
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
587
663
|
unit:removeAbility(abilityTypeId)
|
|
588
664
|
end
|
|
589
665
|
end
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
593
|
-
end
|
|
594
|
-
end
|
|
666
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
667
|
+
self[100] = 3
|
|
595
668
|
return UnitBehavior.prototype.onDestroy(self)
|
|
596
669
|
end
|
|
597
670
|
function Buff.apply(self, ...)
|
|
@@ -619,81 +692,95 @@ function Buff.apply(self, ...)
|
|
|
619
692
|
end
|
|
620
693
|
end
|
|
621
694
|
function Buff.getByTypeId(self, unit, typeId)
|
|
622
|
-
local
|
|
623
|
-
local buff =
|
|
695
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
696
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
624
697
|
if __TS__InstanceOf(buff, self) then
|
|
625
698
|
return buff
|
|
626
699
|
end
|
|
627
700
|
return nil
|
|
628
701
|
end
|
|
702
|
+
function Buff.prototype.onDispel(self, source)
|
|
703
|
+
end
|
|
629
704
|
function Buff.prototype.onExpiration(self)
|
|
630
705
|
local unit = self.unit
|
|
631
|
-
if self[119] ~= nil then
|
|
632
|
-
(self[101] or unit):damageTarget(unit, self[119] or 0)
|
|
633
|
-
end
|
|
634
706
|
if self[120] ~= nil then
|
|
635
|
-
(self[
|
|
707
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
636
708
|
end
|
|
637
|
-
if self[
|
|
709
|
+
if self[121] ~= nil then
|
|
710
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
711
|
+
end
|
|
712
|
+
if self[145] then
|
|
638
713
|
unit:explode()
|
|
639
|
-
elseif self[
|
|
714
|
+
elseif self[144] then
|
|
640
715
|
unit:kill()
|
|
641
716
|
end
|
|
642
717
|
end
|
|
643
718
|
function Buff.prototype.onDeath(self, source)
|
|
644
719
|
local unit = self.unit
|
|
645
|
-
if self[
|
|
720
|
+
if self[122] ~= nil then
|
|
646
721
|
damageArea(
|
|
647
|
-
self[
|
|
648
|
-
self[
|
|
722
|
+
self[102] or unit,
|
|
723
|
+
self[122],
|
|
649
724
|
unit.x,
|
|
650
725
|
unit.y,
|
|
726
|
+
self[124] or 0,
|
|
651
727
|
self[123] or 0,
|
|
652
|
-
self[
|
|
728
|
+
self[126] or 0,
|
|
653
729
|
self[125] or 0,
|
|
654
|
-
self[
|
|
655
|
-
self[127] or 0
|
|
656
|
-
self[126] or 0
|
|
730
|
+
self[128] or 0,
|
|
731
|
+
self[127] or 0
|
|
657
732
|
)
|
|
658
733
|
end
|
|
659
734
|
end
|
|
660
735
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
661
736
|
if event.isAttack then
|
|
662
|
-
if self[
|
|
663
|
-
local durationIncrease = self[
|
|
664
|
-
local maximumDuration = self[
|
|
737
|
+
if self[107] ~= nil then
|
|
738
|
+
local durationIncrease = self[107]
|
|
739
|
+
local maximumDuration = self[108] or 0
|
|
665
740
|
if maximumDuration > 0 then
|
|
666
741
|
durationIncrease = min(
|
|
667
742
|
durationIncrease,
|
|
668
|
-
max(0, maximumDuration - self[
|
|
743
|
+
max(0, maximumDuration - self[103])
|
|
669
744
|
)
|
|
670
745
|
end
|
|
671
746
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
672
|
-
local maximumRemainingDuration = self[
|
|
747
|
+
local maximumRemainingDuration = self[109] or 0
|
|
673
748
|
if maximumRemainingDuration > 0 then
|
|
674
749
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
675
750
|
end
|
|
676
751
|
self.remainingDuration = remainingDuration
|
|
677
752
|
end
|
|
678
|
-
local autoAttackCount = (self[
|
|
679
|
-
self[
|
|
680
|
-
if autoAttackCount == self[
|
|
753
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
754
|
+
self[129] = autoAttackCount
|
|
755
|
+
if autoAttackCount == self[130] then
|
|
681
756
|
self:destroy()
|
|
682
757
|
end
|
|
683
758
|
end
|
|
684
759
|
if event.originalAmount ~= 0 then
|
|
685
|
-
local damageDealtEventCount = (self[
|
|
686
|
-
self[
|
|
687
|
-
if damageDealtEventCount == self[
|
|
760
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
761
|
+
self[131] = damageDealtEventCount
|
|
762
|
+
if damageDealtEventCount == self[132] then
|
|
688
763
|
self:destroy()
|
|
689
764
|
end
|
|
690
765
|
end
|
|
691
766
|
end
|
|
692
767
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
693
768
|
if event.originalAmount ~= 0 then
|
|
694
|
-
local
|
|
695
|
-
|
|
696
|
-
|
|
769
|
+
local absorbedDamage = min(event.amount * (self[135] or 1), (self[136] or 0) - (self[137] or 0))
|
|
770
|
+
if absorbedDamage > 0 then
|
|
771
|
+
event.amount = event.amount - absorbedDamage
|
|
772
|
+
self[137] = (self[137] or 0) + absorbedDamage
|
|
773
|
+
local ____self__138_44 = self[138]
|
|
774
|
+
if ____self__138_44 == nil then
|
|
775
|
+
____self__138_44 = true
|
|
776
|
+
end
|
|
777
|
+
if ____self__138_44 and self[137] >= (self[136] or 0) then
|
|
778
|
+
self:destroy()
|
|
779
|
+
end
|
|
780
|
+
end
|
|
781
|
+
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
782
|
+
self[133] = damageReceivedEventCount
|
|
783
|
+
if damageReceivedEventCount == self[134] then
|
|
697
784
|
self:destroy()
|
|
698
785
|
end
|
|
699
786
|
end
|
|
@@ -703,7 +790,7 @@ __TS__SetDescriptor(
|
|
|
703
790
|
Buff.prototype,
|
|
704
791
|
"source",
|
|
705
792
|
{get = function(self)
|
|
706
|
-
return self[
|
|
793
|
+
return self[102] or self._unit
|
|
707
794
|
end},
|
|
708
795
|
true
|
|
709
796
|
)
|
|
@@ -720,13 +807,13 @@ __TS__SetDescriptor(
|
|
|
720
807
|
"remainingDamageOverDuration",
|
|
721
808
|
{
|
|
722
809
|
get = function(self)
|
|
723
|
-
return self[
|
|
810
|
+
return self[113] or 0
|
|
724
811
|
end,
|
|
725
812
|
set = function(self, remainingDamageOverDuration)
|
|
726
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
727
|
-
self[
|
|
728
|
-
local damageOverDuration = (self[
|
|
729
|
-
self[
|
|
813
|
+
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[113] or 0)
|
|
814
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
815
|
+
local damageOverDuration = (self[110] or 0) + remainingDamageOverDurationDelta
|
|
816
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
730
817
|
end
|
|
731
818
|
},
|
|
732
819
|
true
|
|
@@ -736,13 +823,13 @@ __TS__SetDescriptor(
|
|
|
736
823
|
"damageOverDuration",
|
|
737
824
|
{
|
|
738
825
|
get = function(self)
|
|
739
|
-
return self[
|
|
826
|
+
return self[110] or 0
|
|
740
827
|
end,
|
|
741
828
|
set = function(self, damageOverDuration)
|
|
742
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
743
|
-
self[
|
|
744
|
-
local remainingDamageOverDuration = (self[
|
|
745
|
-
self[
|
|
829
|
+
local damageOverDurationDelta = damageOverDuration - (self[110] or 0)
|
|
830
|
+
self[110] = damageOverDuration ~= 0 and damageOverDuration or nil
|
|
831
|
+
local remainingDamageOverDuration = (self[113] or 0) + damageOverDurationDelta
|
|
832
|
+
self[113] = remainingDamageOverDuration ~= 0 and remainingDamageOverDuration or nil
|
|
746
833
|
end
|
|
747
834
|
},
|
|
748
835
|
true
|
|
@@ -752,10 +839,10 @@ __TS__SetDescriptor(
|
|
|
752
839
|
"damagePerInterval",
|
|
753
840
|
{
|
|
754
841
|
get = function(self)
|
|
755
|
-
return self[
|
|
842
|
+
return self[111] or 0
|
|
756
843
|
end,
|
|
757
844
|
set = function(self, damagePerInterval)
|
|
758
|
-
self[
|
|
845
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
759
846
|
end
|
|
760
847
|
},
|
|
761
848
|
true
|
|
@@ -765,25 +852,25 @@ __TS__SetDescriptor(
|
|
|
765
852
|
"damageInterval",
|
|
766
853
|
{
|
|
767
854
|
get = function(self)
|
|
768
|
-
return self[
|
|
855
|
+
return self[112] or 0
|
|
769
856
|
end,
|
|
770
857
|
set = function(self, damageInterval)
|
|
771
858
|
if damageInterval <= 0 then
|
|
772
|
-
self[
|
|
773
|
-
local timer = self[
|
|
859
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
860
|
+
local timer = self[114]
|
|
774
861
|
if timer ~= nil then
|
|
775
862
|
timer:destroy()
|
|
776
|
-
self[
|
|
863
|
+
self[114] = nil
|
|
777
864
|
end
|
|
778
865
|
return
|
|
779
866
|
end
|
|
780
|
-
self[
|
|
781
|
-
local
|
|
782
|
-
local elapsed =
|
|
783
|
-
local timer = self[
|
|
867
|
+
self[112] = damageInterval
|
|
868
|
+
local ____opt_45 = self._timer
|
|
869
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
870
|
+
local timer = self[114]
|
|
784
871
|
if timer == nil then
|
|
785
872
|
timer = Timer:create()
|
|
786
|
-
self[
|
|
873
|
+
self[114] = timer
|
|
787
874
|
end
|
|
788
875
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
789
876
|
if initialDelay == damageInterval then
|
|
@@ -800,13 +887,13 @@ __TS__SetDescriptor(
|
|
|
800
887
|
"remainingHealingOverDuration",
|
|
801
888
|
{
|
|
802
889
|
get = function(self)
|
|
803
|
-
return self[
|
|
890
|
+
return self[118] or 0
|
|
804
891
|
end,
|
|
805
892
|
set = function(self, remainingHealingOverDuration)
|
|
806
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
807
|
-
self[
|
|
808
|
-
local healingOverDuration = (self[
|
|
809
|
-
self[
|
|
893
|
+
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[118] or 0)
|
|
894
|
+
self[113] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
895
|
+
local healingOverDuration = (self[115] or 0) + remainingHealingOverDurationDelta
|
|
896
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
810
897
|
end
|
|
811
898
|
},
|
|
812
899
|
true
|
|
@@ -816,13 +903,13 @@ __TS__SetDescriptor(
|
|
|
816
903
|
"healingOverDuration",
|
|
817
904
|
{
|
|
818
905
|
get = function(self)
|
|
819
|
-
return self[
|
|
906
|
+
return self[115] or 0
|
|
820
907
|
end,
|
|
821
908
|
set = function(self, healingOverDuration)
|
|
822
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
823
|
-
self[
|
|
824
|
-
local remainingHealingOverDuration = (self[
|
|
825
|
-
self[
|
|
909
|
+
local healingOverDurationDelta = healingOverDuration - (self[115] or 0)
|
|
910
|
+
self[115] = healingOverDuration ~= 0 and healingOverDuration or nil
|
|
911
|
+
local remainingHealingOverDuration = (self[118] or 0) + healingOverDurationDelta
|
|
912
|
+
self[118] = remainingHealingOverDuration ~= 0 and remainingHealingOverDuration or nil
|
|
826
913
|
end
|
|
827
914
|
},
|
|
828
915
|
true
|
|
@@ -832,10 +919,10 @@ __TS__SetDescriptor(
|
|
|
832
919
|
"healingPerInterval",
|
|
833
920
|
{
|
|
834
921
|
get = function(self)
|
|
835
|
-
return self[
|
|
922
|
+
return self[116] or 0
|
|
836
923
|
end,
|
|
837
924
|
set = function(self, healingPerInterval)
|
|
838
|
-
self[
|
|
925
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
839
926
|
end
|
|
840
927
|
},
|
|
841
928
|
true
|
|
@@ -845,25 +932,25 @@ __TS__SetDescriptor(
|
|
|
845
932
|
"healingInterval",
|
|
846
933
|
{
|
|
847
934
|
get = function(self)
|
|
848
|
-
return self[
|
|
935
|
+
return self[117] or 0
|
|
849
936
|
end,
|
|
850
937
|
set = function(self, healingInterval)
|
|
851
938
|
if healingInterval <= 0 then
|
|
852
|
-
self[
|
|
853
|
-
local timer = self[
|
|
939
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
940
|
+
local timer = self[119]
|
|
854
941
|
if timer ~= nil then
|
|
855
942
|
timer:destroy()
|
|
856
|
-
self[
|
|
943
|
+
self[119] = nil
|
|
857
944
|
end
|
|
858
945
|
return
|
|
859
946
|
end
|
|
860
|
-
self[
|
|
861
|
-
local
|
|
862
|
-
local elapsed =
|
|
863
|
-
local timer = self[
|
|
947
|
+
self[117] = healingInterval
|
|
948
|
+
local ____opt_47 = self._timer
|
|
949
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
950
|
+
local timer = self[119]
|
|
864
951
|
if timer == nil then
|
|
865
952
|
timer = Timer:create()
|
|
866
|
-
self[
|
|
953
|
+
self[119] = timer
|
|
867
954
|
end
|
|
868
955
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
869
956
|
if initialDelay == healingInterval then
|
|
@@ -880,10 +967,10 @@ __TS__SetDescriptor(
|
|
|
880
967
|
"damageOnExpiration",
|
|
881
968
|
{
|
|
882
969
|
get = function(self)
|
|
883
|
-
return self[
|
|
970
|
+
return self[120] or 0
|
|
884
971
|
end,
|
|
885
972
|
set = function(self, damageOnExpiration)
|
|
886
|
-
self[
|
|
973
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
887
974
|
end
|
|
888
975
|
},
|
|
889
976
|
true
|
|
@@ -893,10 +980,10 @@ __TS__SetDescriptor(
|
|
|
893
980
|
"healingOnExpiration",
|
|
894
981
|
{
|
|
895
982
|
get = function(self)
|
|
896
|
-
return self[
|
|
983
|
+
return self[121] or 0
|
|
897
984
|
end,
|
|
898
985
|
set = function(self, healingOnExpiration)
|
|
899
|
-
self[
|
|
986
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
900
987
|
end
|
|
901
988
|
},
|
|
902
989
|
true
|
|
@@ -940,30 +1027,79 @@ __TS__SetDescriptor(
|
|
|
940
1027
|
},
|
|
941
1028
|
true
|
|
942
1029
|
)
|
|
1030
|
+
__TS__SetDescriptor(
|
|
1031
|
+
Buff.prototype,
|
|
1032
|
+
"maxHealthIncrease",
|
|
1033
|
+
{
|
|
1034
|
+
get = function(self)
|
|
1035
|
+
return self:getUnitBonus(UnitBonusType.HEALTH)
|
|
1036
|
+
end,
|
|
1037
|
+
set = function(self, maxHealthIncrease)
|
|
1038
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.HEALTH, maxHealthIncrease)
|
|
1039
|
+
end
|
|
1040
|
+
},
|
|
1041
|
+
true
|
|
1042
|
+
)
|
|
1043
|
+
__TS__SetDescriptor(
|
|
1044
|
+
Buff.prototype,
|
|
1045
|
+
"maxManaIncrease",
|
|
1046
|
+
{
|
|
1047
|
+
get = function(self)
|
|
1048
|
+
return self:getUnitBonus(UnitBonusType.MANA)
|
|
1049
|
+
end,
|
|
1050
|
+
set = function(self, maxManaIncrease)
|
|
1051
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA, maxManaIncrease)
|
|
1052
|
+
end
|
|
1053
|
+
},
|
|
1054
|
+
true
|
|
1055
|
+
)
|
|
1056
|
+
__TS__SetDescriptor(
|
|
1057
|
+
Buff.prototype,
|
|
1058
|
+
"turnsIntoGhost",
|
|
1059
|
+
{
|
|
1060
|
+
get = function(self)
|
|
1061
|
+
local ____self__139_49 = self[139]
|
|
1062
|
+
if ____self__139_49 == nil then
|
|
1063
|
+
____self__139_49 = false
|
|
1064
|
+
end
|
|
1065
|
+
return ____self__139_49
|
|
1066
|
+
end,
|
|
1067
|
+
set = function(self, turnsIntoGhost)
|
|
1068
|
+
if not turnsIntoGhost and self[139] then
|
|
1069
|
+
self.object:decrementGhostCounter()
|
|
1070
|
+
self[139] = nil
|
|
1071
|
+
elseif turnsIntoGhost and not self[139] then
|
|
1072
|
+
self.object:incrementGhostCounter()
|
|
1073
|
+
self[139] = true
|
|
1074
|
+
end
|
|
1075
|
+
end
|
|
1076
|
+
},
|
|
1077
|
+
true
|
|
1078
|
+
)
|
|
943
1079
|
__TS__SetDescriptor(
|
|
944
1080
|
Buff.prototype,
|
|
945
1081
|
"stuns",
|
|
946
1082
|
{
|
|
947
1083
|
get = function(self)
|
|
948
|
-
local
|
|
949
|
-
if
|
|
950
|
-
|
|
1084
|
+
local ____self__140_50 = self[140]
|
|
1085
|
+
if ____self__140_50 == nil then
|
|
1086
|
+
____self__140_50 = false
|
|
951
1087
|
end
|
|
952
|
-
return
|
|
1088
|
+
return ____self__140_50
|
|
953
1089
|
end,
|
|
954
1090
|
set = function(self, stuns)
|
|
955
|
-
if not stuns and self[
|
|
956
|
-
if self[
|
|
957
|
-
self.object:
|
|
1091
|
+
if not stuns and self[140] then
|
|
1092
|
+
if self[141] then
|
|
1093
|
+
self.object:decrementForceStunCounter()
|
|
958
1094
|
end
|
|
959
1095
|
self.object:decrementStunCounter()
|
|
960
|
-
self[
|
|
961
|
-
elseif stuns and not self[
|
|
962
|
-
if self[
|
|
963
|
-
self.object:
|
|
1096
|
+
self[140] = nil
|
|
1097
|
+
elseif stuns and not self[140] then
|
|
1098
|
+
if self[141] then
|
|
1099
|
+
self.object:incrementForceStunCounter()
|
|
964
1100
|
end
|
|
965
1101
|
self.object:incrementStunCounter()
|
|
966
|
-
self[
|
|
1102
|
+
self[140] = true
|
|
967
1103
|
end
|
|
968
1104
|
end
|
|
969
1105
|
},
|
|
@@ -974,23 +1110,23 @@ __TS__SetDescriptor(
|
|
|
974
1110
|
"ignoresStunImmunity",
|
|
975
1111
|
{
|
|
976
1112
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
1113
|
+
local ____self__141_51 = self[141]
|
|
1114
|
+
if ____self__141_51 == nil then
|
|
1115
|
+
____self__141_51 = false
|
|
980
1116
|
end
|
|
981
|
-
return
|
|
1117
|
+
return ____self__141_51
|
|
982
1118
|
end,
|
|
983
1119
|
set = function(self, ignoresStunImmunity)
|
|
984
|
-
if not ignoresStunImmunity and self[
|
|
985
|
-
if self[
|
|
986
|
-
self.object:
|
|
1120
|
+
if not ignoresStunImmunity and self[141] then
|
|
1121
|
+
if self[140] then
|
|
1122
|
+
self.object:decrementForceStunCounter()
|
|
987
1123
|
end
|
|
988
|
-
self[
|
|
989
|
-
elseif ignoresStunImmunity and not self[
|
|
990
|
-
if self[
|
|
991
|
-
self.object:
|
|
1124
|
+
self[141] = nil
|
|
1125
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1126
|
+
if self[140] then
|
|
1127
|
+
self.object:incrementForceStunCounter()
|
|
992
1128
|
end
|
|
993
|
-
self[
|
|
1129
|
+
self[141] = true
|
|
994
1130
|
end
|
|
995
1131
|
end
|
|
996
1132
|
},
|
|
@@ -1001,19 +1137,19 @@ __TS__SetDescriptor(
|
|
|
1001
1137
|
"disablesAutoAttack",
|
|
1002
1138
|
{
|
|
1003
1139
|
get = function(self)
|
|
1004
|
-
local
|
|
1005
|
-
if
|
|
1006
|
-
|
|
1140
|
+
local ____self__142_52 = self[142]
|
|
1141
|
+
if ____self__142_52 == nil then
|
|
1142
|
+
____self__142_52 = false
|
|
1007
1143
|
end
|
|
1008
|
-
return
|
|
1144
|
+
return ____self__142_52
|
|
1009
1145
|
end,
|
|
1010
1146
|
set = function(self, disablesAutoAttack)
|
|
1011
|
-
if not disablesAutoAttack and self[
|
|
1147
|
+
if not disablesAutoAttack and self[142] then
|
|
1012
1148
|
self.object:decrementDisableAutoAttackCounter()
|
|
1013
|
-
self[
|
|
1014
|
-
elseif disablesAutoAttack and not self[
|
|
1149
|
+
self[142] = nil
|
|
1150
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1015
1151
|
self.object:incrementDisableAutoAttackCounter()
|
|
1016
|
-
self[
|
|
1152
|
+
self[142] = true
|
|
1017
1153
|
end
|
|
1018
1154
|
end
|
|
1019
1155
|
},
|
|
@@ -1024,19 +1160,19 @@ __TS__SetDescriptor(
|
|
|
1024
1160
|
"providesInvulnerability",
|
|
1025
1161
|
{
|
|
1026
1162
|
get = function(self)
|
|
1027
|
-
local
|
|
1028
|
-
if
|
|
1029
|
-
|
|
1163
|
+
local ____self__143_53 = self[143]
|
|
1164
|
+
if ____self__143_53 == nil then
|
|
1165
|
+
____self__143_53 = false
|
|
1030
1166
|
end
|
|
1031
|
-
return
|
|
1167
|
+
return ____self__143_53
|
|
1032
1168
|
end,
|
|
1033
1169
|
set = function(self, providesInvulnerability)
|
|
1034
|
-
if not providesInvulnerability and self[
|
|
1170
|
+
if not providesInvulnerability and self[143] then
|
|
1035
1171
|
self.object:decrementInvulnerabilityCounter()
|
|
1036
|
-
self[
|
|
1037
|
-
elseif providesInvulnerability and not self[
|
|
1172
|
+
self[143] = nil
|
|
1173
|
+
elseif providesInvulnerability and not self[143] then
|
|
1038
1174
|
self.object:incrementInvulnerabilityCounter()
|
|
1039
|
-
self[
|
|
1175
|
+
self[143] = true
|
|
1040
1176
|
end
|
|
1041
1177
|
end
|
|
1042
1178
|
},
|
|
@@ -1047,17 +1183,17 @@ __TS__SetDescriptor(
|
|
|
1047
1183
|
"killsOnExpiration",
|
|
1048
1184
|
{
|
|
1049
1185
|
get = function(self)
|
|
1050
|
-
local
|
|
1051
|
-
if
|
|
1052
|
-
|
|
1186
|
+
local ____self__144_54 = self[144]
|
|
1187
|
+
if ____self__144_54 == nil then
|
|
1188
|
+
____self__144_54 = false
|
|
1053
1189
|
end
|
|
1054
|
-
return
|
|
1190
|
+
return ____self__144_54
|
|
1055
1191
|
end,
|
|
1056
1192
|
set = function(self, killsOnExpiration)
|
|
1057
|
-
if not killsOnExpiration and self[
|
|
1058
|
-
self[
|
|
1059
|
-
elseif killsOnExpiration and not self[
|
|
1060
|
-
self[
|
|
1193
|
+
if not killsOnExpiration and self[144] then
|
|
1194
|
+
self[144] = nil
|
|
1195
|
+
elseif killsOnExpiration and not self[144] then
|
|
1196
|
+
self[144] = true
|
|
1061
1197
|
end
|
|
1062
1198
|
end
|
|
1063
1199
|
},
|
|
@@ -1068,17 +1204,17 @@ __TS__SetDescriptor(
|
|
|
1068
1204
|
"explodesOnExpiration",
|
|
1069
1205
|
{
|
|
1070
1206
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1207
|
+
local ____self__145_55 = self[145]
|
|
1208
|
+
if ____self__145_55 == nil then
|
|
1209
|
+
____self__145_55 = false
|
|
1074
1210
|
end
|
|
1075
|
-
return
|
|
1211
|
+
return ____self__145_55
|
|
1076
1212
|
end,
|
|
1077
1213
|
set = function(self, killsOnExpiration)
|
|
1078
|
-
if not killsOnExpiration and self[
|
|
1079
|
-
self[
|
|
1080
|
-
elseif killsOnExpiration and not self[
|
|
1081
|
-
self[
|
|
1214
|
+
if not killsOnExpiration and self[145] then
|
|
1215
|
+
self[145] = nil
|
|
1216
|
+
elseif killsOnExpiration and not self[145] then
|
|
1217
|
+
self[145] = true
|
|
1082
1218
|
end
|
|
1083
1219
|
end
|
|
1084
1220
|
},
|
|
@@ -1089,13 +1225,13 @@ __TS__SetDescriptor(
|
|
|
1089
1225
|
"maximumDamageDealtEventCount",
|
|
1090
1226
|
{
|
|
1091
1227
|
get = function(self)
|
|
1092
|
-
return self[
|
|
1228
|
+
return self[132] or 0
|
|
1093
1229
|
end,
|
|
1094
1230
|
set = function(self, maximumDamageDealtEventCount)
|
|
1095
1231
|
if maximumDamageDealtEventCount == 0 then
|
|
1096
|
-
self[
|
|
1232
|
+
self[132] = nil
|
|
1097
1233
|
else
|
|
1098
|
-
self[
|
|
1234
|
+
self[132] = maximumDamageDealtEventCount
|
|
1099
1235
|
end
|
|
1100
1236
|
end
|
|
1101
1237
|
},
|
|
@@ -1106,13 +1242,13 @@ __TS__SetDescriptor(
|
|
|
1106
1242
|
"maximumDamageReceivedEventCount",
|
|
1107
1243
|
{
|
|
1108
1244
|
get = function(self)
|
|
1109
|
-
return self[
|
|
1245
|
+
return self[134] or 0
|
|
1110
1246
|
end,
|
|
1111
1247
|
set = function(self, maximumDamageReceivedEventCount)
|
|
1112
1248
|
if maximumDamageReceivedEventCount == 0 then
|
|
1113
|
-
self[
|
|
1249
|
+
self[134] = nil
|
|
1114
1250
|
else
|
|
1115
|
-
self[
|
|
1251
|
+
self[134] = maximumDamageReceivedEventCount
|
|
1116
1252
|
end
|
|
1117
1253
|
end
|
|
1118
1254
|
},
|
|
@@ -1123,13 +1259,13 @@ __TS__SetDescriptor(
|
|
|
1123
1259
|
"maximumAutoAttackCount",
|
|
1124
1260
|
{
|
|
1125
1261
|
get = function(self)
|
|
1126
|
-
return self[
|
|
1262
|
+
return self[130] or 0
|
|
1127
1263
|
end,
|
|
1128
1264
|
set = function(self, maximumAutoAttackCount)
|
|
1129
1265
|
if maximumAutoAttackCount == 0 then
|
|
1130
|
-
self[
|
|
1266
|
+
self[130] = nil
|
|
1131
1267
|
else
|
|
1132
|
-
self[
|
|
1268
|
+
self[130] = maximumAutoAttackCount
|
|
1133
1269
|
end
|
|
1134
1270
|
end
|
|
1135
1271
|
},
|
|
@@ -1140,10 +1276,10 @@ __TS__SetDescriptor(
|
|
|
1140
1276
|
"durationIncreaseOnAutoAttack",
|
|
1141
1277
|
{
|
|
1142
1278
|
get = function(self)
|
|
1143
|
-
return self[
|
|
1279
|
+
return self[107] or 0
|
|
1144
1280
|
end,
|
|
1145
1281
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1146
|
-
self[
|
|
1282
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
1147
1283
|
end
|
|
1148
1284
|
},
|
|
1149
1285
|
true
|
|
@@ -1174,12 +1310,52 @@ __TS__SetDescriptor(
|
|
|
1174
1310
|
},
|
|
1175
1311
|
true
|
|
1176
1312
|
)
|
|
1313
|
+
__TS__SetDescriptor(
|
|
1314
|
+
Buff.prototype,
|
|
1315
|
+
"evasionProbability",
|
|
1316
|
+
{
|
|
1317
|
+
get = function(self)
|
|
1318
|
+
return self:getUnitBonus(UnitBonusType.EVASION_PROBABILITY)
|
|
1319
|
+
end,
|
|
1320
|
+
set = function(self, evasionProbability)
|
|
1321
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.EVASION_PROBABILITY, evasionProbability)
|
|
1322
|
+
end
|
|
1323
|
+
},
|
|
1324
|
+
true
|
|
1325
|
+
)
|
|
1326
|
+
__TS__SetDescriptor(
|
|
1327
|
+
Buff.prototype,
|
|
1328
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1329
|
+
{
|
|
1330
|
+
get = function(self)
|
|
1331
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1332
|
+
end,
|
|
1333
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1334
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1335
|
+
end
|
|
1336
|
+
},
|
|
1337
|
+
true
|
|
1338
|
+
)
|
|
1177
1339
|
__TS__SetDescriptor(
|
|
1178
1340
|
Buff.prototype,
|
|
1179
1341
|
"duration",
|
|
1180
|
-
{
|
|
1181
|
-
|
|
1182
|
-
|
|
1342
|
+
{
|
|
1343
|
+
get = function(self)
|
|
1344
|
+
return self[103]
|
|
1345
|
+
end,
|
|
1346
|
+
set = function(self, duration)
|
|
1347
|
+
if duration <= 0 then
|
|
1348
|
+
local timer = self._timer
|
|
1349
|
+
if timer ~= nil then
|
|
1350
|
+
timer:destroy()
|
|
1351
|
+
self._timer = nil
|
|
1352
|
+
end
|
|
1353
|
+
self[103] = 0
|
|
1354
|
+
else
|
|
1355
|
+
self.remainingDuration = self.remainingDuration + (duration - self[103])
|
|
1356
|
+
end
|
|
1357
|
+
end
|
|
1358
|
+
},
|
|
1183
1359
|
true
|
|
1184
1360
|
)
|
|
1185
1361
|
__TS__SetDescriptor(
|
|
@@ -1187,15 +1363,15 @@ __TS__SetDescriptor(
|
|
|
1187
1363
|
"remainingDuration",
|
|
1188
1364
|
{
|
|
1189
1365
|
get = function(self)
|
|
1190
|
-
local
|
|
1191
|
-
return
|
|
1366
|
+
local ____opt_56 = self._timer
|
|
1367
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1192
1368
|
end,
|
|
1193
1369
|
set = function(self, remainingDuration)
|
|
1194
|
-
local
|
|
1195
|
-
local
|
|
1196
|
-
local remainingDurationDelta =
|
|
1370
|
+
local ____remainingDuration_60 = remainingDuration
|
|
1371
|
+
local ____opt_58 = self._timer
|
|
1372
|
+
local remainingDurationDelta = ____remainingDuration_60 - (____opt_58 and ____opt_58.remaining or 0)
|
|
1197
1373
|
if remainingDurationDelta ~= 0 then
|
|
1198
|
-
self[
|
|
1374
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1199
1375
|
if remainingDuration <= 0 then
|
|
1200
1376
|
Timer:run(destroyBuff, self)
|
|
1201
1377
|
else
|
|
@@ -1207,7 +1383,8 @@ __TS__SetDescriptor(
|
|
|
1207
1383
|
self._level,
|
|
1208
1384
|
remainingDuration,
|
|
1209
1385
|
self._spellStealPriority,
|
|
1210
|
-
self._learnLevelMinimum
|
|
1386
|
+
self._learnLevelMinimum,
|
|
1387
|
+
self[146]
|
|
1211
1388
|
) then
|
|
1212
1389
|
local timer = self._timer
|
|
1213
1390
|
if timer == nil then
|
|
@@ -1221,37 +1398,135 @@ __TS__SetDescriptor(
|
|
|
1221
1398
|
end
|
|
1222
1399
|
},
|
|
1223
1400
|
true
|
|
1224
|
-
)
|
|
1401
|
+
)
|
|
1402
|
+
__TS__SetDescriptor(
|
|
1403
|
+
Buff.prototype,
|
|
1404
|
+
"absorbedDamageFactor",
|
|
1405
|
+
{
|
|
1406
|
+
get = function(self)
|
|
1407
|
+
return self[135] or 1
|
|
1408
|
+
end,
|
|
1409
|
+
set = function(self, absorbedDamageFactor)
|
|
1410
|
+
if absorbedDamageFactor == 1 then
|
|
1411
|
+
self[135] = nil
|
|
1412
|
+
else
|
|
1413
|
+
self[135] = absorbedDamageFactor
|
|
1414
|
+
end
|
|
1415
|
+
end
|
|
1416
|
+
},
|
|
1417
|
+
true
|
|
1418
|
+
)
|
|
1419
|
+
__TS__SetDescriptor(
|
|
1420
|
+
Buff.prototype,
|
|
1421
|
+
"maximumDamageAbsorbed",
|
|
1422
|
+
{
|
|
1423
|
+
get = function(self)
|
|
1424
|
+
return self[136] or 0
|
|
1425
|
+
end,
|
|
1426
|
+
set = function(self, maximumDamageAbsorbed)
|
|
1427
|
+
if maximumDamageAbsorbed == 0 then
|
|
1428
|
+
self[136] = nil
|
|
1429
|
+
else
|
|
1430
|
+
self[136] = maximumDamageAbsorbed
|
|
1431
|
+
end
|
|
1432
|
+
end
|
|
1433
|
+
},
|
|
1434
|
+
true
|
|
1435
|
+
)
|
|
1436
|
+
__TS__SetDescriptor(
|
|
1437
|
+
Buff.prototype,
|
|
1438
|
+
"damageAbsorbed",
|
|
1439
|
+
{get = function(self)
|
|
1440
|
+
return self[137] or 0
|
|
1441
|
+
end},
|
|
1442
|
+
true
|
|
1443
|
+
)
|
|
1444
|
+
__TS__SetDescriptor(
|
|
1445
|
+
Buff.prototype,
|
|
1446
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
1447
|
+
{
|
|
1448
|
+
get = function(self)
|
|
1449
|
+
local ____self__138_61 = self[138]
|
|
1450
|
+
if ____self__138_61 == nil then
|
|
1451
|
+
____self__138_61 = true
|
|
1452
|
+
end
|
|
1453
|
+
return ____self__138_61
|
|
1454
|
+
end,
|
|
1455
|
+
set = function(self, destroysOnMaximumDamageAbsorbed)
|
|
1456
|
+
local ____destroysOnMaximumDamageAbsorbed_62
|
|
1457
|
+
if destroysOnMaximumDamageAbsorbed then
|
|
1458
|
+
____destroysOnMaximumDamageAbsorbed_62 = nil
|
|
1459
|
+
else
|
|
1460
|
+
____destroysOnMaximumDamageAbsorbed_62 = false
|
|
1461
|
+
end
|
|
1462
|
+
self[138] = ____destroysOnMaximumDamageAbsorbed_62
|
|
1463
|
+
end
|
|
1464
|
+
},
|
|
1465
|
+
true
|
|
1466
|
+
)
|
|
1467
|
+
__TS__SetDescriptor(
|
|
1468
|
+
Buff.prototype,
|
|
1469
|
+
"abilityCooldownFactor",
|
|
1470
|
+
{
|
|
1471
|
+
get = function(self)
|
|
1472
|
+
return self[147] or 1
|
|
1473
|
+
end,
|
|
1474
|
+
set = function(self, abilityCooldownFactor)
|
|
1475
|
+
local previousAbilityCooldownModifier = self[148]
|
|
1476
|
+
if previousAbilityCooldownModifier then
|
|
1477
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1478
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1479
|
+
end
|
|
1480
|
+
end
|
|
1481
|
+
local function modifier(ability, level, cooldown)
|
|
1482
|
+
return cooldown * abilityCooldownFactor
|
|
1483
|
+
end
|
|
1484
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1485
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1486
|
+
end
|
|
1487
|
+
self[148] = modifier
|
|
1488
|
+
self[147] = abilityCooldownFactor
|
|
1489
|
+
end
|
|
1490
|
+
},
|
|
1491
|
+
true
|
|
1492
|
+
)
|
|
1493
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1494
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1225
1495
|
(function(self)
|
|
1226
|
-
local function destroyBuffIfNeeded(buff)
|
|
1227
|
-
|
|
1228
|
-
|
|
1496
|
+
local function destroyBuffIfNeeded(buff, isDispel, source)
|
|
1497
|
+
local currentHandle = getUnitAbility(buff[101].handle, buff.typeId)
|
|
1498
|
+
if currentHandle ~= buff.handle and buff[100] == 1 then
|
|
1499
|
+
if isDispel and currentHandle == nil and buff.unit.isAlive and buff.resistanceType == 1 and (buff._timer == nil or buff.remainingDuration > 0) then
|
|
1500
|
+
buff:dispel(source)
|
|
1501
|
+
else
|
|
1502
|
+
buff:destroy()
|
|
1503
|
+
end
|
|
1229
1504
|
end
|
|
1230
1505
|
end
|
|
1231
|
-
____exports.checkBuff = function(unit, buffTypeId)
|
|
1506
|
+
____exports.checkBuff = function(unit, buffTypeId, isDispel, source)
|
|
1232
1507
|
local buffByTypeId = buffByTypeIdByUnit[unit]
|
|
1233
1508
|
if buffByTypeId ~= nil then
|
|
1234
1509
|
local buff = buffByTypeId[buffTypeId]
|
|
1235
1510
|
if buff ~= nil then
|
|
1236
|
-
destroyBuffIfNeeded(buff)
|
|
1511
|
+
destroyBuffIfNeeded(buff, isDispel, source)
|
|
1237
1512
|
end
|
|
1238
1513
|
end
|
|
1239
1514
|
end
|
|
1240
|
-
____exports.checkBuffs = function(unit)
|
|
1241
|
-
____exports.Buff:forAll(unit, destroyBuffIfNeeded)
|
|
1515
|
+
____exports.checkBuffs = function(unit, isDispel, source)
|
|
1516
|
+
____exports.Buff:forAll(unit, destroyBuffIfNeeded, isDispel, source)
|
|
1242
1517
|
end
|
|
1243
1518
|
Unit.abilityChannelingStartEvent:addListener(
|
|
1244
1519
|
0,
|
|
1245
1520
|
function(caster)
|
|
1246
|
-
____exports.checkBuffs(caster)
|
|
1247
|
-
Timer:run(____exports.checkBuffs, caster)
|
|
1521
|
+
____exports.checkBuffs(caster, true, caster)
|
|
1522
|
+
Timer:run(____exports.checkBuffs, caster, true, caster)
|
|
1248
1523
|
end
|
|
1249
1524
|
)
|
|
1250
1525
|
Unit.abilityUnitTargetChannelingStartEvent:addListener(
|
|
1251
1526
|
0,
|
|
1252
1527
|
function(caster, ability, target)
|
|
1253
|
-
____exports.checkBuffs(target)
|
|
1254
|
-
Timer:run(____exports.checkBuffs, target)
|
|
1528
|
+
____exports.checkBuffs(target, true, caster)
|
|
1529
|
+
Timer:run(____exports.checkBuffs, target, true, caster)
|
|
1255
1530
|
end
|
|
1256
1531
|
)
|
|
1257
1532
|
Unit.abilityPointTargetChannelingStartEvent:addListener(
|
|
@@ -1262,18 +1537,47 @@ __TS__SetDescriptor(
|
|
|
1262
1537
|
y,
|
|
1263
1538
|
ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1264
1539
|
)
|
|
1265
|
-
forEach(units, ____exports.checkBuffs)
|
|
1266
|
-
Timer:run(
|
|
1540
|
+
forEach(units, ____exports.checkBuffs, true, caster)
|
|
1541
|
+
Timer:run(
|
|
1542
|
+
forEach,
|
|
1543
|
+
units,
|
|
1544
|
+
____exports.checkBuffs,
|
|
1545
|
+
true,
|
|
1546
|
+
caster
|
|
1547
|
+
)
|
|
1548
|
+
end
|
|
1549
|
+
)
|
|
1550
|
+
Unit.abilityNoTargetChannelingStartEvent:addListener(
|
|
1551
|
+
0,
|
|
1552
|
+
function(caster, ability)
|
|
1553
|
+
local radius = ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1554
|
+
if radius > 0 then
|
|
1555
|
+
local units = Unit:getInCollisionRange(caster.x, caster.y, radius)
|
|
1556
|
+
forEach(units, ____exports.checkBuffs, true, caster)
|
|
1557
|
+
Timer:run(
|
|
1558
|
+
forEach,
|
|
1559
|
+
units,
|
|
1560
|
+
____exports.checkBuffs,
|
|
1561
|
+
true,
|
|
1562
|
+
caster
|
|
1563
|
+
)
|
|
1564
|
+
end
|
|
1267
1565
|
end
|
|
1268
1566
|
)
|
|
1269
1567
|
Unit.onDamage:addListener(
|
|
1270
1568
|
0,
|
|
1271
1569
|
function(source, target)
|
|
1272
1570
|
if source ~= nil then
|
|
1273
|
-
____exports.checkBuffs
|
|
1571
|
+
Timer:run(____exports.checkBuffs, source, false)
|
|
1274
1572
|
end
|
|
1275
|
-
____exports.checkBuffs
|
|
1573
|
+
Timer:run(____exports.checkBuffs, target, false)
|
|
1276
1574
|
end
|
|
1277
1575
|
)
|
|
1576
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1577
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1578
|
+
end)
|
|
1579
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1580
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1581
|
+
end)
|
|
1278
1582
|
end)(Buff)
|
|
1279
1583
|
return ____exports
|