Array
(
    [scriptVersion] => 8
    [oeValues] => Array
        (
            [auto] => Array
                (
                )

            [Art] => ReplaceableTextures\CommandButtons\BTNManaRelay.blp
            [dmgplus1] => 0
            [bldtm] => 1
            [goldcost] => 1500
            [unitSound] => ArcaneVault
            [sides1] => 1
            [manaN] => 1000
            [acquire] => 750
            [upgrades] => Array
                (
                )

            [Upgrade] => Array
                (
                )

            [Name] => Leyline Relay
            [weapTp1] => missile
            [MissileHoming] => 1
            [file] => .mdl
            [uberSplat] => YTDG
            [Missileart] => Abilities\Weapons\WingedSerpentMissile\WingedSerpentMissile.mdl
            [Missilespeed] => 1300
            [dice1] => 1
            [RngBuff1] => 250
            [rangeN1] => 750
            [atkType1] => normal
            [cool1] => 4
            [Ubertip] => Controls the flow of magic to redirect mana between Arcane towers.
            [scaleBull] => 0
            [abilList] => Array
                (
                )

            [buildingShadow] => Array
                (
                )

            [targs1] => Array
                (
                )

            [teamColor] => 1
        )

    [settings] => Array
        (
            [balanceTip] => Array
                (
                )

            [abil_factor] => 0
            [author] => Ashbringer
            [alpha] => 0
            [authorDisplay] => |cffff6600Ashbringer|r
            [version] => 1.0
            [element] => arcane
            [rarity] => unique
        )

    [effects] => Array
        (
            [0] => Array
                (
                    [x] => -43.0056
                    [y] => -42.8818
                    [z] => -6.4
                    [scale] => 0.2
                    [rot] => 0.785398
                    [file] => war3mapImported\Square_Column.mdl
                    [red] => 15
                    [green] => 15
                    [blue] => 115
                    [alpha] => 255
                    [pitch] => -0.78
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [1] => Array
                (
                    [x] => 43.0542
                    [y] => -42.8549
                    [z] => -6.4
                    [scale] => 0.2
                    [rot] => 2.3562
                    [file] => war3mapImported\Square_Column.mdl
                    [red] => 15
                    [green] => 15
                    [blue] => 115
                    [alpha] => 255
                    [pitch] => -0.78
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [2] => Array
                (
                    [x] => 43.0529
                    [y] => 43.1274
                    [z] => -6.4
                    [scale] => 0.2
                    [rot] => 3.92699
                    [file] => war3mapImported\Square_Column.mdl
                    [red] => 15
                    [green] => 15
                    [blue] => 115
                    [alpha] => 255
                    [pitch] => -0.78
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [3] => Array
                (
                    [x] => -43.1005
                    [y] => 42.842
                    [z] => -6.4
                    [scale] => 0.2
                    [rot] => 5.49779
                    [file] => war3mapImported\Square_Column.mdl
                    [red] => 15
                    [green] => 15
                    [blue] => 115
                    [alpha] => 255
                    [pitch] => -0.78
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [4] => Array
                (
                    [x] => -0.00278555
                    [y] => 0.0773668
                    [z] => 38.4
                    [scale] => 0.25
                    [rot] => 3.92699
                    [file] => Doodads\Cityscape\Structures\City_LowWall_TallEndCap\City_LowWall_TallEndCap.mdl
                    [red] => 45
                    [green] => 15
                    [blue] => 115
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [5] => Array
                (
                    [x] => -0.636699
                    [y] => -20.9318
                    [z] => 0.000000953674
                    [scale] => 0.15
                    [rot] => 1.5708
                    [file] => war3mapImported\City_ColumnSemiCircle2.mdl
                    [red] => 45
                    [green] => 15
                    [blue] => 135
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [6] => Array
                (
                    [x] => 0.497456
                    [y] => 20.75
                    [z] => 0.000000953674
                    [scale] => 0.15
                    [rot] => 4.71239
                    [file] => war3mapImported\City_ColumnSemiCircle2.mdl
                    [red] => 45
                    [green] => 15
                    [blue] => 135
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [7] => Array
                (
                    [x] => -0.178532
                    [y] => 0.196396
                    [z] => -12.8
                    [scale] => 1.45
                    [rot] => 6.14356
                    [file] => Abilities\Spells\Other\GeneralAuraTarget\GeneralAuraTarget.mdl
                    [red] => 1
                    [green] => 1
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [8] => Array
                (
                    [x] => -0.212805
                    [y] => -13.6809
                    [z] => 12.8
                    [scale] => 0.15
                    [rot] => 1.5708
                    [file] => war3mapImported\City_ColumnSemiCircle2.mdl
                    [red] => 45
                    [green] => 15
                    [blue] => 135
                    [alpha] => 255
                    [pitch] => -0.78
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [9] => Array
                (
                    [x] => 0.337816
                    [y] => 13.8471
                    [z] => 12.8
                    [scale] => 0.15
                    [rot] => 4.71239
                    [file] => war3mapImported\City_ColumnSemiCircle2.mdl
                    [red] => 45
                    [green] => 15
                    [blue] => 135
                    [alpha] => 255
                    [pitch] => -0.78
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [10] => Array
                (
                    [x] => 40.9183
                    [y] => -41.1174
                    [z] => 0
                    [scale] => 0.2
                    [rot] => 3.92699
                    [file] => Doodads\Cityscape\Structures\City_LowWall_TallEndCap\City_LowWall_TallEndCap.mdl
                    [red] => 45
                    [green] => 15
                    [blue] => 115
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [11] => Array
                (
                    [x] => -40.981
                    [y] => -41.085
                    [z] => 0
                    [scale] => 0.2
                    [rot] => 3.92699
                    [file] => Doodads\Cityscape\Structures\City_LowWall_TallEndCap\City_LowWall_TallEndCap.mdl
                    [red] => 45
                    [green] => 15
                    [blue] => 115
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [12] => Array
                (
                    [x] => -41.1946
                    [y] => 40.909
                    [z] => 0
                    [scale] => 0.2
                    [rot] => 3.92699
                    [file] => Doodads\Cityscape\Structures\City_LowWall_TallEndCap\City_LowWall_TallEndCap.mdl
                    [red] => 45
                    [green] => 15
                    [blue] => 115
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [13] => Array
                (
                    [x] => 41.0338
                    [y] => 41.061
                    [z] => 0
                    [scale] => 0.2
                    [rot] => 3.92699
                    [file] => Doodads\Cityscape\Structures\City_LowWall_TallEndCap\City_LowWall_TallEndCap.mdl
                    [red] => 45
                    [green] => 15
                    [blue] => 115
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [14] => Array
                (
                    [x] => -0.0952182
                    [y] => 0.184714
                    [z] => 19.2
                    [scale] => 1.75
                    [rot] => 4.81711
                    [file] => Abilities\Weapons\SpiritOfVengeanceMissile\SpiritOfVengeanceMissile.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [15] => Array
                (
                    [x] => -0.0334501
                    [y] => -0.12225
                    [z] => -6.4
                    [scale] => 1.4
                    [rot] => 4.71021
                    [file] => Abilities\Spells\Undead\Possession\PossessionTarget.mdl
                    [red] => 1
                    [green] => 1
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [16] => Array
                (
                    [x] => -0.0477642
                    [y] => 0.0800026
                    [z] => 0
                    [scale] => 1.25
                    [rot] => 3.13615
                    [file] => Abilities\Spells\Undead\Possession\PossessionTarget.mdl
                    [red] => 1
                    [green] => 1
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [17] => Array
                (
                    [x] => 0.0419781
                    [y] => 0.249668
                    [z] => 6.4
                    [scale] => 3
                    [rot] => 1.27409
                    [file] => Abilities\Spells\Human\ManaFlare\ManaFlareTarget.mdl
                    [red] => 115
                    [green] => 115
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [18] => Array
                (
                    [x] => -0.0809763
                    [y] => 0.12152
                    [z] => -12.8
                    [scale] => 1.15
                    [rot] => 2.87055
                    [file] => Abilities\Spells\Undead\Possession\PossessionTarget.mdl
                    [red] => 1
                    [green] => 1
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [19] => Array
                (
                    [x] => -0.0460696
                    [y] => 0.106506
                    [z] => 25.6
                    [scale] => 0.9
                    [rot] => 0.175136
                    [file] => Abilities\Spells\Undead\Possession\PossessionTarget.mdl
                    [red] => 1
                    [green] => 1
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [20] => Array
                (
                    [x] => -40.0097
                    [y] => -40.0881
                    [z] => 25.6
                    [scale] => 0.26
                    [rot] => 0.783264
                    [file] => Doodads\Cinematic\GlowingRunes\GlowingRunes4.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [21] => Array
                (
                    [x] => 41.3754
                    [y] => -40.0101
                    [z] => 25.6
                    [scale] => 0.26
                    [rot] => 2.39378
                    [file] => Doodads\Cinematic\GlowingRunes\GlowingRunes4.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [22] => Array
                (
                    [x] => 41.1333
                    [y] => 40.6299
                    [z] => 25.6
                    [scale] => 0.26
                    [rot] => 3.9239
                    [file] => Doodads\Cinematic\GlowingRunes\GlowingRunes4.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [23] => Array
                (
                    [x] => -41.011
                    [y] => 39.947
                    [z] => 25.6
                    [scale] => 0.26
                    [rot] => 5.49013
                    [file] => Doodads\Cinematic\GlowingRunes\GlowingRunes4.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [24] => Array
                (
                    [x] => -0.0757366
                    [y] => -0.0166935
                    [z] => 89.6
                    [scale] => 0.8
                    [rot] => 2.42601
                    [file] => Abilities\Weapons\SpiritOfVengeanceMissile\SpiritOfVengeanceMissile.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [25] => Array
                (
                    [x] => -13.8113
                    [y] => 0.343159
                    [z] => 12.8
                    [scale] => 0.15
                    [rot] => 0.000000119209
                    [file] => war3mapImported\City_ColumnSemiCircle2.mdl
                    [red] => 45
                    [green] => 15
                    [blue] => 135
                    [alpha] => 255
                    [pitch] => -0.78
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

            [26] => Array
                (
                    [x] => 13.7167
                    [y] => -0.207462
                    [z] => 12.8
                    [scale] => 0.15
                    [rot] => 3.14159
                    [file] => war3mapImported\City_ColumnSemiCircle2.mdl
                    [red] => 45
                    [green] => 15
                    [blue] => 135
                    [alpha] => 255
                    [pitch] => -0.78
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                    [pcolor] => 255
                )

        )

    [dmgTable] => Array
        (
        )

    [triggers] => Array
        (
            [0] => Array
                (
                    [name] => Header
                    [code] => globals
    endglobals
    
    struct ashbringer_relay
        Tower tower
        Effect fx
        Lightning l
        boolean active = false
        string in_out
        
        method cleanup takes nothing returns nothing
            set .tower = 0
            set .active = false
            if .fx != 0 then
                call .fx.destroy()
            endif
            if .l != 0 then
                call .l.destroy()
            endif
        endmethod
    endstruct
    
    function ashbringer_relay_update takes Tower tower returns nothing
        local real mana_perc = GetUnitState(tower.getUnit(), UNIT_STATE_MANA) / GetUnitState(tower.getUnit(), UNIT_STATE_MAX_MANA)
        local real diff = (mana_perc - tower.userReal)
        
        if diff > 0 then
            call tower.subtractManaPerc(diff * 0.9, true)
        elseif diff < 0 then
            call tower.addManaPerc(-diff * 0.9)
        endif
        set tower.userReal = tower.userReal + (diff * (1 - 0.9))
    endfunction
    
    function ashbringer_relay_input_apply takes Tower tower, Tower target returns nothing
        local Playor playor = tower.getOwner()
        local ashbringer_relay input = tower.userInt
        local ashbringer_relay output = tower.userInt2
        local real target_z = 30
        
        if target == output.tower then
            call playor.displayText("|cffFF0000Cannot target the Output tower.|r")
            call playor.playSound(snd_error)
        elseif target.getElement() != Element.ARCANE then
            call playor.displayText("|cffFF0000Can only target |r|cFFFF77FFArcane|r|cffFF0000 towers.|r")
            call playor.playSound(snd_error)
        elseif target == input.tower then
            call input.cleanup()
        elseif target.getOwner() != playor then
            call playor.displayText("|cffFF0000Can only target towers you own.|r")
            call playor.playSound(snd_error)
        elseif GetUnitState(target.getUnit(), UNIT_STATE_MAX_MANA)<1 then
            call playor.displayText("|cffFF0000Must target a tower that has mana.|r")
            call playor.playSound(snd_error)
        else
            if input.active == true then
                call input.fx.destroy()
                call input.l.destroy()
            endif
            
            set input.tower = target
            
            if target.getTowerType() == tower.getTowerType() then
                set target_z = 95
            endif
            
            set input.active = true
            set input.l = Lightning.createFromPointToPoint("DRAM", tower.getX(), tower.getY(), 95, target.getX(), target.getY(), target_z)
            set input.fx = Effect.createScaled("Abilities\\Spells\\Other\\Drain\\ManaDrainTarget.mdl", target.getX(), target.getY(), target_z-20, 0.0, 1.0)
        endif
        
        set tower.userInt = input
    endfunction
    
    function ashbringer_relay_output_apply takes Tower tower, Tower target returns nothing
        local Playor playor = tower.getOwner()
        local ashbringer_relay input = tower.userInt
        local ashbringer_relay output = tower.userInt2
        local real target_z = 30
        
        if target == input.tower then
            call playor.displayText("|cffFF0000Cannot target the Input tower.|r")
            call playor.playSound(snd_error)
        elseif target.getElement() != Element.ARCANE then
            call playor.displayText("|cffFF0000Can only target |r|cFFFF77FFArcane|r|cffFF0000 towers.|r")
            call playor.playSound(snd_error)
        elseif target == output.tower then
            call output.cleanup()
        elseif target.getOwner() != playor then
            call playor.displayText("|cffFF0000Can only target towers you own.|r")
            call playor.playSound(snd_error)
        elseif GetUnitState(target.getUnit(), UNIT_STATE_MAX_MANA)<1 then
            call playor.displayText("|cffFF0000Must target a tower that has mana.|r")
            call playor.playSound(snd_error)
        else
            if output.active == true then
                call output.fx.destroy()
                call output.l.destroy()
            endif
            
            set output.tower = target
            
            if target.getTowerType() == tower.getTowerType() then
                set target_z = 95
            endif
            
            set output.active = true
            set output.l = Lightning.createFromPointToPoint("DRAM", target.getX(), target.getY(), target_z, tower.getX(), tower.getY(), 95)
            set output.fx = Effect.createScaled("Abilities\\Spells\\Other\\Drain\\ManaDrainCaster.mdl", target.getX(), target.getY(), target_z-20, 0.0, 1.0)
        endif
        
        set tower.userInt2 = output
    endfunction
    
    //Do not remove or rename this function!
    //Put your initialization tasks here, this function will be called on map init
    private function init takes nothing returns nothing
    endfunction
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

            [1] => Array
                (
                    [name] => On Tower Destruction
                    [code] => local ashbringer_relay input = tower.userInt
    local ashbringer_relay output = tower.userInt2
    
    call input.cleanup()
    call output.cleanup()
    
    call input.destroy()
    call output.destroy()
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

            [2] => Array
                (
                    [name] => Periodic
                    [code] => local ashbringer_relay input = tower.userInt
    local ashbringer_relay output = tower.userInt2
    local real mana
    local real mana_perc
    local real regen_mana = 1.0 + tower.getProp_ManaRegPercBonus()
    local real source_mana
    local real source_max_mana
    local real target_mana
    local real target_max_mana
    
    call ashbringer_relay_update(tower)
    
    if input.active == true then
        if input.tower.getTowerType() == tower.getTowerType() then
            call ashbringer_relay_update(input.tower)
        endif
        set source_mana = GetUnitState(input.tower.getUnit(), UNIT_STATE_MANA)
        set source_max_mana = GetUnitState(input.tower.getUnit(), UNIT_STATE_MAX_MANA)
        set target_mana = GetUnitState(tower.getUnit(), UNIT_STATE_MANA)
        set target_max_mana = GetUnitState(tower.getUnit(), UNIT_STATE_MAX_MANA)
        //does input have mana and is relay below threshold
        if source_max_mana > 0 and target_mana / target_max_mana < 0.8 then
            //is input above threshold
            if source_mana / source_max_mana > 0.2 then
                set mana = source_mana * 0.02 * regen_mana
                set mana_perc = mana / source_max_mana
                
                if mana_perc > 0 then
                    call input.tower.subtractManaPerc(mana_perc, true)
                    call tower.addManaPerc(mana_perc)
                    
                    set tower.userReal = RMinBJ(1.0, tower.userReal + mana_perc)
                    if input.tower.getTowerType() == tower.getTowerType() then
                        set input.tower.userReal = RMaxBJ(0.0, input.tower.userReal - mana_perc)
                        call ashbringer_relay_update(input.tower)
                    endif
                endif
            endif
        elseif source_max_mana <= 0 then
            call input.cleanup()
        endif
    endif
    
    if output.active == true then
        if tower.getTowerType() == output.tower.getTowerType() then
            call ashbringer_relay_update(output.tower)
        endif
        set source_mana = GetUnitState(tower.getUnit(), UNIT_STATE_MANA)
        set source_max_mana = GetUnitState(tower.getUnit(), UNIT_STATE_MAX_MANA)
        set target_mana = GetUnitState(output.tower.getUnit(), UNIT_STATE_MANA)
        set target_max_mana = GetUnitState(output.tower.getUnit(), UNIT_STATE_MAX_MANA)
        //does output have mana and is the relay above threshold
        if target_max_mana > 0 and source_mana / source_max_mana > 0.2 then
            //is output below threshold
            if target_mana / target_max_mana < 0.8 then
                set mana = target_mana * 0.02 * regen_mana
                set mana_perc = mana / target_max_mana
                    
                if mana_perc > 0 then
                    call tower.subtractManaPerc(mana_perc, true)
                    call output.tower.addManaPerc(mana_perc)
                    
                    set tower.userReal = RMaxBJ(0.0, tower.userReal - mana_perc)
                    if tower.getTowerType() == output.tower.getTowerType() then
                        set output.tower.userReal = RMinBJ(1.0, output.tower.userReal + mana_perc)
                        call ashbringer_relay_update(output.tower)
                    endif
                endif
            endif
        elseif target_max_mana <= 0 then
            call output.cleanup()
        endif
    endif
    
    call ashbringer_relay_update(tower)
                    [values] => Array
                        (
                            [visible] => true
                            [PERIODIC_period] => 1.0
                            [icon] => ReplaceableTextures\CommandButtons\BTNAbsorbMagic.blp
                            [name] => Tapped Leyline
                            [short_explain] => The relay's mana pool is resistant to outside interference.
                            [long_explain] => If the relay's mana pool is altered by an outside source that isn't another relay, then the mana gained or lost is reduced by |cffffff8090%|r.
                        )

                )

            [3] => Array
                (
                    [name] => Autocast
                    [code] => call ashbringer_relay_output_apply(tower, Event.getTarget())
                    [values] => Array
                        (
                            [AUTOCAST_cooldown] => 10
                            [AUTOCAST_autoRange] => 0
                            [AUTOCAST_manacost] => 0
                            [icon] => ReplaceableTextures\CommandButtons\BTNNagaUnBurrow.blp
                            [AUTOCAST_range] => 450
                            [AUTOCAST_targetType] => 0
                            [AUTOCAST_numBuffsBeforeIdle] => 0
                            [caster_art] => 
                            [long_explain] => Set a targeted |cFFFF77FFArcane|r tower that you own as the output tower. While the relay is above |cffffff8020%|r mana and the output tower is below |cffffff8080%|r mana, the relay loses |cffffff802%|r of its current mana per second. The output tower gains up to |cffffff802%|r of its maximum mana based on the amount of mana the relay lost relative to its maximum mana. Mana transfer scales with the relay's mana regeneration stat.|n|nCannot be used on this relay's input tower or towers with no mana. Targeting the same tower again will remove the effect.
                            [target_art] => Abilities\Spells\Other\Charm\CharmTarget.mdl
                            [AUTOCAST_autocastType] => AC_TYPE_NOAC_PLAYER_TOWER
                            [AUTOCAST_buffType] => 0
                            [AUTOCAST_isExtended] => false
                            [name] => Output
                            [AUTOCAST_targetSelf] => false
                            [short_explain] => Transfers mana from the relay to a target tower.
                        )

                )

            [4] => Array
                (
                    [name] => Autocast
                    [code] => call ashbringer_relay_input_apply(tower, Event.getTarget())
                    [values] => Array
                        (
                            [AUTOCAST_cooldown] => 10
                            [AUTOCAST_autoRange] => 0
                            [AUTOCAST_manacost] => 0
                            [icon] => ReplaceableTextures\CommandButtons\BTNNagaBurrow.blp
                            [AUTOCAST_range] => 450
                            [AUTOCAST_targetType] => 0
                            [AUTOCAST_numBuffsBeforeIdle] => 0
                            [caster_art] => 
                            [long_explain] => Set a targeted |cFFFF77FFArcane|r tower that you own as the input tower. While the input tower is above |cffffff8020%|r mana and the relay is below |cffffff8080%|r mana, the source tower loses |cffffff802%|r of its current mana per second. The relay gains up to |cffffff802%|r of its maximum mana based on the amount of mana the input tower lost relative to its maximum mana. Mana transfer scales with the relay's mana regeneration stat.|n|nCannot be used on this relay's output tower or towers with no mana. Targeting the same tower again will remove the effect.
                            [target_art] => Abilities\Spells\Other\Charm\CharmTarget.mdl
                            [AUTOCAST_autocastType] => AC_TYPE_NOAC_PLAYER_TOWER
                            [AUTOCAST_buffType] => 0
                            [AUTOCAST_isExtended] => false
                            [name] => Input
                            [AUTOCAST_targetSelf] => false
                            [short_explain] => Transfer mana from a target tower to the relay.
                        )

                )

            [5] => Array
                (
                    [name] => On Tower Creation
                    [code] => local ashbringer_relay input = ashbringer_relay.create()
    local ashbringer_relay output = ashbringer_relay.create()

    set input.in_out = "in"
    set output.in_out = "out"
    
    set tower.userInt = input
    set tower.userInt2 = output
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

        )

    [abilities] => Array
        (
        )

    [buffs] => Array
        (
        )

    [units] => Array
        (
        )

    [references] => Array
        (
        )

    [lightning] => Array
        (
        )

)