warscript 0.0.1-dev.bb34489 → 0.0.1-dev.bc4cd10
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/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- 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 +9 -0
- package/core/types/frame.lua +193 -23
- package/core/types/handle.lua +11 -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 +43 -11
- package/engine/behaviour/ability/damage.lua +89 -39
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +44 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- 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 +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- 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 +166 -57
- package/engine/buff.lua +766 -274
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- 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+transport.lua +4 -10
- 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 +466 -308
- 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 +14 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
- package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-type.lua +26 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/item-class.d.ts +11 -0
- package/engine/object-data/auxiliary/item-class.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/order-type.d.ts +939 -0
- package/engine/object-data/auxiliary/order-type.lua +2 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/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/breath-of-fire.d.ts +11 -0
- package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/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/firebolt.d.ts +7 -0
- package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
- package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
- package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
- package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
- package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
- package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
- package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
- package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
- package/engine/object-data/entry/ability-type/provoke.lua +66 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
- package/engine/object-data/entry/ability-type/resolve.lua +39 -0
- package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
- package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
- package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
- package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
- package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
- package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
- package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
- package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
- package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
- package/engine/object-data/entry/ability-type/talents.lua +27 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
- package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
- package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
- package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
- package/engine/object-data/entry/ability-type/warcry.lua +26 -0
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
- package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
- package/engine/object-data/entry/ability-type.d.ts +41 -20
- package/engine/object-data/entry/ability-type.lua +337 -44
- 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 +48 -0
- package/engine/standard/entries/buff-type.lua +46 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/lightning-type.d.ts +42 -15
- package/engine/standard/entries/lightning-type.lua +0 -14
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/entries/unit-type.d.ts +5 -0
- package/engine/standard/entries/unit-type.lua +5 -0
- package/engine/standard/fields/ability.d.ts +4 -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 +8 -3
- 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/property.d.ts +55 -0
- package/property.lua +374 -0
- package/utility/arrays.d.ts +11 -1
- package/utility/arrays.lua +57 -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/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
- 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,8 +125,30 @@ local buffParametersKeys = {
|
|
|
107
125
|
disablesAutoAttack = true,
|
|
108
126
|
destroysOnDamage = true,
|
|
109
127
|
maximumAutoAttackCount = true,
|
|
110
|
-
|
|
128
|
+
maximumDamageDealtEventCount = true,
|
|
129
|
+
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
133
|
+
uniqueGroup = true,
|
|
134
|
+
damageOnExpiration = true,
|
|
135
|
+
healingOnExpiration = true,
|
|
136
|
+
killsOnExpiration = true,
|
|
137
|
+
explodesOnExpiration = true,
|
|
138
|
+
abilityCooldownFactor = true
|
|
111
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
|
|
112
152
|
local function resolveNumberValue(ability, level, value)
|
|
113
153
|
if value == nil or type(value) == "number" then
|
|
114
154
|
return value
|
|
@@ -145,20 +185,41 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
145
185
|
buff[property] = resolvedValue
|
|
146
186
|
end
|
|
147
187
|
end
|
|
148
|
-
local buffBooleanParameters = {
|
|
188
|
+
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
190
|
+
"turnsIntoGhost",
|
|
191
|
+
"stuns",
|
|
192
|
+
"ignoresStunImmunity",
|
|
193
|
+
"disablesAutoAttack",
|
|
194
|
+
"providesInvulnerability",
|
|
195
|
+
"killsOnExpiration",
|
|
196
|
+
"explodesOnExpiration"
|
|
197
|
+
}
|
|
149
198
|
local buffNumberParameters = {
|
|
150
199
|
"durationIncreaseOnAutoAttack",
|
|
151
200
|
"attackSpeedIncreaseFactor",
|
|
152
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
203
|
+
"evasionProbability",
|
|
153
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
207
|
+
"damageFactor",
|
|
154
208
|
"receivedDamageFactor",
|
|
155
209
|
"maximumAutoAttackCount",
|
|
210
|
+
"maximumDamageDealtEventCount",
|
|
211
|
+
"maximumDamageReceivedEventCount",
|
|
156
212
|
"damageInterval",
|
|
157
213
|
"damagePerInterval",
|
|
158
214
|
"damageOverDuration",
|
|
159
215
|
"healingInterval",
|
|
160
216
|
"healingPerInterval",
|
|
161
|
-
"healingOverDuration"
|
|
217
|
+
"healingOverDuration",
|
|
218
|
+
"damageOnExpiration",
|
|
219
|
+
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
222
|
+
"abilityCooldownFactor"
|
|
162
223
|
}
|
|
163
224
|
local unsuccessfulApplicationMarker = {}
|
|
164
225
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -185,7 +246,7 @@ local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
|
185
246
|
return checkNotNull(firstNativeBuffTypeId)
|
|
186
247
|
end
|
|
187
248
|
local function destroyBuffIfItHasSameUniqueGroup(buff, uniqueGroup)
|
|
188
|
-
if buff[
|
|
249
|
+
if buff[104] == uniqueGroup then
|
|
189
250
|
buff:destroy()
|
|
190
251
|
end
|
|
191
252
|
end
|
|
@@ -193,73 +254,80 @@ local function destroyBuff(buff)
|
|
|
193
254
|
buff:destroy()
|
|
194
255
|
end
|
|
195
256
|
local function expireBuff(buff)
|
|
196
|
-
|
|
197
|
-
|
|
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
|
|
198
263
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
199
264
|
buff:flashSpecialEffect()
|
|
200
265
|
if remainingDamageOverDuration ~= 0 then
|
|
201
|
-
(buff[
|
|
202
|
-
buff[
|
|
266
|
+
(buff[102] or buff[101]):damageTarget(buff[101], remainingDamageOverDuration)
|
|
267
|
+
buff[113] = nil
|
|
203
268
|
end
|
|
204
269
|
if remainingHealingOverDuration ~= 0 then
|
|
205
|
-
(buff[
|
|
206
|
-
buff[
|
|
270
|
+
(buff[102] or buff[101]):healTarget(buff[101], remainingHealingOverDuration)
|
|
271
|
+
buff[118] = nil
|
|
207
272
|
end
|
|
208
273
|
end
|
|
209
274
|
Timer:run(destroyBuff, buff)
|
|
275
|
+
buff:onExpiration()
|
|
210
276
|
end
|
|
211
277
|
local function buffDamageIntervalInitialTimerCallback(buff)
|
|
212
278
|
buffDamageIntervalTimerCallback(buff)
|
|
213
|
-
local timer = buff[
|
|
214
|
-
local damageInterval = buff[
|
|
279
|
+
local timer = buff[114]
|
|
280
|
+
local damageInterval = buff[112]
|
|
215
281
|
if timer ~= nil and damageInterval ~= nil and damageInterval > 0 then
|
|
216
282
|
timer:start(damageInterval, true, buffDamageIntervalTimerCallback, buff)
|
|
217
283
|
end
|
|
218
284
|
end
|
|
219
285
|
buffDamageIntervalTimerCallback = function(buff)
|
|
220
286
|
buff:flashSpecialEffect()
|
|
221
|
-
local source = buff[
|
|
222
|
-
local remainingDamageOverDuration = buff[
|
|
287
|
+
local source = buff[102] or buff[101]
|
|
288
|
+
local remainingDamageOverDuration = buff[113] or 0
|
|
223
289
|
if remainingDamageOverDuration ~= 0 then
|
|
224
|
-
local damageInterval = buff[
|
|
290
|
+
local damageInterval = buff[112] or 0
|
|
225
291
|
if damageInterval ~= 0 then
|
|
226
292
|
local damage = remainingDamageOverDuration / (1 + buff.remainingDuration / damageInterval)
|
|
227
|
-
source:damageTarget(buff[
|
|
228
|
-
buff[
|
|
293
|
+
source:damageTarget(buff[101], damage)
|
|
294
|
+
buff[113] = remainingDamageOverDuration - damage
|
|
229
295
|
end
|
|
230
296
|
end
|
|
231
|
-
local damagePerInterval = buff[
|
|
297
|
+
local damagePerInterval = buff[111] or 0
|
|
232
298
|
if remainingDamageOverDuration == 0 or damagePerInterval ~= 0 then
|
|
233
|
-
source:damageTarget(buff[
|
|
299
|
+
source:damageTarget(buff[101], damagePerInterval)
|
|
234
300
|
end
|
|
235
301
|
end
|
|
236
302
|
local function buffHealingIntervalInitialTimerCallback(buff)
|
|
237
303
|
buffHealingIntervalTimerCallback(buff)
|
|
238
|
-
local timer = buff[
|
|
239
|
-
local healingInterval = buff[
|
|
304
|
+
local timer = buff[119]
|
|
305
|
+
local healingInterval = buff[117]
|
|
240
306
|
if timer ~= nil and healingInterval ~= nil and healingInterval > 0 then
|
|
241
307
|
timer:start(healingInterval, true, buffHealingIntervalTimerCallback, buff)
|
|
242
308
|
end
|
|
243
309
|
end
|
|
244
310
|
buffHealingIntervalTimerCallback = function(buff)
|
|
245
|
-
if buff[
|
|
311
|
+
if buff[117] ~= buff[112] then
|
|
246
312
|
buff:flashSpecialEffect()
|
|
247
313
|
end
|
|
248
|
-
local source = buff[
|
|
249
|
-
local remainingHealingOverDuration = buff[
|
|
314
|
+
local source = buff[102] or buff[101]
|
|
315
|
+
local remainingHealingOverDuration = buff[118] or 0
|
|
250
316
|
if remainingHealingOverDuration ~= 0 then
|
|
251
|
-
local healingInterval = buff[
|
|
317
|
+
local healingInterval = buff[117] or 0
|
|
252
318
|
if healingInterval ~= 0 then
|
|
253
319
|
local healing = remainingHealingOverDuration / (1 + buff.remainingDuration / healingInterval)
|
|
254
|
-
source:healTarget(buff[
|
|
255
|
-
buff[
|
|
320
|
+
source:healTarget(buff[101], healing)
|
|
321
|
+
buff[118] = remainingHealingOverDuration - healing
|
|
256
322
|
end
|
|
257
323
|
end
|
|
258
|
-
local healingPerInterval = buff[
|
|
324
|
+
local healingPerInterval = buff[116] or 0
|
|
259
325
|
if remainingHealingOverDuration == 0 or healingPerInterval ~= 0 then
|
|
260
|
-
source:healTarget(buff[
|
|
326
|
+
source:healTarget(buff[101], healingPerInterval)
|
|
261
327
|
end
|
|
262
328
|
end
|
|
329
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
330
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
263
331
|
____exports.Buff = __TS__Class()
|
|
264
332
|
local Buff = ____exports.Buff
|
|
265
333
|
Buff.name = "Buff"
|
|
@@ -268,40 +336,44 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
268
336
|
UnitBehavior.prototype.____constructor(self, _unit)
|
|
269
337
|
self._unit = _unit
|
|
270
338
|
self.parameters = nil
|
|
271
|
-
self[100] =
|
|
339
|
+
self[100] = 0
|
|
340
|
+
self[101] = _unit
|
|
272
341
|
local typeId
|
|
273
342
|
local polarity
|
|
274
343
|
local resistanceType
|
|
275
344
|
local ability
|
|
345
|
+
local abilityBehavior
|
|
276
346
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
277
347
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
278
348
|
polarity = resistanceTypeOrPolarity
|
|
279
349
|
resistanceType = abilityOrParametersOrResistanceType
|
|
280
|
-
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
|
|
281
354
|
ability = parametersOrAbility
|
|
282
|
-
|
|
283
|
-
ability = nil
|
|
355
|
+
elseif parametersOrAbility ~= nil then
|
|
284
356
|
parameters = parametersOrAbility
|
|
285
357
|
end
|
|
286
358
|
else
|
|
287
359
|
typeId = typeIdOrTypeIds
|
|
288
360
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
289
361
|
resistanceType = resistanceTypeOrPolarity
|
|
290
|
-
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
|
|
291
367
|
ability = abilityOrParametersOrResistanceType
|
|
292
368
|
parameters = parametersOrAbility
|
|
293
|
-
|
|
294
|
-
ability = nil
|
|
369
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
295
370
|
parameters = abilityOrParametersOrResistanceType
|
|
371
|
+
else
|
|
372
|
+
parameters = parametersOrAbility
|
|
296
373
|
end
|
|
297
374
|
end
|
|
375
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
298
376
|
self.typeId = typeId
|
|
299
|
-
self.polarity = polarity
|
|
300
|
-
self.resistanceType = resistanceType
|
|
301
|
-
if not __TS__InstanceOf(ability, Ability) then
|
|
302
|
-
parameters = ability
|
|
303
|
-
ability = nil
|
|
304
|
-
end
|
|
305
377
|
local defaultParameters = self.constructor.defaultParameters
|
|
306
378
|
local level = parameters and parameters.level or defaultParameters.level
|
|
307
379
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -324,14 +396,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
324
396
|
learnLevelMinimum = learnLevelMinimum or ability:getField(ABILITY_IF_REQUIRED_LEVEL)
|
|
325
397
|
duration = duration or getAbilityDuration(ability, _unit)
|
|
326
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
|
|
327
406
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
328
407
|
if buffByTypeId == nil then
|
|
329
408
|
buffByTypeId = {}
|
|
330
409
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
331
410
|
end
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
411
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
412
|
+
local ____opt_15 = self.previousBuff
|
|
413
|
+
if ____opt_15 ~= nil then
|
|
414
|
+
____opt_15:destroy()
|
|
335
415
|
end
|
|
336
416
|
local uniqueGroup = parameters and parameters.uniqueGroup or defaultParameters and defaultParameters.uniqueGroup
|
|
337
417
|
if uniqueGroup ~= nil then
|
|
@@ -340,18 +420,21 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
340
420
|
if not internalApplyBuff(
|
|
341
421
|
_unit,
|
|
342
422
|
typeId,
|
|
343
|
-
polarity,
|
|
344
|
-
resistanceType,
|
|
423
|
+
self.polarity,
|
|
424
|
+
self.resistanceType,
|
|
345
425
|
level,
|
|
346
426
|
duration,
|
|
347
427
|
spellStealPriority,
|
|
348
|
-
learnLevelMinimum
|
|
428
|
+
learnLevelMinimum,
|
|
429
|
+
missProbability
|
|
349
430
|
) then
|
|
431
|
+
self[100] = 1
|
|
350
432
|
UnitBehavior.prototype.destroy(self)
|
|
351
433
|
error(unsuccessfulApplicationMarker, 0)
|
|
352
434
|
end
|
|
353
435
|
local handle = BlzGetUnitAbility(_unit.handle, typeId)
|
|
354
436
|
if handle == nil then
|
|
437
|
+
self[100] = 1
|
|
355
438
|
UnitBehavior.prototype.destroy(self)
|
|
356
439
|
error(unsuccessfulApplicationMarker, 0)
|
|
357
440
|
end
|
|
@@ -360,20 +443,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
360
443
|
self._level = level
|
|
361
444
|
self._spellStealPriority = spellStealPriority
|
|
362
445
|
self._learnLevelMinimum = learnLevelMinimum
|
|
363
|
-
self[
|
|
364
|
-
self[
|
|
365
|
-
self[
|
|
366
|
-
self[
|
|
367
|
-
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)
|
|
368
451
|
if parameters ~= nil or (next(defaultParameters)) ~= nil then
|
|
369
452
|
for ____, buffBooleanParameter in ipairs(buffBooleanParameters) do
|
|
370
|
-
local
|
|
371
|
-
local
|
|
372
|
-
local
|
|
373
|
-
if
|
|
374
|
-
|
|
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]
|
|
375
458
|
end
|
|
376
|
-
if resolveBooleanValue(
|
|
459
|
+
if resolveBooleanValue(____ability_24, ____level_25, ____temp_23) then
|
|
377
460
|
self[buffBooleanParameter] = true
|
|
378
461
|
end
|
|
379
462
|
end
|
|
@@ -389,11 +472,11 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
389
472
|
end
|
|
390
473
|
local maximumDuration = parameters and parameters.maximumDuration or defaultParameters.maximumDuration
|
|
391
474
|
if maximumDuration ~= nil then
|
|
392
|
-
self[
|
|
475
|
+
self[108] = resolveNumberValue(ability, level, maximumDuration)
|
|
393
476
|
end
|
|
394
477
|
local maximumRemainingDuration = parameters and parameters.maximumRemainingDuration or defaultParameters.maximumRemainingDuration
|
|
395
478
|
if maximumRemainingDuration ~= nil then
|
|
396
|
-
self[
|
|
479
|
+
self[109] = resolveNumberValue(ability, level, maximumRemainingDuration)
|
|
397
480
|
end
|
|
398
481
|
local parametersAbilityTypeIds = parameters and parameters.abilityTypeIds or defaultParameters.abilityTypeIds
|
|
399
482
|
if parametersAbilityTypeIds ~= nil then
|
|
@@ -402,24 +485,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
402
485
|
abilityTypeIds = {}
|
|
403
486
|
self._abilityTypeIds = abilityTypeIds
|
|
404
487
|
end
|
|
405
|
-
for
|
|
488
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
489
|
+
local abilityParameters = checkNotNull(parametersAbilityTypeIds[abilityTypeId])
|
|
406
490
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
407
491
|
if addedAbility ~= nil then
|
|
408
492
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
409
493
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
413
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
414
|
-
end
|
|
415
|
-
elseif abilityParameterKey ~= "level" then
|
|
416
|
-
abilityParameterKey:setValue(
|
|
417
|
-
addedAbility,
|
|
418
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
419
|
-
)
|
|
420
|
-
end
|
|
494
|
+
if abilityParameters.isButtonVisible == false then
|
|
495
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
421
496
|
end
|
|
422
|
-
|
|
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
|
|
423
504
|
end
|
|
424
505
|
end
|
|
425
506
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -431,18 +512,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
431
512
|
self._behaviors = behaviors
|
|
432
513
|
end
|
|
433
514
|
end
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
if
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
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
|
|
441
524
|
end
|
|
442
525
|
end
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
526
|
+
if (next(additionalParameters)) ~= nil then
|
|
527
|
+
self.parameters = additionalParameters
|
|
528
|
+
end
|
|
446
529
|
end
|
|
447
530
|
end
|
|
448
531
|
if duration ~= nil and duration > 0 then
|
|
@@ -450,77 +533,101 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
450
533
|
timer:start(duration, false, expireBuff, self)
|
|
451
534
|
self._timer = timer
|
|
452
535
|
end
|
|
536
|
+
self:onCreate()
|
|
537
|
+
self[100] = 1
|
|
538
|
+
Event.invoke(buffCreatedEvent, self)
|
|
453
539
|
end
|
|
454
|
-
function Buff.prototype.
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
local bonusIdByBonusType = self._bonusIdByBonusType
|
|
461
|
-
if bonusIdByBonusType == nil then
|
|
462
|
-
bonusIdByBonusType = {}
|
|
463
|
-
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
|
|
464
546
|
end
|
|
465
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
466
547
|
end
|
|
467
|
-
function Buff.prototype.
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
474
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
475
|
-
)
|
|
476
|
-
local ____isWidgetProvided_38
|
|
477
|
-
if isWidgetProvided then
|
|
478
|
-
____isWidgetProvided_38 = duration
|
|
479
|
-
else
|
|
480
|
-
____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
|
|
481
554
|
end
|
|
482
|
-
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
483
|
-
____Effect_flash_41(
|
|
484
|
-
____Effect_40,
|
|
485
|
-
__TS__SparseArraySpread(____array_39)
|
|
486
|
-
)
|
|
487
555
|
end
|
|
488
|
-
function Buff.prototype.
|
|
489
|
-
|
|
490
|
-
local ____Effect_44 = Effect
|
|
491
|
-
local ____Effect_flash_45 = Effect.flash
|
|
492
|
-
local ____array_43 = __TS__SparseArrayNew(
|
|
556
|
+
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
557
|
+
self:flash(
|
|
493
558
|
self[105],
|
|
494
|
-
|
|
495
|
-
|
|
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
|
|
496
572
|
)
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
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)
|
|
500
577
|
else
|
|
501
|
-
|
|
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
|
+
)
|
|
502
593
|
end
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
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)
|
|
508
613
|
end
|
|
509
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
|
|
510
617
|
local unit = self._unit
|
|
511
618
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
512
619
|
removeBuff(unit.handle, self.typeId)
|
|
513
620
|
end
|
|
514
621
|
buffByTypeIdByUnit[unit][self.typeId] = nil
|
|
515
|
-
local healingIntervalTimer = self[
|
|
622
|
+
local healingIntervalTimer = self[119]
|
|
516
623
|
if healingIntervalTimer ~= nil then
|
|
517
624
|
healingIntervalTimer:destroy()
|
|
518
|
-
self[
|
|
625
|
+
self[119] = nil
|
|
519
626
|
end
|
|
520
|
-
local damageIntervalTimer = self[
|
|
627
|
+
local damageIntervalTimer = self[114]
|
|
521
628
|
if damageIntervalTimer ~= nil then
|
|
522
629
|
damageIntervalTimer:destroy()
|
|
523
|
-
self[
|
|
630
|
+
self[114] = nil
|
|
524
631
|
end
|
|
525
632
|
if self._timer ~= nil then
|
|
526
633
|
self._timer:destroy()
|
|
@@ -530,25 +637,34 @@ function Buff.prototype.onDestroy(self)
|
|
|
530
637
|
behavior:destroy()
|
|
531
638
|
end
|
|
532
639
|
end
|
|
533
|
-
|
|
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
|
|
534
650
|
unit:decrementDisableAutoAttackCounter()
|
|
535
651
|
end
|
|
536
|
-
if self[
|
|
537
|
-
if self[
|
|
538
|
-
unit:
|
|
652
|
+
if self[140] then
|
|
653
|
+
if self[141] then
|
|
654
|
+
unit:decrementForceStunCounter()
|
|
539
655
|
end
|
|
540
656
|
unit:decrementStunCounter()
|
|
541
657
|
end
|
|
658
|
+
if self[139] then
|
|
659
|
+
unit:decrementGhostCounter()
|
|
660
|
+
end
|
|
542
661
|
if self._abilityTypeIds ~= nil then
|
|
543
|
-
for abilityTypeId in
|
|
662
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
544
663
|
unit:removeAbility(abilityTypeId)
|
|
545
664
|
end
|
|
546
665
|
end
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
550
|
-
end
|
|
551
|
-
end
|
|
666
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
667
|
+
self[100] = 3
|
|
552
668
|
return UnitBehavior.prototype.onDestroy(self)
|
|
553
669
|
end
|
|
554
670
|
function Buff.apply(self, ...)
|
|
@@ -576,51 +692,95 @@ function Buff.apply(self, ...)
|
|
|
576
692
|
end
|
|
577
693
|
end
|
|
578
694
|
function Buff.getByTypeId(self, unit, typeId)
|
|
579
|
-
local
|
|
580
|
-
local buff =
|
|
695
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
696
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
581
697
|
if __TS__InstanceOf(buff, self) then
|
|
582
698
|
return buff
|
|
583
699
|
end
|
|
584
700
|
return nil
|
|
585
701
|
end
|
|
702
|
+
function Buff.prototype.onDispel(self, source)
|
|
703
|
+
end
|
|
704
|
+
function Buff.prototype.onExpiration(self)
|
|
705
|
+
local unit = self.unit
|
|
706
|
+
if self[120] ~= nil then
|
|
707
|
+
(self[102] or unit):damageTarget(unit, self[120] or 0)
|
|
708
|
+
end
|
|
709
|
+
if self[121] ~= nil then
|
|
710
|
+
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
711
|
+
end
|
|
712
|
+
if self[145] then
|
|
713
|
+
unit:explode()
|
|
714
|
+
elseif self[144] then
|
|
715
|
+
unit:kill()
|
|
716
|
+
end
|
|
717
|
+
end
|
|
586
718
|
function Buff.prototype.onDeath(self, source)
|
|
587
719
|
local unit = self.unit
|
|
588
|
-
if self[
|
|
720
|
+
if self[122] ~= nil then
|
|
589
721
|
damageArea(
|
|
590
|
-
self[
|
|
591
|
-
self[
|
|
722
|
+
self[102] or unit,
|
|
723
|
+
self[122],
|
|
592
724
|
unit.x,
|
|
593
725
|
unit.y,
|
|
594
|
-
self[
|
|
595
|
-
self[120] or 0,
|
|
726
|
+
self[124] or 0,
|
|
596
727
|
self[123] or 0,
|
|
597
|
-
self[
|
|
728
|
+
self[126] or 0,
|
|
598
729
|
self[125] or 0,
|
|
599
|
-
self[
|
|
730
|
+
self[128] or 0,
|
|
731
|
+
self[127] or 0
|
|
600
732
|
)
|
|
601
733
|
end
|
|
602
734
|
end
|
|
603
735
|
function Buff.prototype.onDamageDealt(self, target, event)
|
|
604
736
|
if event.isAttack then
|
|
605
|
-
if self[
|
|
606
|
-
local durationIncrease = self[
|
|
607
|
-
local maximumDuration = self[
|
|
737
|
+
if self[107] ~= nil then
|
|
738
|
+
local durationIncrease = self[107]
|
|
739
|
+
local maximumDuration = self[108] or 0
|
|
608
740
|
if maximumDuration > 0 then
|
|
609
741
|
durationIncrease = min(
|
|
610
742
|
durationIncrease,
|
|
611
|
-
max(0, maximumDuration - self[
|
|
743
|
+
max(0, maximumDuration - self[103])
|
|
612
744
|
)
|
|
613
745
|
end
|
|
614
746
|
local remainingDuration = self.remainingDuration + durationIncrease
|
|
615
|
-
local maximumRemainingDuration = self[
|
|
747
|
+
local maximumRemainingDuration = self[109] or 0
|
|
616
748
|
if maximumRemainingDuration > 0 then
|
|
617
749
|
remainingDuration = min(remainingDuration, maximumRemainingDuration)
|
|
618
750
|
end
|
|
619
751
|
self.remainingDuration = remainingDuration
|
|
620
752
|
end
|
|
621
|
-
local autoAttackCount = (self[
|
|
622
|
-
self[
|
|
623
|
-
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
|
|
624
784
|
self:destroy()
|
|
625
785
|
end
|
|
626
786
|
end
|
|
@@ -630,7 +790,7 @@ __TS__SetDescriptor(
|
|
|
630
790
|
Buff.prototype,
|
|
631
791
|
"source",
|
|
632
792
|
{get = function(self)
|
|
633
|
-
return self[
|
|
793
|
+
return self[102] or self._unit
|
|
634
794
|
end},
|
|
635
795
|
true
|
|
636
796
|
)
|
|
@@ -647,13 +807,13 @@ __TS__SetDescriptor(
|
|
|
647
807
|
"remainingDamageOverDuration",
|
|
648
808
|
{
|
|
649
809
|
get = function(self)
|
|
650
|
-
return self[
|
|
810
|
+
return self[113] or 0
|
|
651
811
|
end,
|
|
652
812
|
set = function(self, remainingDamageOverDuration)
|
|
653
|
-
local remainingDamageOverDurationDelta = remainingDamageOverDuration - (self[
|
|
654
|
-
self[
|
|
655
|
-
local damageOverDuration = (self[
|
|
656
|
-
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
|
|
657
817
|
end
|
|
658
818
|
},
|
|
659
819
|
true
|
|
@@ -663,13 +823,13 @@ __TS__SetDescriptor(
|
|
|
663
823
|
"damageOverDuration",
|
|
664
824
|
{
|
|
665
825
|
get = function(self)
|
|
666
|
-
return self[
|
|
826
|
+
return self[110] or 0
|
|
667
827
|
end,
|
|
668
828
|
set = function(self, damageOverDuration)
|
|
669
|
-
local damageOverDurationDelta = damageOverDuration - (self[
|
|
670
|
-
self[
|
|
671
|
-
local remainingDamageOverDuration = (self[
|
|
672
|
-
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
|
|
673
833
|
end
|
|
674
834
|
},
|
|
675
835
|
true
|
|
@@ -679,10 +839,10 @@ __TS__SetDescriptor(
|
|
|
679
839
|
"damagePerInterval",
|
|
680
840
|
{
|
|
681
841
|
get = function(self)
|
|
682
|
-
return self[
|
|
842
|
+
return self[111] or 0
|
|
683
843
|
end,
|
|
684
844
|
set = function(self, damagePerInterval)
|
|
685
|
-
self[
|
|
845
|
+
self[111] = damagePerInterval ~= 0 and damagePerInterval or nil
|
|
686
846
|
end
|
|
687
847
|
},
|
|
688
848
|
true
|
|
@@ -692,25 +852,25 @@ __TS__SetDescriptor(
|
|
|
692
852
|
"damageInterval",
|
|
693
853
|
{
|
|
694
854
|
get = function(self)
|
|
695
|
-
return self[
|
|
855
|
+
return self[112] or 0
|
|
696
856
|
end,
|
|
697
857
|
set = function(self, damageInterval)
|
|
698
858
|
if damageInterval <= 0 then
|
|
699
|
-
self[
|
|
700
|
-
local timer = self[
|
|
859
|
+
self[112] = damageInterval ~= 0 and damageInterval or nil
|
|
860
|
+
local timer = self[114]
|
|
701
861
|
if timer ~= nil then
|
|
702
862
|
timer:destroy()
|
|
703
|
-
self[
|
|
863
|
+
self[114] = nil
|
|
704
864
|
end
|
|
705
865
|
return
|
|
706
866
|
end
|
|
707
|
-
self[
|
|
708
|
-
local
|
|
709
|
-
local elapsed =
|
|
710
|
-
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]
|
|
711
871
|
if timer == nil then
|
|
712
872
|
timer = Timer:create()
|
|
713
|
-
self[
|
|
873
|
+
self[114] = timer
|
|
714
874
|
end
|
|
715
875
|
local initialDelay = damageInterval - (elapsed >= damageInterval and math.fmod(elapsed, damageInterval) or elapsed)
|
|
716
876
|
if initialDelay == damageInterval then
|
|
@@ -727,13 +887,13 @@ __TS__SetDescriptor(
|
|
|
727
887
|
"remainingHealingOverDuration",
|
|
728
888
|
{
|
|
729
889
|
get = function(self)
|
|
730
|
-
return self[
|
|
890
|
+
return self[118] or 0
|
|
731
891
|
end,
|
|
732
892
|
set = function(self, remainingHealingOverDuration)
|
|
733
|
-
local remainingHealingOverDurationDelta = remainingHealingOverDuration - (self[
|
|
734
|
-
self[
|
|
735
|
-
local healingOverDuration = (self[
|
|
736
|
-
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
|
|
737
897
|
end
|
|
738
898
|
},
|
|
739
899
|
true
|
|
@@ -743,13 +903,13 @@ __TS__SetDescriptor(
|
|
|
743
903
|
"healingOverDuration",
|
|
744
904
|
{
|
|
745
905
|
get = function(self)
|
|
746
|
-
return self[
|
|
906
|
+
return self[115] or 0
|
|
747
907
|
end,
|
|
748
908
|
set = function(self, healingOverDuration)
|
|
749
|
-
local healingOverDurationDelta = healingOverDuration - (self[
|
|
750
|
-
self[
|
|
751
|
-
local remainingHealingOverDuration = (self[
|
|
752
|
-
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
|
|
753
913
|
end
|
|
754
914
|
},
|
|
755
915
|
true
|
|
@@ -759,10 +919,10 @@ __TS__SetDescriptor(
|
|
|
759
919
|
"healingPerInterval",
|
|
760
920
|
{
|
|
761
921
|
get = function(self)
|
|
762
|
-
return self[
|
|
922
|
+
return self[116] or 0
|
|
763
923
|
end,
|
|
764
924
|
set = function(self, healingPerInterval)
|
|
765
|
-
self[
|
|
925
|
+
self[116] = healingPerInterval ~= 0 and healingPerInterval or nil
|
|
766
926
|
end
|
|
767
927
|
},
|
|
768
928
|
true
|
|
@@ -772,25 +932,25 @@ __TS__SetDescriptor(
|
|
|
772
932
|
"healingInterval",
|
|
773
933
|
{
|
|
774
934
|
get = function(self)
|
|
775
|
-
return self[
|
|
935
|
+
return self[117] or 0
|
|
776
936
|
end,
|
|
777
937
|
set = function(self, healingInterval)
|
|
778
938
|
if healingInterval <= 0 then
|
|
779
|
-
self[
|
|
780
|
-
local timer = self[
|
|
939
|
+
self[117] = healingInterval ~= 0 and healingInterval or nil
|
|
940
|
+
local timer = self[119]
|
|
781
941
|
if timer ~= nil then
|
|
782
942
|
timer:destroy()
|
|
783
|
-
self[
|
|
943
|
+
self[119] = nil
|
|
784
944
|
end
|
|
785
945
|
return
|
|
786
946
|
end
|
|
787
|
-
self[
|
|
788
|
-
local
|
|
789
|
-
local elapsed =
|
|
790
|
-
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]
|
|
791
951
|
if timer == nil then
|
|
792
952
|
timer = Timer:create()
|
|
793
|
-
self[
|
|
953
|
+
self[119] = timer
|
|
794
954
|
end
|
|
795
955
|
local initialDelay = healingInterval - (elapsed >= healingInterval and math.fmod(elapsed, healingInterval) or elapsed)
|
|
796
956
|
if initialDelay == healingInterval then
|
|
@@ -802,6 +962,45 @@ __TS__SetDescriptor(
|
|
|
802
962
|
},
|
|
803
963
|
true
|
|
804
964
|
)
|
|
965
|
+
__TS__SetDescriptor(
|
|
966
|
+
Buff.prototype,
|
|
967
|
+
"damageOnExpiration",
|
|
968
|
+
{
|
|
969
|
+
get = function(self)
|
|
970
|
+
return self[120] or 0
|
|
971
|
+
end,
|
|
972
|
+
set = function(self, damageOnExpiration)
|
|
973
|
+
self[120] = damageOnExpiration ~= 0 and damageOnExpiration or nil
|
|
974
|
+
end
|
|
975
|
+
},
|
|
976
|
+
true
|
|
977
|
+
)
|
|
978
|
+
__TS__SetDescriptor(
|
|
979
|
+
Buff.prototype,
|
|
980
|
+
"healingOnExpiration",
|
|
981
|
+
{
|
|
982
|
+
get = function(self)
|
|
983
|
+
return self[121] or 0
|
|
984
|
+
end,
|
|
985
|
+
set = function(self, healingOnExpiration)
|
|
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)
|
|
1000
|
+
end
|
|
1001
|
+
},
|
|
1002
|
+
true
|
|
1003
|
+
)
|
|
805
1004
|
__TS__SetDescriptor(
|
|
806
1005
|
Buff.prototype,
|
|
807
1006
|
"receivedDamageFactor",
|
|
@@ -828,30 +1027,79 @@ __TS__SetDescriptor(
|
|
|
828
1027
|
},
|
|
829
1028
|
true
|
|
830
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
|
+
)
|
|
831
1079
|
__TS__SetDescriptor(
|
|
832
1080
|
Buff.prototype,
|
|
833
1081
|
"stuns",
|
|
834
1082
|
{
|
|
835
1083
|
get = function(self)
|
|
836
|
-
local
|
|
837
|
-
if
|
|
838
|
-
|
|
1084
|
+
local ____self__140_50 = self[140]
|
|
1085
|
+
if ____self__140_50 == nil then
|
|
1086
|
+
____self__140_50 = false
|
|
839
1087
|
end
|
|
840
|
-
return
|
|
1088
|
+
return ____self__140_50
|
|
841
1089
|
end,
|
|
842
1090
|
set = function(self, stuns)
|
|
843
|
-
if not stuns and self[
|
|
844
|
-
if self[
|
|
845
|
-
self.object:
|
|
1091
|
+
if not stuns and self[140] then
|
|
1092
|
+
if self[141] then
|
|
1093
|
+
self.object:decrementForceStunCounter()
|
|
846
1094
|
end
|
|
847
1095
|
self.object:decrementStunCounter()
|
|
848
|
-
self[
|
|
849
|
-
elseif stuns and not self[
|
|
850
|
-
if self[
|
|
851
|
-
self.object:
|
|
1096
|
+
self[140] = nil
|
|
1097
|
+
elseif stuns and not self[140] then
|
|
1098
|
+
if self[141] then
|
|
1099
|
+
self.object:incrementForceStunCounter()
|
|
852
1100
|
end
|
|
853
1101
|
self.object:incrementStunCounter()
|
|
854
|
-
self[
|
|
1102
|
+
self[140] = true
|
|
855
1103
|
end
|
|
856
1104
|
end
|
|
857
1105
|
},
|
|
@@ -862,23 +1110,23 @@ __TS__SetDescriptor(
|
|
|
862
1110
|
"ignoresStunImmunity",
|
|
863
1111
|
{
|
|
864
1112
|
get = function(self)
|
|
865
|
-
local
|
|
866
|
-
if
|
|
867
|
-
|
|
1113
|
+
local ____self__141_51 = self[141]
|
|
1114
|
+
if ____self__141_51 == nil then
|
|
1115
|
+
____self__141_51 = false
|
|
868
1116
|
end
|
|
869
|
-
return
|
|
1117
|
+
return ____self__141_51
|
|
870
1118
|
end,
|
|
871
1119
|
set = function(self, ignoresStunImmunity)
|
|
872
|
-
if not ignoresStunImmunity and self[
|
|
873
|
-
if self[
|
|
874
|
-
self.object:
|
|
1120
|
+
if not ignoresStunImmunity and self[141] then
|
|
1121
|
+
if self[140] then
|
|
1122
|
+
self.object:decrementForceStunCounter()
|
|
875
1123
|
end
|
|
876
|
-
self[
|
|
877
|
-
elseif ignoresStunImmunity and not self[
|
|
878
|
-
if self[
|
|
879
|
-
self.object:
|
|
1124
|
+
self[141] = nil
|
|
1125
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1126
|
+
if self[140] then
|
|
1127
|
+
self.object:incrementForceStunCounter()
|
|
880
1128
|
end
|
|
881
|
-
self[
|
|
1129
|
+
self[141] = true
|
|
882
1130
|
end
|
|
883
1131
|
end
|
|
884
1132
|
},
|
|
@@ -889,19 +1137,19 @@ __TS__SetDescriptor(
|
|
|
889
1137
|
"disablesAutoAttack",
|
|
890
1138
|
{
|
|
891
1139
|
get = function(self)
|
|
892
|
-
local
|
|
893
|
-
if
|
|
894
|
-
|
|
1140
|
+
local ____self__142_52 = self[142]
|
|
1141
|
+
if ____self__142_52 == nil then
|
|
1142
|
+
____self__142_52 = false
|
|
895
1143
|
end
|
|
896
|
-
return
|
|
1144
|
+
return ____self__142_52
|
|
897
1145
|
end,
|
|
898
1146
|
set = function(self, disablesAutoAttack)
|
|
899
|
-
if not disablesAutoAttack and self[
|
|
1147
|
+
if not disablesAutoAttack and self[142] then
|
|
900
1148
|
self.object:decrementDisableAutoAttackCounter()
|
|
901
|
-
self[
|
|
902
|
-
elseif disablesAutoAttack and not self[
|
|
1149
|
+
self[142] = nil
|
|
1150
|
+
elseif disablesAutoAttack and not self[142] then
|
|
903
1151
|
self.object:incrementDisableAutoAttackCounter()
|
|
904
|
-
self[
|
|
1152
|
+
self[142] = true
|
|
905
1153
|
end
|
|
906
1154
|
end
|
|
907
1155
|
},
|
|
@@ -912,19 +1160,95 @@ __TS__SetDescriptor(
|
|
|
912
1160
|
"providesInvulnerability",
|
|
913
1161
|
{
|
|
914
1162
|
get = function(self)
|
|
915
|
-
local
|
|
916
|
-
if
|
|
917
|
-
|
|
1163
|
+
local ____self__143_53 = self[143]
|
|
1164
|
+
if ____self__143_53 == nil then
|
|
1165
|
+
____self__143_53 = false
|
|
918
1166
|
end
|
|
919
|
-
return
|
|
1167
|
+
return ____self__143_53
|
|
920
1168
|
end,
|
|
921
1169
|
set = function(self, providesInvulnerability)
|
|
922
|
-
if not providesInvulnerability and self[
|
|
1170
|
+
if not providesInvulnerability and self[143] then
|
|
923
1171
|
self.object:decrementInvulnerabilityCounter()
|
|
924
|
-
self[
|
|
925
|
-
elseif providesInvulnerability and not self[
|
|
1172
|
+
self[143] = nil
|
|
1173
|
+
elseif providesInvulnerability and not self[143] then
|
|
926
1174
|
self.object:incrementInvulnerabilityCounter()
|
|
927
|
-
self[
|
|
1175
|
+
self[143] = true
|
|
1176
|
+
end
|
|
1177
|
+
end
|
|
1178
|
+
},
|
|
1179
|
+
true
|
|
1180
|
+
)
|
|
1181
|
+
__TS__SetDescriptor(
|
|
1182
|
+
Buff.prototype,
|
|
1183
|
+
"killsOnExpiration",
|
|
1184
|
+
{
|
|
1185
|
+
get = function(self)
|
|
1186
|
+
local ____self__144_54 = self[144]
|
|
1187
|
+
if ____self__144_54 == nil then
|
|
1188
|
+
____self__144_54 = false
|
|
1189
|
+
end
|
|
1190
|
+
return ____self__144_54
|
|
1191
|
+
end,
|
|
1192
|
+
set = function(self, killsOnExpiration)
|
|
1193
|
+
if not killsOnExpiration and self[144] then
|
|
1194
|
+
self[144] = nil
|
|
1195
|
+
elseif killsOnExpiration and not self[144] then
|
|
1196
|
+
self[144] = true
|
|
1197
|
+
end
|
|
1198
|
+
end
|
|
1199
|
+
},
|
|
1200
|
+
true
|
|
1201
|
+
)
|
|
1202
|
+
__TS__SetDescriptor(
|
|
1203
|
+
Buff.prototype,
|
|
1204
|
+
"explodesOnExpiration",
|
|
1205
|
+
{
|
|
1206
|
+
get = function(self)
|
|
1207
|
+
local ____self__145_55 = self[145]
|
|
1208
|
+
if ____self__145_55 == nil then
|
|
1209
|
+
____self__145_55 = false
|
|
1210
|
+
end
|
|
1211
|
+
return ____self__145_55
|
|
1212
|
+
end,
|
|
1213
|
+
set = function(self, killsOnExpiration)
|
|
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
|
|
928
1252
|
end
|
|
929
1253
|
end
|
|
930
1254
|
},
|
|
@@ -935,13 +1259,13 @@ __TS__SetDescriptor(
|
|
|
935
1259
|
"maximumAutoAttackCount",
|
|
936
1260
|
{
|
|
937
1261
|
get = function(self)
|
|
938
|
-
return self[
|
|
1262
|
+
return self[130] or 0
|
|
939
1263
|
end,
|
|
940
1264
|
set = function(self, maximumAutoAttackCount)
|
|
941
1265
|
if maximumAutoAttackCount == 0 then
|
|
942
|
-
self[
|
|
1266
|
+
self[130] = nil
|
|
943
1267
|
else
|
|
944
|
-
self[
|
|
1268
|
+
self[130] = maximumAutoAttackCount
|
|
945
1269
|
end
|
|
946
1270
|
end
|
|
947
1271
|
},
|
|
@@ -952,10 +1276,10 @@ __TS__SetDescriptor(
|
|
|
952
1276
|
"durationIncreaseOnAutoAttack",
|
|
953
1277
|
{
|
|
954
1278
|
get = function(self)
|
|
955
|
-
return self[
|
|
1279
|
+
return self[107] or 0
|
|
956
1280
|
end,
|
|
957
1281
|
set = function(self, durationIncreaseOnAutoAttack)
|
|
958
|
-
self[
|
|
1282
|
+
self[107] = durationIncreaseOnAutoAttack
|
|
959
1283
|
end
|
|
960
1284
|
},
|
|
961
1285
|
true
|
|
@@ -986,12 +1310,52 @@ __TS__SetDescriptor(
|
|
|
986
1310
|
},
|
|
987
1311
|
true
|
|
988
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
|
+
)
|
|
989
1339
|
__TS__SetDescriptor(
|
|
990
1340
|
Buff.prototype,
|
|
991
1341
|
"duration",
|
|
992
|
-
{
|
|
993
|
-
|
|
994
|
-
|
|
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
|
+
},
|
|
995
1359
|
true
|
|
996
1360
|
)
|
|
997
1361
|
__TS__SetDescriptor(
|
|
@@ -1007,7 +1371,7 @@ __TS__SetDescriptor(
|
|
|
1007
1371
|
local ____opt_58 = self._timer
|
|
1008
1372
|
local remainingDurationDelta = ____remainingDuration_60 - (____opt_58 and ____opt_58.remaining or 0)
|
|
1009
1373
|
if remainingDurationDelta ~= 0 then
|
|
1010
|
-
self[
|
|
1374
|
+
self[103] = self[103] + remainingDurationDelta
|
|
1011
1375
|
if remainingDuration <= 0 then
|
|
1012
1376
|
Timer:run(destroyBuff, self)
|
|
1013
1377
|
else
|
|
@@ -1019,7 +1383,8 @@ __TS__SetDescriptor(
|
|
|
1019
1383
|
self._level,
|
|
1020
1384
|
remainingDuration,
|
|
1021
1385
|
self._spellStealPriority,
|
|
1022
|
-
self._learnLevelMinimum
|
|
1386
|
+
self._learnLevelMinimum,
|
|
1387
|
+
self[146]
|
|
1023
1388
|
) then
|
|
1024
1389
|
local timer = self._timer
|
|
1025
1390
|
if timer == nil then
|
|
@@ -1033,37 +1398,135 @@ __TS__SetDescriptor(
|
|
|
1033
1398
|
end
|
|
1034
1399
|
},
|
|
1035
1400
|
true
|
|
1036
|
-
)
|
|
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;
|
|
1037
1495
|
(function(self)
|
|
1038
|
-
local function destroyBuffIfNeeded(buff)
|
|
1039
|
-
|
|
1040
|
-
|
|
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
|
|
1041
1504
|
end
|
|
1042
1505
|
end
|
|
1043
|
-
____exports.checkBuff = function(unit, buffTypeId)
|
|
1506
|
+
____exports.checkBuff = function(unit, buffTypeId, isDispel, source)
|
|
1044
1507
|
local buffByTypeId = buffByTypeIdByUnit[unit]
|
|
1045
1508
|
if buffByTypeId ~= nil then
|
|
1046
1509
|
local buff = buffByTypeId[buffTypeId]
|
|
1047
1510
|
if buff ~= nil then
|
|
1048
|
-
destroyBuffIfNeeded(buff)
|
|
1511
|
+
destroyBuffIfNeeded(buff, isDispel, source)
|
|
1049
1512
|
end
|
|
1050
1513
|
end
|
|
1051
1514
|
end
|
|
1052
|
-
____exports.checkBuffs = function(unit)
|
|
1053
|
-
____exports.Buff:forAll(unit, destroyBuffIfNeeded)
|
|
1515
|
+
____exports.checkBuffs = function(unit, isDispel, source)
|
|
1516
|
+
____exports.Buff:forAll(unit, destroyBuffIfNeeded, isDispel, source)
|
|
1054
1517
|
end
|
|
1055
1518
|
Unit.abilityChannelingStartEvent:addListener(
|
|
1056
1519
|
0,
|
|
1057
1520
|
function(caster)
|
|
1058
|
-
____exports.checkBuffs(caster)
|
|
1059
|
-
Timer:run(____exports.checkBuffs, caster)
|
|
1521
|
+
____exports.checkBuffs(caster, true, caster)
|
|
1522
|
+
Timer:run(____exports.checkBuffs, caster, true, caster)
|
|
1060
1523
|
end
|
|
1061
1524
|
)
|
|
1062
1525
|
Unit.abilityUnitTargetChannelingStartEvent:addListener(
|
|
1063
1526
|
0,
|
|
1064
1527
|
function(caster, ability, target)
|
|
1065
|
-
____exports.checkBuffs(target)
|
|
1066
|
-
Timer:run(____exports.checkBuffs, target)
|
|
1528
|
+
____exports.checkBuffs(target, true, caster)
|
|
1529
|
+
Timer:run(____exports.checkBuffs, target, true, caster)
|
|
1067
1530
|
end
|
|
1068
1531
|
)
|
|
1069
1532
|
Unit.abilityPointTargetChannelingStartEvent:addListener(
|
|
@@ -1074,18 +1537,47 @@ __TS__SetDescriptor(
|
|
|
1074
1537
|
y,
|
|
1075
1538
|
ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1076
1539
|
)
|
|
1077
|
-
forEach(units, ____exports.checkBuffs)
|
|
1078
|
-
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
|
|
1079
1565
|
end
|
|
1080
1566
|
)
|
|
1081
1567
|
Unit.onDamage:addListener(
|
|
1082
1568
|
0,
|
|
1083
1569
|
function(source, target)
|
|
1084
1570
|
if source ~= nil then
|
|
1085
|
-
____exports.checkBuffs
|
|
1571
|
+
Timer:run(____exports.checkBuffs, source, false)
|
|
1086
1572
|
end
|
|
1087
|
-
____exports.checkBuffs
|
|
1573
|
+
Timer:run(____exports.checkBuffs, target, false)
|
|
1088
1574
|
end
|
|
1089
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)
|
|
1090
1582
|
end)(Buff)
|
|
1091
1583
|
return ____exports
|