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