warscript 0.0.1-dev.b026cc2 → 0.0.1-dev.b1ce140
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 +7 -0
- package/core/types/frame.lua +189 -23
- 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 +127 -4
- package/decl/native.d.ts +1718 -964
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +16 -3
- package/engine/behavior.lua +233 -73
- 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 +8 -5
- 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 +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +44 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- 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 +30 -7
- package/engine/behaviour/ability.lua +162 -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 +46 -2
- package/engine/behaviour/unit.lua +290 -6
- package/engine/buff.d.ts +149 -61
- package/engine/buff.lua +700 -304
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +27 -14
- package/engine/internal/ability.lua +168 -104
- 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/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +142 -19
- 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 +20 -2
- package/engine/internal/unit/bonus.lua +125 -9
- 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/inventory.d.ts +28 -0
- 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 +13 -0
- package/engine/internal/unit/main-selected.lua +36 -0
- 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 +75 -5
- 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 +70 -13
- package/engine/internal/unit.d.ts +57 -31
- package/engine/internal/unit.lua +450 -301
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +35 -2
- package/engine/local-client.lua +367 -15
- 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-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/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 +314 -40
- 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 +32 -3
- package/engine/object-data/entry/item-type.lua +177 -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 +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-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +28 -5
- package/engine/object-field/ability.lua +61 -7
- 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 +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 +4 -2
- package/engine/standard/fields/ability.lua +4 -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 +13 -0
- package/engine/unit.lua +13 -0
- package/event.d.ts +1 -1
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +28 -3
- package/objutil/buff.lua +13 -12
- 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.d.ts +0 -0
- package/patch-lua.lua +25 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +10 -1
- package/utility/arrays.lua +45 -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 +16 -3
- package/utility/linked-set.lua +54 -3
- 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 +4 -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/{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
|
@@ -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,9 +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
|
|
51
|
+
local ____item = require("engine.internal.item")
|
|
52
|
+
local Item = ____item.Item
|
|
53
|
+
local ____destructable = require("core.types.destructable")
|
|
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
|
|
49
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
50
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
51
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -91,14 +103,20 @@ local buffParametersKeys = {
|
|
|
91
103
|
damageIncrease = true,
|
|
92
104
|
damageIncreaseFactor = true,
|
|
93
105
|
armorIncrease = true,
|
|
94
|
-
|
|
106
|
+
maxHealthIncrease = true,
|
|
107
|
+
maxManaIncrease = true,
|
|
95
108
|
attackSpeedIncreaseFactor = true,
|
|
96
109
|
movementSpeedIncreaseFactor = true,
|
|
110
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
111
|
+
evasionProbability = true,
|
|
112
|
+
missProbability = true,
|
|
113
|
+
damageFactor = true,
|
|
97
114
|
receivedDamageFactor = true,
|
|
98
115
|
receivedMagicDamageFactor = true,
|
|
99
116
|
durationIncreaseOnAutoAttack = true,
|
|
100
117
|
maximumDuration = true,
|
|
101
118
|
maximumRemainingDuration = true,
|
|
119
|
+
turnsIntoGhost = true,
|
|
102
120
|
stuns = true,
|
|
103
121
|
ignoresStunImmunity = true,
|
|
104
122
|
providesStunImmunity = true,
|
|
@@ -107,12 +125,30 @@ local buffParametersKeys = {
|
|
|
107
125
|
disablesAutoAttack = true,
|
|
108
126
|
destroysOnDamage = true,
|
|
109
127
|
maximumAutoAttackCount = true,
|
|
128
|
+
maximumDamageDealtEventCount = true,
|
|
129
|
+
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
110
133
|
uniqueGroup = true,
|
|
111
134
|
damageOnExpiration = true,
|
|
112
135
|
healingOnExpiration = true,
|
|
113
136
|
killsOnExpiration = true,
|
|
114
|
-
explodesOnExpiration = true
|
|
137
|
+
explodesOnExpiration = true,
|
|
138
|
+
abilityCooldownFactor = true
|
|
115
139
|
}
|
|
140
|
+
local function resolveEnumValue(ability, level, value)
|
|
141
|
+
if value == nil or type(value) == "number" then
|
|
142
|
+
return value
|
|
143
|
+
end
|
|
144
|
+
if ability == nil then
|
|
145
|
+
error(
|
|
146
|
+
__TS__New(IllegalArgumentException),
|
|
147
|
+
0
|
|
148
|
+
)
|
|
149
|
+
end
|
|
150
|
+
return value:getValue(ability, level or ability.level)
|
|
151
|
+
end
|
|
116
152
|
local function resolveNumberValue(ability, level, value)
|
|
117
153
|
if value == nil or type(value) == "number" then
|
|
118
154
|
return value
|
|
@@ -150,6 +186,8 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
150
186
|
end
|
|
151
187
|
end
|
|
152
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
190
|
+
"turnsIntoGhost",
|
|
153
191
|
"stuns",
|
|
154
192
|
"ignoresStunImmunity",
|
|
155
193
|
"disablesAutoAttack",
|
|
@@ -161,9 +199,16 @@ local buffNumberParameters = {
|
|
|
161
199
|
"durationIncreaseOnAutoAttack",
|
|
162
200
|
"attackSpeedIncreaseFactor",
|
|
163
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
203
|
+
"evasionProbability",
|
|
164
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
207
|
+
"damageFactor",
|
|
165
208
|
"receivedDamageFactor",
|
|
166
209
|
"maximumAutoAttackCount",
|
|
210
|
+
"maximumDamageDealtEventCount",
|
|
211
|
+
"maximumDamageReceivedEventCount",
|
|
167
212
|
"damageInterval",
|
|
168
213
|
"damagePerInterval",
|
|
169
214
|
"damageOverDuration",
|
|
@@ -171,7 +216,10 @@ local buffNumberParameters = {
|
|
|
171
216
|
"healingPerInterval",
|
|
172
217
|
"healingOverDuration",
|
|
173
218
|
"damageOnExpiration",
|
|
174
|
-
"healingOnExpiration"
|
|
219
|
+
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
222
|
+
"abilityCooldownFactor"
|
|
175
223
|
}
|
|
176
224
|
local unsuccessfulApplicationMarker = {}
|
|
177
225
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -198,7 +246,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
198
246
|
return checkNotNull(firstNativeBuffTypeId)
|
|
199
247
|
end
|
|
200
248
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
201
|
-
if buff[
|
|
249
|
+
if buff[104] == uniqueGroup then
|
|
202
250
|
buff:destroy()
|
|
203
251
|
end
|
|
204
252
|
end
|
|
@@ -206,17 +254,21 @@ local function destroyBuff(buff)
|
|
|
206
254
|
buff:destroy()
|
|
207
255
|
end
|
|
208
256
|
local function expireBuff(buff)
|
|
209
|
-
|
|
210
|
-
|
|
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
|
|
211
263
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
212
264
|
buff:flashSpecialEffect()
|
|
213
265
|
if remainingDamageOverDuration ~= 0 then
|
|
214
|
-
(buff[
|
|
215
|
-
buff[
|
|
266
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
267
|
+
buff[113] = nil
|
|
216
268
|
end
|
|
217
269
|
if remainingHealingOverDuration ~= 0 then
|
|
218
|
-
(buff[
|
|
219
|
-
buff[
|
|
270
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
271
|
+
buff[118] = nil
|
|
220
272
|
end
|
|
221
273
|
end
|
|
222
274
|
Timer:run(destroyBuff, buff)
|
|
@@ -224,56 +276,58 @@ local function expireBuff(buff)
|
|
|
224
276
|
end
|
|
225
277
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
226
278
|
buffDamageIntervalTimerCallback(buff)
|
|
227
|
-
local timer = buff[
|
|
228
|
-
local damageInterval = buff[
|
|
279
|
+
local timer = buff[114]
|
|
280
|
+
local damageInterval = buff[112]
|
|
229
281
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
230
282
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
231
283
|
end
|
|
232
284
|
end
|
|
233
285
|
buffDamageIntervalTimerCallback = function(buff)
|
|
234
286
|
buff:flashSpecialEffect()
|
|
235
|
-
local source = buff[
|
|
236
|
-
local remainingDamageOverDuration = buff[
|
|
287
|
+
local source = buff[102] or buff[101]
|
|
288
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
237
289
|
if remainingDamageOverDuration ~= 0 then
|
|
238
|
-
local damageInterval = buff[
|
|
290
|
+
local damageInterval = buff[112] or 0
|
|
239
291
|
if damageInterval ~= 0 then
|
|
240
292
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
241
|
-
source:damageTarget(buff[
|
|
242
|
-
buff[
|
|
293
|
+
source:damageTarget(buff[101], damage)
|
|
294
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
243
295
|
end
|
|
244
296
|
end
|
|
245
|
-
local damagePerInterval = buff[
|
|
297
|
+
local damagePerInterval = buff[111] or 0
|
|
246
298
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
247
|
-
source:damageTarget(buff[
|
|
299
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
248
300
|
end
|
|
249
301
|
end
|
|
250
302
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
251
303
|
buffHealingIntervalTimerCallback(buff)
|
|
252
|
-
local timer = buff[
|
|
253
|
-
local healingInterval = buff[
|
|
304
|
+
local timer = buff[119]
|
|
305
|
+
local healingInterval = buff[117]
|
|
254
306
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
255
307
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
256
308
|
end
|
|
257
309
|
end
|
|
258
310
|
buffHealingIntervalTimerCallback = function(buff)
|
|
259
|
-
if buff[
|
|
311
|
+
if buff[117] ~= buff[112] then
|
|
260
312
|
buff:flashSpecialEffect()
|
|
261
313
|
end
|
|
262
|
-
local source = buff[
|
|
263
|
-
local remainingHealingOverDuration = buff[
|
|
314
|
+
local source = buff[102] or buff[101]
|
|
315
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
264
316
|
if remainingHealingOverDuration ~= 0 then
|
|
265
|
-
local healingInterval = buff[
|
|
317
|
+
local healingInterval = buff[117] or 0
|
|
266
318
|
if healingInterval ~= 0 then
|
|
267
319
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
268
|
-
source:healTarget(buff[
|
|
269
|
-
buff[
|
|
320
|
+
source:healTarget(buff[101], healing)
|
|
321
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
270
322
|
end
|
|
271
323
|
end
|
|
272
|
-
local healingPerInterval = buff[
|
|
324
|
+
local healingPerInterval = buff[116] or 0
|
|
273
325
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
274
|
-
source:healTarget(buff[
|
|
326
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
275
327
|
end
|
|
276
328
|
end
|
|
329
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
330
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
277
331
|
____exports.Buff = __TS__Class()
|
|
278
332
|
local Buff = ____exports.Buff
|
|
279
333
|
Buff.name = "Buff"
|
|
@@ -282,40 +336,44 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
282
336
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
283
337
|
self._unit = _unit
|
|
284
338
|
self.parameters = nil
|
|
285
|
-
self[100] =
|
|
339
|
+
self[100] = 0
|
|
340
|
+
self[101] = _unit
|
|
286
341
|
local typeId
|
|
287
342
|
local polarity
|
|
288
343
|
local resistanceType
|
|
289
344
|
local ability
|
|
345
|
+
local abilityBehavior
|
|
290
346
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
291
347
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
292
348
|
polarity = resistanceTypeOrPolarity
|
|
293
349
|
resistanceType = abilityOrParametersOrResistanceType
|
|
294
|
-
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
|
|
295
354
|
ability = parametersOrAbility
|
|
296
|
-
|
|
297
|
-
ability = nil
|
|
355
|
+
elseif parametersOrAbility ~= nil then
|
|
298
356
|
parameters = parametersOrAbility
|
|
299
357
|
end
|
|
300
358
|
else
|
|
301
359
|
typeId = typeIdOrTypeIds
|
|
302
360
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
303
361
|
resistanceType = resistanceTypeOrPolarity
|
|
304
|
-
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
|
|
305
367
|
ability = abilityOrParametersOrResistanceType
|
|
306
368
|
parameters = parametersOrAbility
|
|
307
|
-
|
|
308
|
-
ability = nil
|
|
369
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
309
370
|
parameters = abilityOrParametersOrResistanceType
|
|
371
|
+
else
|
|
372
|
+
parameters = parametersOrAbility
|
|
310
373
|
end
|
|
311
374
|
end
|
|
375
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
312
376
|
self.typeId = typeId
|
|
313
|
-
self.polarity = polarity
|
|
314
|
-
self.resistanceType = resistanceType
|
|
315
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
316
|
-
parameters = ability
|
|
317
|
-
ability = nil
|
|
318
|
-
end
|
|
319
377
|
local defaultParameters = self.constructor.defaultParameters
|
|
320
378
|
local level = parameters and parameters.level or defaultParameters.level
|
|
321
379
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -338,14 +396,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
338
396
|
learnLevelMinimum = learnLevelMinimum or ability:getField(ABILITY_IF_REQUIRED_LEVEL)
|
|
339
397
|
duration = duration or getAbilityDuration(ability, _unit)
|
|
340
398
|
end
|
|
399
|
+
self.polarity = resolveEnumValue(ability, level, polarity)
|
|
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
|
|
341
406
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
342
407
|
if buffByTypeId == nil then
|
|
343
408
|
buffByTypeId = {}
|
|
344
409
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
345
410
|
end
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
411
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
412
|
+
local ____opt_15 = self.previousBuff
|
|
413
|
+
if ____opt_15 ~= nil then
|
|
414
|
+
____opt_15:destroy()
|
|
349
415
|
end
|
|
350
416
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
351
417
|
if uniqueGroup ~= nil then
|
|
@@ -354,18 +420,21 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
354
420
|
if not internalApplyBuff(
|
|
355
421
|
_unit,
|
|
356
422
|
typeId,
|
|
357
|
-
polarity,
|
|
358
|
-
resistanceType,
|
|
423
|
+
self.polarity,
|
|
424
|
+
self.resistanceType,
|
|
359
425
|
level,
|
|
360
426
|
duration,
|
|
361
427
|
spellStealPriority,
|
|
362
|
-
learnLevelMinimum
|
|
428
|
+
learnLevelMinimum,
|
|
429
|
+
missProbability
|
|
363
430
|
) then
|
|
431
|
+
self[100] = 1
|
|
364
432
|
UnitBehavior.prototype.destroy(self)
|
|
365
433
|
error(unsuccessfulApplicationMarker, 0)
|
|
366
434
|
end
|
|
367
435
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
368
436
|
if handle == nil then
|
|
437
|
+
self[100] = 1
|
|
369
438
|
UnitBehavior.prototype.destroy(self)
|
|
370
439
|
error(unsuccessfulApplicationMarker, 0)
|
|
371
440
|
end
|
|
@@ -374,20 +443,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
374
443
|
self._level = level
|
|
375
444
|
self._spellStealPriority = spellStealPriority
|
|
376
445
|
self._learnLevelMinimum = learnLevelMinimum
|
|
377
|
-
self[
|
|
378
|
-
self[
|
|
379
|
-
self[
|
|
380
|
-
self[
|
|
381
|
-
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)
|
|
382
451
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
383
452
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
384
|
-
local
|
|
385
|
-
local
|
|
386
|
-
local
|
|
387
|
-
if
|
|
388
|
-
|
|
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]
|
|
389
458
|
end
|
|
390
|
-
if resolveBooleanValue(
|
|
459
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
391
460
|
self[buffBooleanParameter] = true
|
|
392
461
|
end
|
|
393
462
|
end
|
|
@@ -403,11 +472,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
403
472
|
end
|
|
404
473
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
405
474
|
if maximumDuration ~= nil then
|
|
406
|
-
self[
|
|
475
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
407
476
|
end
|
|
408
477
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
409
478
|
if maximumRemainingDuration ~= nil then
|
|
410
|
-
self[
|
|
479
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
411
480
|
end
|
|
412
481
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
413
482
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -416,24 +485,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
416
485
|
abilityTypeIds = {}
|
|
417
486
|
self._abilityTypeIds = abilityTypeIds
|
|
418
487
|
end
|
|
419
|
-
for
|
|
488
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
489
|
+
local abilityParameters = checkNotNull(parametersAbilityTypeIds[abilityTypeId])
|
|
420
490
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
421
491
|
if addedAbility ~= nil then
|
|
422
492
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
423
493
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
427
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
428
|
-
end
|
|
429
|
-
elseif abilityParameterKey ~= "level" then
|
|
430
|
-
abilityParameterKey:setValue(
|
|
431
|
-
addedAbility,
|
|
432
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
433
|
-
)
|
|
434
|
-
end
|
|
494
|
+
if abilityParameters.isButtonVisible == false then
|
|
495
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
435
496
|
end
|
|
436
|
-
|
|
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
|
|
437
504
|
end
|
|
438
505
|
end
|
|
439
506
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -445,18 +512,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
445
512
|
self._behaviors = behaviors
|
|
446
513
|
end
|
|
447
514
|
end
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
if
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
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
|
|
455
524
|
end
|
|
456
525
|
end
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
526
|
+
if (next(additionalParameters)) ~= nil then
|
|
527
|
+
self.parameters = additionalParameters
|
|
528
|
+
end
|
|
460
529
|
end
|
|
461
530
|
end
|
|
462
531
|
if duration ~= nil and duration > 0 then
|
|
@@ -464,77 +533,101 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
464
533
|
timer:start(duration, false, expireBuff, self)
|
|
465
534
|
self._timer = timer
|
|
466
535
|
end
|
|
536
|
+
self:onCreate()
|
|
537
|
+
self[100] = 1
|
|
538
|
+
Event.invoke(buffCreatedEvent, self)
|
|
467
539
|
end
|
|
468
|
-
function Buff.prototype.
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
local bonusIdByBonusType = self._bonusIdByBonusType
|
|
475
|
-
if bonusIdByBonusType == nil then
|
|
476
|
-
bonusIdByBonusType = {}
|
|
477
|
-
self._bonusIdByBonusType = bonusIdByBonusType
|
|
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
|
|
478
546
|
end
|
|
479
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
480
547
|
end
|
|
481
|
-
function Buff.prototype.
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
488
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
489
|
-
)
|
|
490
|
-
local ____isWidgetProvided_38
|
|
491
|
-
if isWidgetProvided then
|
|
492
|
-
____isWidgetProvided_38 = duration
|
|
493
|
-
else
|
|
494
|
-
____isWidgetProvided_38 = widgetOrDuration
|
|
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
|
|
495
554
|
end
|
|
496
|
-
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
497
|
-
____Effect_flash_41(
|
|
498
|
-
____Effect_40,
|
|
499
|
-
__TS__SparseArraySpread(____array_39)
|
|
500
|
-
)
|
|
501
555
|
end
|
|
502
|
-
function Buff.prototype.
|
|
503
|
-
|
|
504
|
-
local ____Effect_44 = Effect
|
|
505
|
-
local ____Effect_flash_45 = Effect.flash
|
|
506
|
-
local ____array_43 = __TS__SparseArrayNew(
|
|
556
|
+
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
557
|
+
self:flash(
|
|
507
558
|
self[105],
|
|
508
|
-
|
|
509
|
-
|
|
559
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin",
|
|
560
|
+
widgetOrXOrParametersOrDuration,
|
|
561
|
+
yOrParametersOrDuration,
|
|
562
|
+
parametersOrDuration
|
|
510
563
|
)
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
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)
|
|
575
|
+
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
576
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
514
577
|
else
|
|
515
|
-
|
|
578
|
+
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
579
|
+
local ____Effect_40 = Effect
|
|
580
|
+
local ____Effect_flash_41 = Effect.flash
|
|
581
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
582
|
+
local ____isWidgetProvided_38
|
|
583
|
+
if isWidgetProvided then
|
|
584
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
585
|
+
else
|
|
586
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
587
|
+
end
|
|
588
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
589
|
+
____Effect_flash_41(
|
|
590
|
+
____Effect_40,
|
|
591
|
+
__TS__SparseArraySpread(____array_39)
|
|
592
|
+
)
|
|
516
593
|
end
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
594
|
+
end
|
|
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
|
|
610
|
+
end
|
|
611
|
+
end
|
|
612
|
+
function Buff.prototype.onCreate(self)
|
|
522
613
|
end
|
|
523
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
|
|
524
617
|
local unit = self._unit
|
|
525
618
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
526
619
|
removeBuff(unit.handle, self.typeId)
|
|
527
620
|
end
|
|
528
621
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
529
|
-
local healingIntervalTimer = self[
|
|
622
|
+
local healingIntervalTimer = self[119]
|
|
530
623
|
if healingIntervalTimer ~= nil then
|
|
531
624
|
healingIntervalTimer:destroy()
|
|
532
|
-
self[
|
|
625
|
+
self[119] = nil
|
|
533
626
|
end
|
|
534
|
-
local damageIntervalTimer = self[
|
|
627
|
+
local damageIntervalTimer = self[114]
|
|
535
628
|
if damageIntervalTimer ~= nil then
|
|
536
629
|
damageIntervalTimer:destroy()
|
|
537
|
-
self[
|
|
630
|
+
self[114] = nil
|
|
538
631
|
end
|
|
539
632
|
if self._timer ~= nil then
|
|
540
633
|
self._timer:destroy()
|
|
@@ -544,25 +637,34 @@ function Buff.prototype.onDestroy(self)
|
|
|
544
637
|
behavior:destroy()
|
|
545
638
|
end
|
|
546
639
|
end
|
|
547
|
-
|
|
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
|
|
548
650
|
unit:decrementDisableAutoAttackCounter()
|
|
549
651
|
end
|
|
550
|
-
if self[
|
|
551
|
-
if self[
|
|
552
|
-
unit:
|
|
652
|
+
if self[140] then
|
|
653
|
+
if self[141] then
|
|
654
|
+
unit:decrementForceStunCounter()
|
|
553
655
|
end
|
|
554
656
|
unit:decrementStunCounter()
|
|
555
657
|
end
|
|
658
|
+
if self[139] then
|
|
659
|
+
unit:decrementGhostCounter()
|
|
660
|
+
end
|
|
556
661
|
if self._abilityTypeIds ~= nil then
|
|
557
|
-
for abilityTypeId in
|
|
662
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
558
663
|
unit:removeAbility(abilityTypeId)
|
|
559
664
|
end
|
|
560
665
|
end
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
564
|
-
end
|
|
565
|
-
end
|
|
666
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
667
|
+
self[100] = 3
|
|
566
668
|
return UnitBehavior.prototype.onDestroy(self)
|
|
567
669
|
end
|
|
568
670
|
function Buff.apply(self, ...)
|
|
@@ -590,65 +692,95 @@ function Buff.apply(self, ...)
|
|
|
590
692
|
end
|
|
591
693
|
end
|
|
592
694
|
function Buff.getByTypeId(self, unit, typeId)
|
|
593
|
-
local
|
|
594
|
-
local buff =
|
|
695
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
696
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
595
697
|
if __TS__InstanceOf(buff, self) then
|
|
596
698
|
return buff
|
|
597
699
|
end
|
|
598
700
|
return nil
|
|
599
701
|
end
|
|
702
|
+
function Buff.prototype.onDispel(self, source)
|
|
703
|
+
end
|
|
600
704
|
function Buff.prototype.onExpiration(self)
|
|
601
705
|
local unit = self.unit
|
|
602
|
-
if self[119] ~= nil then
|
|
603
|
-
(self[101] or unit):damageTarget(unit, self[119] or 0)
|
|
604
|
-
end
|
|
605
706
|
if self[120] ~= nil then
|
|
606
|
-
(self[
|
|
707
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
607
708
|
end
|
|
608
|
-
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
|
|
609
713
|
unit:explode()
|
|
610
|
-
elseif self[
|
|
714
|
+
elseif self[144] then
|
|
611
715
|
unit:kill()
|
|
612
716
|
end
|
|
613
717
|
end
|
|
614
718
|
function Buff.prototype.onDeath(self, source)
|
|
615
719
|
local unit = self.unit
|
|
616
|
-
if self[
|
|
720
|
+
if self[122] ~= nil then
|
|
617
721
|
damageArea(
|
|
618
|
-
self[
|
|
619
|
-
self[
|
|
722
|
+
self[102] or unit,
|
|
723
|
+
self[122],
|
|
620
724
|
unit.x,
|
|
621
725
|
unit.y,
|
|
726
|
+
self[124] or 0,
|
|
622
727
|
self[123] or 0,
|
|
623
|
-
self[
|
|
728
|
+
self[126] or 0,
|
|
624
729
|
self[125] or 0,
|
|
625
|
-
self[
|
|
626
|
-
self[127] or 0
|
|
627
|
-
self[126] or 0
|
|
730
|
+
self[128] or 0,
|
|
731
|
+
self[127] or 0
|
|
628
732
|
)
|
|
629
733
|
end
|
|
630
734
|
end
|
|
631
735
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
632
736
|
if event.isAttack then
|
|
633
|
-
if self[
|
|
634
|
-
local durationIncrease = self[
|
|
635
|
-
local maximumDuration = self[
|
|
737
|
+
if self[107] ~= nil then
|
|
738
|
+
local durationIncrease = self[107]
|
|
739
|
+
local maximumDuration = self[108] or 0
|
|
636
740
|
if maximumDuration > 0 then
|
|
637
741
|
durationIncrease = min(
|
|
638
742
|
durationIncrease,
|
|
639
|
-
max(0, maximumDuration - self[
|
|
743
|
+
max(0, maximumDuration - self[103])
|
|
640
744
|
)
|
|
641
745
|
end
|
|
642
746
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
643
|
-
local maximumRemainingDuration = self[
|
|
747
|
+
local maximumRemainingDuration = self[109] or 0
|
|
644
748
|
if maximumRemainingDuration > 0 then
|
|
645
749
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
646
750
|
end
|
|
647
751
|
self.remainingDuration = remainingDuration
|
|
648
752
|
end
|
|
649
|
-
local autoAttackCount = (self[
|
|
650
|
-
self[
|
|
651
|
-
if autoAttackCount == self[
|
|
753
|
+
local autoAttackCount = (self[129] or 0) + 1
|
|
754
|
+
self[129] = autoAttackCount
|
|
755
|
+
if autoAttackCount == self[130] then
|
|
756
|
+
self:destroy()
|
|
757
|
+
end
|
|
758
|
+
end
|
|
759
|
+
if event.originalAmount ~= 0 then
|
|
760
|
+
local damageDealtEventCount = (self[131] or 0) + 1
|
|
761
|
+
self[131] = damageDealtEventCount
|
|
762
|
+
if damageDealtEventCount == self[132] then
|
|
763
|
+
self:destroy()
|
|
764
|
+
end
|
|
765
|
+
end
|
|
766
|
+
end
|
|
767
|
+
function Buff.prototype.onDamageReceived(self, source, event)
|
|
768
|
+
if event.originalAmount ~= 0 then
|
|
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
|
|
652
784
|
self:destroy()
|
|
653
785
|
end
|
|
654
786
|
end
|
|
@@ -658,7 +790,7 @@ __TS__SetDescriptor(
|
|
|
658
790
|
Buff.prototype,
|
|
659
791
|
"source",
|
|
660
792
|
{get = function(self)
|
|
661
|
-
return self[
|
|
793
|
+
return self[102] or self._unit
|
|
662
794
|
end},
|
|
663
795
|
true
|
|
664
796
|
)
|
|
@@ -675,13 +807,13 @@ __TS__SetDescriptor(
|
|
|
675
807
|
"remainingDamageOverDuration",
|
|
676
808
|
{
|
|
677
809
|
get = function(self)
|
|
678
|
-
return self[
|
|
810
|
+
return self[113] or 0
|
|
679
811
|
end,
|
|
680
812
|
set = function(self, remainingDamageOverDuration)
|
|
681
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
682
|
-
self[
|
|
683
|
-
local damageOverDuration = (self[
|
|
684
|
-
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
|
|
685
817
|
end
|
|
686
818
|
},
|
|
687
819
|
true
|
|
@@ -691,13 +823,13 @@ __TS__SetDescriptor(
|
|
|
691
823
|
"damageOverDuration",
|
|
692
824
|
{
|
|
693
825
|
get = function(self)
|
|
694
|
-
return self[
|
|
826
|
+
return self[110] or 0
|
|
695
827
|
end,
|
|
696
828
|
set = function(self, damageOverDuration)
|
|
697
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
698
|
-
self[
|
|
699
|
-
local remainingDamageOverDuration = (self[
|
|
700
|
-
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
|
|
701
833
|
end
|
|
702
834
|
},
|
|
703
835
|
true
|
|
@@ -707,10 +839,10 @@ __TS__SetDescriptor(
|
|
|
707
839
|
"damagePerInterval",
|
|
708
840
|
{
|
|
709
841
|
get = function(self)
|
|
710
|
-
return self[
|
|
842
|
+
return self[111] or 0
|
|
711
843
|
end,
|
|
712
844
|
set = function(self, damagePerInterval)
|
|
713
|
-
self[
|
|
845
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
714
846
|
end
|
|
715
847
|
},
|
|
716
848
|
true
|
|
@@ -720,25 +852,25 @@ __TS__SetDescriptor(
|
|
|
720
852
|
"damageInterval",
|
|
721
853
|
{
|
|
722
854
|
get = function(self)
|
|
723
|
-
return self[
|
|
855
|
+
return self[112] or 0
|
|
724
856
|
end,
|
|
725
857
|
set = function(self, damageInterval)
|
|
726
858
|
if damageInterval <= 0 then
|
|
727
|
-
self[
|
|
728
|
-
local timer = self[
|
|
859
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
860
|
+
local timer = self[114]
|
|
729
861
|
if timer ~= nil then
|
|
730
862
|
timer:destroy()
|
|
731
|
-
self[
|
|
863
|
+
self[114] = nil
|
|
732
864
|
end
|
|
733
865
|
return
|
|
734
866
|
end
|
|
735
|
-
self[
|
|
736
|
-
local
|
|
737
|
-
local elapsed =
|
|
738
|
-
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]
|
|
739
871
|
if timer == nil then
|
|
740
872
|
timer = Timer:create()
|
|
741
|
-
self[
|
|
873
|
+
self[114] = timer
|
|
742
874
|
end
|
|
743
875
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
744
876
|
if initialDelay == damageInterval then
|
|
@@ -755,13 +887,13 @@ __TS__SetDescriptor(
|
|
|
755
887
|
"remainingHealingOverDuration",
|
|
756
888
|
{
|
|
757
889
|
get = function(self)
|
|
758
|
-
return self[
|
|
890
|
+
return self[118] or 0
|
|
759
891
|
end,
|
|
760
892
|
set = function(self, remainingHealingOverDuration)
|
|
761
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
762
|
-
self[
|
|
763
|
-
local healingOverDuration = (self[
|
|
764
|
-
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
|
|
765
897
|
end
|
|
766
898
|
},
|
|
767
899
|
true
|
|
@@ -771,13 +903,13 @@ __TS__SetDescriptor(
|
|
|
771
903
|
"healingOverDuration",
|
|
772
904
|
{
|
|
773
905
|
get = function(self)
|
|
774
|
-
return self[
|
|
906
|
+
return self[115] or 0
|
|
775
907
|
end,
|
|
776
908
|
set = function(self, healingOverDuration)
|
|
777
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
778
|
-
self[
|
|
779
|
-
local remainingHealingOverDuration = (self[
|
|
780
|
-
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
|
|
781
913
|
end
|
|
782
914
|
},
|
|
783
915
|
true
|
|
@@ -787,10 +919,10 @@ __TS__SetDescriptor(
|
|
|
787
919
|
"healingPerInterval",
|
|
788
920
|
{
|
|
789
921
|
get = function(self)
|
|
790
|
-
return self[
|
|
922
|
+
return self[116] or 0
|
|
791
923
|
end,
|
|
792
924
|
set = function(self, healingPerInterval)
|
|
793
|
-
self[
|
|
925
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
794
926
|
end
|
|
795
927
|
},
|
|
796
928
|
true
|
|
@@ -800,25 +932,25 @@ __TS__SetDescriptor(
|
|
|
800
932
|
"healingInterval",
|
|
801
933
|
{
|
|
802
934
|
get = function(self)
|
|
803
|
-
return self[
|
|
935
|
+
return self[117] or 0
|
|
804
936
|
end,
|
|
805
937
|
set = function(self, healingInterval)
|
|
806
938
|
if healingInterval <= 0 then
|
|
807
|
-
self[
|
|
808
|
-
local timer = self[
|
|
939
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
940
|
+
local timer = self[119]
|
|
809
941
|
if timer ~= nil then
|
|
810
942
|
timer:destroy()
|
|
811
|
-
self[
|
|
943
|
+
self[119] = nil
|
|
812
944
|
end
|
|
813
945
|
return
|
|
814
946
|
end
|
|
815
|
-
self[
|
|
816
|
-
local
|
|
817
|
-
local elapsed =
|
|
818
|
-
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]
|
|
819
951
|
if timer == nil then
|
|
820
952
|
timer = Timer:create()
|
|
821
|
-
self[
|
|
953
|
+
self[119] = timer
|
|
822
954
|
end
|
|
823
955
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
824
956
|
if initialDelay == healingInterval then
|
|
@@ -835,10 +967,10 @@ __TS__SetDescriptor(
|
|
|
835
967
|
"damageOnExpiration",
|
|
836
968
|
{
|
|
837
969
|
get = function(self)
|
|
838
|
-
return self[
|
|
970
|
+
return self[120] or 0
|
|
839
971
|
end,
|
|
840
972
|
set = function(self, damageOnExpiration)
|
|
841
|
-
self[
|
|
973
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
842
974
|
end
|
|
843
975
|
},
|
|
844
976
|
true
|
|
@@ -848,10 +980,23 @@ __TS__SetDescriptor(
|
|
|
848
980
|
"healingOnExpiration",
|
|
849
981
|
{
|
|
850
982
|
get = function(self)
|
|
851
|
-
return self[
|
|
983
|
+
return self[121] or 0
|
|
852
984
|
end,
|
|
853
985
|
set = function(self, healingOnExpiration)
|
|
854
|
-
self[
|
|
986
|
+
self[121] = healingOnExpiration ~= 0 and healingOnExpiration or nil
|
|
987
|
+
end
|
|
988
|
+
},
|
|
989
|
+
true
|
|
990
|
+
)
|
|
991
|
+
__TS__SetDescriptor(
|
|
992
|
+
Buff.prototype,
|
|
993
|
+
"damageFactor",
|
|
994
|
+
{
|
|
995
|
+
get = function(self)
|
|
996
|
+
return self:getUnitBonus(UnitBonusType.DAMAGE_FACTOR)
|
|
997
|
+
end,
|
|
998
|
+
set = function(self, damageFactor)
|
|
999
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.DAMAGE_FACTOR, damageFactor)
|
|
855
1000
|
end
|
|
856
1001
|
},
|
|
857
1002
|
true
|
|
@@ -882,30 +1027,79 @@ __TS__SetDescriptor(
|
|
|
882
1027
|
},
|
|
883
1028
|
true
|
|
884
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
|
+
)
|
|
885
1079
|
__TS__SetDescriptor(
|
|
886
1080
|
Buff.prototype,
|
|
887
1081
|
"stuns",
|
|
888
1082
|
{
|
|
889
1083
|
get = function(self)
|
|
890
|
-
local
|
|
891
|
-
if
|
|
892
|
-
|
|
1084
|
+
local ____self__140_50 = self[140]
|
|
1085
|
+
if ____self__140_50 == nil then
|
|
1086
|
+
____self__140_50 = false
|
|
893
1087
|
end
|
|
894
|
-
return
|
|
1088
|
+
return ____self__140_50
|
|
895
1089
|
end,
|
|
896
1090
|
set = function(self, stuns)
|
|
897
|
-
if not stuns and self[
|
|
898
|
-
if self[
|
|
899
|
-
self.object:
|
|
1091
|
+
if not stuns and self[140] then
|
|
1092
|
+
if self[141] then
|
|
1093
|
+
self.object:decrementForceStunCounter()
|
|
900
1094
|
end
|
|
901
1095
|
self.object:decrementStunCounter()
|
|
902
|
-
self[
|
|
903
|
-
elseif stuns and not self[
|
|
904
|
-
if self[
|
|
905
|
-
self.object:
|
|
1096
|
+
self[140] = nil
|
|
1097
|
+
elseif stuns and not self[140] then
|
|
1098
|
+
if self[141] then
|
|
1099
|
+
self.object:incrementForceStunCounter()
|
|
906
1100
|
end
|
|
907
1101
|
self.object:incrementStunCounter()
|
|
908
|
-
self[
|
|
1102
|
+
self[140] = true
|
|
909
1103
|
end
|
|
910
1104
|
end
|
|
911
1105
|
},
|
|
@@ -916,23 +1110,23 @@ __TS__SetDescriptor(
|
|
|
916
1110
|
"ignoresStunImmunity",
|
|
917
1111
|
{
|
|
918
1112
|
get = function(self)
|
|
919
|
-
local
|
|
920
|
-
if
|
|
921
|
-
|
|
1113
|
+
local ____self__141_51 = self[141]
|
|
1114
|
+
if ____self__141_51 == nil then
|
|
1115
|
+
____self__141_51 = false
|
|
922
1116
|
end
|
|
923
|
-
return
|
|
1117
|
+
return ____self__141_51
|
|
924
1118
|
end,
|
|
925
1119
|
set = function(self, ignoresStunImmunity)
|
|
926
|
-
if not ignoresStunImmunity and self[
|
|
927
|
-
if self[
|
|
928
|
-
self.object:
|
|
1120
|
+
if not ignoresStunImmunity and self[141] then
|
|
1121
|
+
if self[140] then
|
|
1122
|
+
self.object:decrementForceStunCounter()
|
|
929
1123
|
end
|
|
930
|
-
self[
|
|
931
|
-
elseif ignoresStunImmunity and not self[
|
|
932
|
-
if self[
|
|
933
|
-
self.object:
|
|
1124
|
+
self[141] = nil
|
|
1125
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1126
|
+
if self[140] then
|
|
1127
|
+
self.object:incrementForceStunCounter()
|
|
934
1128
|
end
|
|
935
|
-
self[
|
|
1129
|
+
self[141] = true
|
|
936
1130
|
end
|
|
937
1131
|
end
|
|
938
1132
|
},
|
|
@@ -943,19 +1137,19 @@ __TS__SetDescriptor(
|
|
|
943
1137
|
"disablesAutoAttack",
|
|
944
1138
|
{
|
|
945
1139
|
get = function(self)
|
|
946
|
-
local
|
|
947
|
-
if
|
|
948
|
-
|
|
1140
|
+
local ____self__142_52 = self[142]
|
|
1141
|
+
if ____self__142_52 == nil then
|
|
1142
|
+
____self__142_52 = false
|
|
949
1143
|
end
|
|
950
|
-
return
|
|
1144
|
+
return ____self__142_52
|
|
951
1145
|
end,
|
|
952
1146
|
set = function(self, disablesAutoAttack)
|
|
953
|
-
if not disablesAutoAttack and self[
|
|
1147
|
+
if not disablesAutoAttack and self[142] then
|
|
954
1148
|
self.object:decrementDisableAutoAttackCounter()
|
|
955
|
-
self[
|
|
956
|
-
elseif disablesAutoAttack and not self[
|
|
1149
|
+
self[142] = nil
|
|
1150
|
+
elseif disablesAutoAttack and not self[142] then
|
|
957
1151
|
self.object:incrementDisableAutoAttackCounter()
|
|
958
|
-
self[
|
|
1152
|
+
self[142] = true
|
|
959
1153
|
end
|
|
960
1154
|
end
|
|
961
1155
|
},
|
|
@@ -966,19 +1160,19 @@ __TS__SetDescriptor(
|
|
|
966
1160
|
"providesInvulnerability",
|
|
967
1161
|
{
|
|
968
1162
|
get = function(self)
|
|
969
|
-
local
|
|
970
|
-
if
|
|
971
|
-
|
|
1163
|
+
local ____self__143_53 = self[143]
|
|
1164
|
+
if ____self__143_53 == nil then
|
|
1165
|
+
____self__143_53 = false
|
|
972
1166
|
end
|
|
973
|
-
return
|
|
1167
|
+
return ____self__143_53
|
|
974
1168
|
end,
|
|
975
1169
|
set = function(self, providesInvulnerability)
|
|
976
|
-
if not providesInvulnerability and self[
|
|
1170
|
+
if not providesInvulnerability and self[143] then
|
|
977
1171
|
self.object:decrementInvulnerabilityCounter()
|
|
978
|
-
self[
|
|
979
|
-
elseif providesInvulnerability and not self[
|
|
1172
|
+
self[143] = nil
|
|
1173
|
+
elseif providesInvulnerability and not self[143] then
|
|
980
1174
|
self.object:incrementInvulnerabilityCounter()
|
|
981
|
-
self[
|
|
1175
|
+
self[143] = true
|
|
982
1176
|
end
|
|
983
1177
|
end
|
|
984
1178
|
},
|
|
@@ -989,17 +1183,17 @@ __TS__SetDescriptor(
|
|
|
989
1183
|
"killsOnExpiration",
|
|
990
1184
|
{
|
|
991
1185
|
get = function(self)
|
|
992
|
-
local
|
|
993
|
-
if
|
|
994
|
-
|
|
1186
|
+
local ____self__144_54 = self[144]
|
|
1187
|
+
if ____self__144_54 == nil then
|
|
1188
|
+
____self__144_54 = false
|
|
995
1189
|
end
|
|
996
|
-
return
|
|
1190
|
+
return ____self__144_54
|
|
997
1191
|
end,
|
|
998
1192
|
set = function(self, killsOnExpiration)
|
|
999
|
-
if not killsOnExpiration and self[
|
|
1000
|
-
self[
|
|
1001
|
-
elseif killsOnExpiration and not self[
|
|
1002
|
-
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
|
|
1003
1197
|
end
|
|
1004
1198
|
end
|
|
1005
1199
|
},
|
|
@@ -1010,17 +1204,51 @@ __TS__SetDescriptor(
|
|
|
1010
1204
|
"explodesOnExpiration",
|
|
1011
1205
|
{
|
|
1012
1206
|
get = function(self)
|
|
1013
|
-
local
|
|
1014
|
-
if
|
|
1015
|
-
|
|
1207
|
+
local ____self__145_55 = self[145]
|
|
1208
|
+
if ____self__145_55 == nil then
|
|
1209
|
+
____self__145_55 = false
|
|
1016
1210
|
end
|
|
1017
|
-
return
|
|
1211
|
+
return ____self__145_55
|
|
1018
1212
|
end,
|
|
1019
1213
|
set = function(self, killsOnExpiration)
|
|
1020
|
-
if not killsOnExpiration and self[
|
|
1021
|
-
self[
|
|
1022
|
-
elseif killsOnExpiration and not self[
|
|
1023
|
-
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
|
|
1218
|
+
end
|
|
1219
|
+
end
|
|
1220
|
+
},
|
|
1221
|
+
true
|
|
1222
|
+
)
|
|
1223
|
+
__TS__SetDescriptor(
|
|
1224
|
+
Buff.prototype,
|
|
1225
|
+
"maximumDamageDealtEventCount",
|
|
1226
|
+
{
|
|
1227
|
+
get = function(self)
|
|
1228
|
+
return self[132] or 0
|
|
1229
|
+
end,
|
|
1230
|
+
set = function(self, maximumDamageDealtEventCount)
|
|
1231
|
+
if maximumDamageDealtEventCount == 0 then
|
|
1232
|
+
self[132] = nil
|
|
1233
|
+
else
|
|
1234
|
+
self[132] = maximumDamageDealtEventCount
|
|
1235
|
+
end
|
|
1236
|
+
end
|
|
1237
|
+
},
|
|
1238
|
+
true
|
|
1239
|
+
)
|
|
1240
|
+
__TS__SetDescriptor(
|
|
1241
|
+
Buff.prototype,
|
|
1242
|
+
"maximumDamageReceivedEventCount",
|
|
1243
|
+
{
|
|
1244
|
+
get = function(self)
|
|
1245
|
+
return self[134] or 0
|
|
1246
|
+
end,
|
|
1247
|
+
set = function(self, maximumDamageReceivedEventCount)
|
|
1248
|
+
if maximumDamageReceivedEventCount == 0 then
|
|
1249
|
+
self[134] = nil
|
|
1250
|
+
else
|
|
1251
|
+
self[134] = maximumDamageReceivedEventCount
|
|
1024
1252
|
end
|
|
1025
1253
|
end
|
|
1026
1254
|
},
|
|
@@ -1031,13 +1259,13 @@ __TS__SetDescriptor(
|
|
|
1031
1259
|
"maximumAutoAttackCount",
|
|
1032
1260
|
{
|
|
1033
1261
|
get = function(self)
|
|
1034
|
-
return self[
|
|
1262
|
+
return self[130] or 0
|
|
1035
1263
|
end,
|
|
1036
1264
|
set = function(self, maximumAutoAttackCount)
|
|
1037
1265
|
if maximumAutoAttackCount == 0 then
|
|
1038
|
-
self[
|
|
1266
|
+
self[130] = nil
|
|
1039
1267
|
else
|
|
1040
|
-
self[
|
|
1268
|
+
self[130] = maximumAutoAttackCount
|
|
1041
1269
|
end
|
|
1042
1270
|
end
|
|
1043
1271
|
},
|
|
@@ -1048,10 +1276,10 @@ __TS__SetDescriptor(
|
|
|
1048
1276
|
"durationIncreaseOnAutoAttack",
|
|
1049
1277
|
{
|
|
1050
1278
|
get = function(self)
|
|
1051
|
-
return self[
|
|
1279
|
+
return self[107] or 0
|
|
1052
1280
|
end,
|
|
1053
1281
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
1054
|
-
self[
|
|
1282
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
1055
1283
|
end
|
|
1056
1284
|
},
|
|
1057
1285
|
true
|
|
@@ -1082,12 +1310,52 @@ __TS__SetDescriptor(
|
|
|
1082
1310
|
},
|
|
1083
1311
|
true
|
|
1084
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
|
+
)
|
|
1085
1339
|
__TS__SetDescriptor(
|
|
1086
1340
|
Buff.prototype,
|
|
1087
1341
|
"duration",
|
|
1088
|
-
{
|
|
1089
|
-
|
|
1090
|
-
|
|
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
|
+
},
|
|
1091
1359
|
true
|
|
1092
1360
|
)
|
|
1093
1361
|
__TS__SetDescriptor(
|
|
@@ -1095,15 +1363,15 @@ __TS__SetDescriptor(
|
|
|
1095
1363
|
"remainingDuration",
|
|
1096
1364
|
{
|
|
1097
1365
|
get = function(self)
|
|
1098
|
-
local
|
|
1099
|
-
return
|
|
1366
|
+
local ____opt_56 = self._timer
|
|
1367
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1100
1368
|
end,
|
|
1101
1369
|
set = function(self, remainingDuration)
|
|
1102
|
-
local
|
|
1103
|
-
local
|
|
1104
|
-
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)
|
|
1105
1373
|
if remainingDurationDelta ~= 0 then
|
|
1106
|
-
self[
|
|
1374
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1107
1375
|
if remainingDuration <= 0 then
|
|
1108
1376
|
Timer:run(destroyBuff, self)
|
|
1109
1377
|
else
|
|
@@ -1115,7 +1383,8 @@ __TS__SetDescriptor(
|
|
|
1115
1383
|
self._level,
|
|
1116
1384
|
remainingDuration,
|
|
1117
1385
|
self._spellStealPriority,
|
|
1118
|
-
self._learnLevelMinimum
|
|
1386
|
+
self._learnLevelMinimum,
|
|
1387
|
+
self[146]
|
|
1119
1388
|
) then
|
|
1120
1389
|
local timer = self._timer
|
|
1121
1390
|
if timer == nil then
|
|
@@ -1129,37 +1398,135 @@ __TS__SetDescriptor(
|
|
|
1129
1398
|
end
|
|
1130
1399
|
},
|
|
1131
1400
|
true
|
|
1132
|
-
)
|
|
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;
|
|
1133
1495
|
(function(self)
|
|
1134
|
-
local function destroyBuffIfNeeded(buff)
|
|
1135
|
-
|
|
1136
|
-
|
|
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
|
|
1137
1504
|
end
|
|
1138
1505
|
end
|
|
1139
|
-
____exports.checkBuff = function(unit, buffTypeId)
|
|
1506
|
+
____exports.checkBuff = function(unit, buffTypeId, isDispel, source)
|
|
1140
1507
|
local buffByTypeId = buffByTypeIdByUnit[unit]
|
|
1141
1508
|
if buffByTypeId ~= nil then
|
|
1142
1509
|
local buff = buffByTypeId[buffTypeId]
|
|
1143
1510
|
if buff ~= nil then
|
|
1144
|
-
destroyBuffIfNeeded(buff)
|
|
1511
|
+
destroyBuffIfNeeded(buff, isDispel, source)
|
|
1145
1512
|
end
|
|
1146
1513
|
end
|
|
1147
1514
|
end
|
|
1148
|
-
____exports.checkBuffs = function(unit)
|
|
1149
|
-
____exports.Buff:forAll(unit, destroyBuffIfNeeded)
|
|
1515
|
+
____exports.checkBuffs = function(unit, isDispel, source)
|
|
1516
|
+
____exports.Buff:forAll(unit, destroyBuffIfNeeded, isDispel, source)
|
|
1150
1517
|
end
|
|
1151
1518
|
Unit.abilityChannelingStartEvent:addListener(
|
|
1152
1519
|
0,
|
|
1153
1520
|
function(caster)
|
|
1154
|
-
____exports.checkBuffs(caster)
|
|
1155
|
-
Timer:run(____exports.checkBuffs, caster)
|
|
1521
|
+
____exports.checkBuffs(caster, true, caster)
|
|
1522
|
+
Timer:run(____exports.checkBuffs, caster, true, caster)
|
|
1156
1523
|
end
|
|
1157
1524
|
)
|
|
1158
1525
|
Unit.abilityUnitTargetChannelingStartEvent:addListener(
|
|
1159
1526
|
0,
|
|
1160
1527
|
function(caster, ability, target)
|
|
1161
|
-
____exports.checkBuffs(target)
|
|
1162
|
-
Timer:run(____exports.checkBuffs, target)
|
|
1528
|
+
____exports.checkBuffs(target, true, caster)
|
|
1529
|
+
Timer:run(____exports.checkBuffs, target, true, caster)
|
|
1163
1530
|
end
|
|
1164
1531
|
)
|
|
1165
1532
|
Unit.abilityPointTargetChannelingStartEvent:addListener(
|
|
@@ -1170,18 +1537,47 @@ __TS__SetDescriptor(
|
|
|
1170
1537
|
y,
|
|
1171
1538
|
ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1172
1539
|
)
|
|
1173
|
-
forEach(units, ____exports.checkBuffs)
|
|
1174
|
-
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
|
|
1175
1565
|
end
|
|
1176
1566
|
)
|
|
1177
1567
|
Unit.onDamage:addListener(
|
|
1178
1568
|
0,
|
|
1179
1569
|
function(source, target)
|
|
1180
1570
|
if source ~= nil then
|
|
1181
|
-
____exports.checkBuffs
|
|
1571
|
+
Timer:run(____exports.checkBuffs, source, false)
|
|
1182
1572
|
end
|
|
1183
|
-
____exports.checkBuffs
|
|
1573
|
+
Timer:run(____exports.checkBuffs, target, false)
|
|
1184
1574
|
end
|
|
1185
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)
|
|
1186
1582
|
end)(Buff)
|
|
1187
1583
|
return ____exports
|