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

            [Art] => ReplaceableTextures\CommandButtons\BTNKelThuzad.blp
            [turnRate] => 2
            [dmgplus1] => 1745
            [bldtm] => 1
            [goldcost] => 3500
            [unitSound] => KelThuzadLich
            [sides1] => 1
            [Missilearc] => 0.1
            [manaN] => 500
            [acquire] => 900
            [upgrades] => Array
                (
                )

            [Upgrade] => Array
                (
                )

            [Name] => Grand Necromancer
            [weapTp1] => missile
            [MissileHoming] => 1
            [file] => units\undead\Kelthuzad\Kelthuzad.mdl
            [uberSplat] => YTDB
            [Missileart] => Abilities\Weapons\NecromancerMissile\NecromancerMissile.mdl
            [Missilespeed] => 1400
            [dice1] => 1
            [RngBuff1] => 250
            [regenMana] => 5
            [modelScale] => 0.9
            [rangeN1] => 900
            [atkType1] => hero
            [cool1] => 2.5
            [Ubertip] => Grandmaster of death.
            [scaleBull] => 0
            [abilList] => @@0@@
            [moveHeight] => 33
            [customTeamColor] => 1
            [buildingShadow] => Array
                (
                )

            [targs1] => Array
                (
                )

            [weapsOn] => 1
            [teamColor] => 10
        )

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

            [abil_factor] => 0.15
            [author] => Ashbringer
            [alpha] => 255
            [authorDisplay] => |cffff6600Ashbringer|r
            [version] => 1.0
            [element] => darkness
            [rarity] => unique
        )

    [effects] => Array
        (
            [0] => Array
                (
                    [x] => -0.146169
                    [y] => 0.159106
                    [z] => 0
                    [scale] => 1.9
                    [rot] => 5.67232
                    [file] => Abilities\Spells\Other\GeneralAuraTarget\GeneralAuraTarget.mdl
                    [red] => 1
                    [green] => 255
                    [blue] => 45
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [1] => Array
                (
                    [x] => 0.00953216
                    [y] => 0.00975675
                    [z] => 6.4
                    [scale] => 0.8
                    [rot] => 4.71239
                    [file] => Abilities\Spells\Undead\UnholyAura\UnholyAura.mdl
                    [red] => 75
                    [green] => 255
                    [blue] => 175
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [2] => Array
                (
                    [x] => 0.0759074
                    [y] => -0.0386485
                    [z] => 19.2
                    [scale] => 1.55
                    [rot] => 0.244346
                    [file] => Abilities\Spells\Other\GeneralAuraTarget\GeneralAuraTarget.mdl
                    [red] => 1
                    [green] => 255
                    [blue] => 45
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [3] => Array
                (
                    [x] => -27.5792
                    [y] => -40.5418
                    [z] => 0
                    [scale] => 0.5
                    [rot] => 1.23639
                    [file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile1.mdl
                    [red] => 195
                    [green] => 255
                    [blue] => 195
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [4] => Array
                (
                    [x] => 45.6642
                    [y] => -28.4943
                    [z] => 0
                    [scale] => 0.5
                    [rot] => 2.73292
                    [file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile1.mdl
                    [red] => 195
                    [green] => 255
                    [blue] => 195
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [5] => Array
                (
                    [x] => 23.8128
                    [y] => 40.1632
                    [z] => 0
                    [scale] => 0.5
                    [rot] => 1.23639
                    [file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile1.mdl
                    [red] => 195
                    [green] => 255
                    [blue] => 195
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [6] => Array
                (
                    [x] => 39.6296
                    [y] => 32.1507
                    [z] => 0
                    [scale] => 0.5
                    [rot] => 0.254704
                    [file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile2.mdl
                    [red] => 195
                    [green] => 255
                    [blue] => 195
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [7] => Array
                (
                    [x] => 16.7425
                    [y] => -55.2052
                    [z] => 0
                    [scale] => 0.5
                    [rot] => 5.25749
                    [file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile2.mdl
                    [red] => 195
                    [green] => 255
                    [blue] => 195
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [8] => Array
                (
                    [x] => -44.4073
                    [y] => 8.72833
                    [z] => 0
                    [scale] => 0.5
                    [rot] => 1.79117
                    [file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile2.mdl
                    [red] => 195
                    [green] => 255
                    [blue] => 195
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [9] => Array
                (
                    [x] => -7.84542
                    [y] => -50.4484
                    [z] => 0
                    [scale] => 0.45
                    [rot] => 6.2649
                    [file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile0.mdl
                    [red] => 195
                    [green] => 255
                    [blue] => 195
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [10] => Array
                (
                    [x] => -52.3493
                    [y] => -2.80004
                    [z] => 0
                    [scale] => 0.5
                    [rot] => 3.48666
                    [file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile3.mdl
                    [red] => 195
                    [green] => 255
                    [blue] => 195
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [11] => Array
                (
                    [x] => 61.4808
                    [y] => -1.58061
                    [z] => 0
                    [scale] => 0.5
                    [rot] => 3.48666
                    [file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile3.mdl
                    [red] => 195
                    [green] => 255
                    [blue] => 195
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [12] => Array
                (
                    [x] => -14.5789
                    [y] => 46.645
                    [z] => 0
                    [scale] => 0.5
                    [rot] => 0.6921
                    [file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile3.mdl
                    [red] => 195
                    [green] => 255
                    [blue] => 195
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [13] => Array
                (
                    [x] => -39.4573
                    [y] => 43.9694
                    [z] => 0
                    [scale] => 0.5
                    [rot] => 4.86947
                    [file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile1.mdl
                    [red] => 195
                    [green] => 255
                    [blue] => 195
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [14] => Array
                (
                    [x] => -0.353325
                    [y] => -14.5155
                    [z] => -12.8
                    [scale] => 0.1
                    [rot] => 1.5708
                    [file] => Doodads\Cityscape\Structures\City_ColumnSemiCircle\City_ColumnSemiCircle.mdl
                    [red] => 25
                    [green] => 25
                    [blue] => 25
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [15] => Array
                (
                    [x] => 0.155632
                    [y] => 14.2318
                    [z] => -12.8
                    [scale] => 0.1
                    [rot] => 4.71239
                    [file] => Doodads\Cityscape\Structures\City_ColumnSemiCircle\City_ColumnSemiCircle.mdl
                    [red] => 25
                    [green] => 25
                    [blue] => 25
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [16] => Array
                (
                    [x] => 0.0218688
                    [y] => 0.570746
                    [z] => -6.4
                    [scale] => 1.4
                    [rot] => 4.6817
                    [file] => Doodads\Barrens\Rocks\Geyser\Geyser0.mdl
                    [red] => 1
                    [green] => 255
                    [blue] => 1
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

        )

    [dmgTable] => Array
        (
        )

    [triggers] => Array
        (
            [0] => Array
                (
                    [name] => On Level Up
                    [code] => call ashbringer_damned_update(tower)
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

            [1] => Array
                (
                    [name] => Header
                    [code] => globals
        ProjectileType ashbringer_skeletal_missile
        ProjectileType ashbringer_damned_unit
        BuffType ashbringer_harvest_buff
        MultiboardValues ashbringer_damned_mb
    endglobals
    
    struct damned
        Projectile array p[7]
        boolean array a[7]
    endstruct
    
    function ashbringer_damned_update takes Tower tower returns nothing
        local integer spirits = 2
        local integer count = tower.userInt
        local damned ae = tower.userInt3
        
        if tower.getLevel()>=25 then
            set spirits = 4
        elseif tower.getLevel()>=15 then
            set spirits = 3
        endif
        
        if spirits>count then
            loop
                if ae.a[count]==false then
                    
                    set ae.p[count] = Projectile.createBezierInterpolationFromPointToPoint(ashbringer_damned_unit, tower, 0, 0, tower.getX(), tower.getY(), 100, tower.getX(), tower.getY()-200, 225, 0, 0, 0)
                    call ae.p[count].setScale(0.4)
                    set ae.p[count].userInt = 0
                    set ae.a[count] = true
                endif
                set count = count + 1
                exitwhen count==spirits
            endloop
        elseif spirits180.0 then
                    set angle_diff = angle_diff - 360.0
                endif
                if angle_diff>0.0 then
                    set angle_mult = 1
                elseif(angle_diff < 0.0) then
                    set angle_mult = -1
                else
                    set angle_mult = 1
                endif
                
                set p.speed = 600 * move_modifier
                call p.startBezierInterpolationToUnit(next, 0, GetRandomReal(0.2, 0.4)*angle_mult, GetRandomReal(0.2, 0.4), true)
                set p.userInt = 1
                call i.destroy()
            else
                set random_angle = GetRandomReal(0, 360)
                set random_distance = GetRandomReal(0, 900)
                set end_x = tower.getX() + random_distance * Cos(Deg2Rad(random_angle))
                set end_y = tower.getY() + random_distance * Sin(Deg2Rad(random_angle))
                
                set angle_diff = bj_RADTODEG * Atan2(end_y - p.y, end_x - p.x)
                set angle_diff = (angle_diff-180) - (p.direction-180)
                if angle_diff<-180.0 then
                    set angle_diff = angle_diff + 360.0
                endif
                if angle_diff>180.0 then
                    set angle_diff = angle_diff - 360.0
                endif
                if angle_diff>0.0 then
                    set angle_mult = -1
                elseif(angle_diff < 0.0) then
                    set angle_mult = 1
                else
                    set angle_mult = 0
                endif
                
                set p.speed = 375 * move_modifier
                call p.startBezierInterpolationToPoint(end_x, end_y, height, 0, GetRandomReal(0.2, 0.4)*angle_mult, 0.4)
            endif
        else
            set p.userInt = 0
            
            if target!=0 then
                set damage = 5000 + (tower.getLevel() * 100)
                set b = target.getBuffOfType(ashbringer_harvest_buff)
                
                if b != 0 then
                    set damage = damage * (1 + 0.25 + (tower.getLevel() * 0.01))
                endif
                
                call tower.doSpellDamage(target, damage, tower.calcSpellCritNoBonus())
                call Effect.createSimpleOnUnit("Abilities\\Weapons\\ZigguratMissile\\ZigguratMissile.mdl", target, "chest").destroy()
            endif
            
            set random_angle = GetRandomReal(0, 360)
            set random_distance = GetRandomReal(0, 900)
            set end_x = tower.getX() + random_distance * Cos(Deg2Rad(random_angle))
            set end_y = tower.getY() + random_distance * Sin(Deg2Rad(random_angle))
            
            set angle_diff = bj_RADTODEG * Atan2(end_y - p.y, end_x - p.x)
            set angle_diff = (angle_diff-180) - (p.direction-180)
            if angle_diff<-180.0 then
                set angle_diff = angle_diff + 360.0
            endif
            if angle_diff>180.0 then
                set angle_diff = angle_diff - 360.0
            endif
            if angle_diff>0.0 then
                set angle_mult = -1
            elseif(angle_diff < 0.0) then
                set angle_mult = 1
            else
                set angle_mult = 0
            endif
            
            set p.speed = 375 * move_modifier
            call p.startBezierInterpolationToPoint(end_x, end_y, height, 0, GetRandomReal(0.2, 0.4)*angle_mult, 0.4)
        endif
    endfunction
    
    function ashbringer_harvest_death takes Buff b returns nothing
        local Tower tower = b.getCaster()
        
        call tower.resetCooldowns()
        call Effect.createSimpleAtUnit("Objects\\Spawnmodels\\Undead\\UndeadDissipate\\UndeadDissipate.mdl", b.getBuffedUnit()).setLifetime(3.0)
    endfunction
    
    function ashbringer_skeleton_tick takes Tower t, Effect e returns nothing
        local Iterate i
        local Creep next = 0
        local real speed = (1 + t.getProp_Attackspeed())
        local real period = RMaxBJ(2 / RMinBJ(RMaxBJ(speed, 0.5), 5), 0.3)
        local real angle
        local real distance
        
        if e.userReal3 > period and t.getUID() == e.userInt2 then
            if e.userInt3 != 0 then
                set next = e.userInt3
                if next.getUID() > 0 then
                    set distance = DistanceBetweenPoints(Location(e.userReal, e.userReal2), GetUnitLoc(next.getUnit()))
                    if distance > 600 then
                        set next = 0
                        set e.userInt3 = 0
                    endif
                else
                    set next = 0
                    set e.userInt3 = 0
                endif
            endif
            if next == 0 then
                set i = Iterate.overUnitsInRange(t, TARGET_TYPE_CREEPS, e.userReal, e.userReal2, 600)
                set next = i.nextRandom()
                if next !=0 then
                    call i.destroy()
                endif
            endif
            if next !=0 then
                set e.userInt3 = next
                call e.setAnimationSpeed(speed/2)
                call e.setAnimation("attack")
                call TriggerSleepAction(0.2)
                set period = period - 0.2
                call Projectile.createFromPointToUnit(ashbringer_skeletal_missile, t, 0.0, 0.0, e.userReal, e.userReal2, 30, next, true, false, false)
                set angle = bj_RADTODEG * Atan2(next.getY() - e.userReal2, next.getX() - e.userReal)
                call e.setFacing(angle)
                set e.userInt = 1
            else
                if e.userInt == 1 then
                    call e.setAnimationSpeed(1.0)
                    call e.setAnimation("stand")
                endif
                set e.userInt = 0
            endif
            
            set e.userReal3 = e.userReal3 - period
            call TriggerSleepAction(period)
            call ashbringer_skeleton_tick(t, e)
        else
            call e.setAnimationSpeed(1.0)
            call e.setAnimation("death")
            call TriggerSleepAction(5.0)
            call e.destroy()
        endif
    endfunction
    
    function ashbringer_skeletal_hit takes Projectile p, Creep c returns nothing
        local Tower t = p.getCaster()
        local integer level = t.getLevel()
        local real damage = 2000 + (level * 40)
        local Buff b = c.getBuffOfType(ashbringer_harvest_buff)
        
        if b != 0 then
            set damage = damage * (1 + 0.25 + (level * 0.01))
        endif
        
        call t.doSpellDamage(c, damage, t.calcSpellCritNoBonus())
    endfunction
    
    function ashbringer_harvest_periodic takes Buff b returns nothing
        local Creep c = b.getBuffedUnit()
        local unit u = c.getUnit()
        local real life = GetWidgetLife(u)
        local real damage = life * 0.05
        
        if damage > 0 then
            call SetWidgetLife(u, life - damage)
        endif
    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
        local Modifier mod = Modifier.create()
        
        set ashbringer_damned_unit = ProjectileType.createInterpolate("Abilities\\Weapons\\ZigguratMissile\\ZigguratMissile.mdl", 375)
        call ashbringer_damned_unit.disableExplodeOnExpiration()
        call ashbringer_damned_unit.setEventOnInterpolationFinished(ashbringer_damned_order)
        
        set ashbringer_harvest_buff = BuffType.create(5, 0.1, false)
        call ashbringer_harvest_buff.setBuffIcon('@@1@@')
        call ashbringer_harvest_buff.addEventOnDeath(EventHandler.ashbringer_harvest_death)
        call ashbringer_harvest_buff.addPeriodicEvent(EventHandler.ashbringer_harvest_periodic, 1.0)
        
        set ashbringer_skeletal_missile = ProjectileType.create("Abilities\\Weapons\\SkeletalMageMissile\\SkeletalMageMissile.mdl", 3.0, 900)
        call ashbringer_skeletal_missile.enableHoming(ashbringer_skeletal_hit, 0.0)
        
        set ashbringer_damned_mb = MultiboardValues.create(2)
        call ashbringer_damned_mb.setKey(0, "Spectres") 
    endfunction
                    [values] => Array
                        (
                            [visible] => true
                            [icon] => ReplaceableTextures\CommandButtons\BTNPossession.blp
                            [name] => The Damned
                            [short_explain] => Damned souls roam near the necromancer, occasionally attacking enemies.
                            [long_explain] => |cffffff802|r spectres roam around the necromancer, occasionally attacking enemies within the tower's attack range, dealing |cffffff805000|r spell damage.|n|nMovement speed of the spectres is increased by |cffffff8020%|r of the Necromancer's bonus attack speed.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+100|r spell damage|n|cffFFFF80+1|r spectre at level |cffffff8015|r and |cffffff8025|r
                        )

                )

            [2] => Array
                (
                    [name] => On Tower Details
                    [code] => call ashbringer_damned_mb.setValue(0, I2S(tower.userInt))
    return ashbringer_damned_mb
                    [values] => Array
                        (
                            [0] => Array
                                (
                                    [_value] => 0
                                    [typ] => string
                                )

                        )

                )

            [3] => Array
                (
                    [name] => On Tower Destruction
                    [code] => local integer spirits = tower.userInt
    local integer count = 0
    local damned ae = tower.userInt3
    local Effect e = tower.userInt2
    
    call e.destroy()
    loop
        if ae.p[count]!=0 then
            call ae.p[count].destroy()
        endif
        set count = count + 1
        exitwhen count==spirits
    endloop
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

            [4] => Array
                (
                    [name] => Periodic
                    [code] => local damned ae = tower.userInt3
    local integer count = 0
    local real current_time = Game.getGameTime()
    local boolean run_update = false
    local Effect e = tower.userInt2
    
    call e.queueAnimation("birth")
    //check for broken spirits and reboot them
    loop
        if ae.a[count]==true and (current_time-ae.p[count].userReal)/25>15 then
            set ae.a[count] = false
            call ae.p[count].destroy()
            set run_update = true
        endif
        set count = count + 1
        exitwhen count==7
    endloop
    
    if run_update==true then
        call ashbringer_damned_update(tower)
    endif
                    [values] => Array
                        (
                            [visible] => false
                            [PERIODIC_period] => 60
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

            [5] => Array
                (
                    [name] => Periodic
                    [code] => local Iterate i = Iterate.overCorpsesInRange(tower, tower.getX(), tower.getY(), 1000)
    local integer sel = 0
    local real x
    local real y
    local Effect e
    local unit corpse
    local integer random = GetRandomInt(0, 1)
    
    loop
        set corpse = i.nextCorpse()
        exitwhen corpse == null
        if IsUnitType(corpse, UNIT_TYPE_FLYING) == false then
            set sel = 1
        endif
        exitwhen sel == 1
    endloop
    if corpse != null then
        call i.destroy()
        if random == 0 then
            set random = -1
        endif
        set x = GetUnitX(corpse) + (random * GetRandomReal(50, 100))
        set y = GetUnitY(corpse) + (random * GetRandomReal(50, 100))
        call ShowUnit(corpse, false)
        call Effect.createSimple("Abilities\\Spells\\Undead\\RaiseSkeletonWarrior\\RaiseSkeleton.mdl", x, y).setLifetime(3.0)
        set e = Effect.createAnimated("units\\undead\\SkeletonMage\\SkeletonMage.mdx", x, y, 0.0, 270.0)
        call e.setTeamcolor(GetPlayerColor(tower.getOwner().getThePlayer()))
        set e.userInt = 1
        set e.userInt2 = tower.getUID()
        set e.userInt3 = 0
        set e.userReal = x
        set e.userReal2 = y
        set e.userReal3 = (10 + (tower.getLevel() * 0.2)) * tower.getProp_BuffDuration()
        call e.setAnimationSpeed(2.33)
        call e.setAnimation("birth")
        call TriggerSleepAction(1.0)
        call ashbringer_skeleton_tick(tower, e)
    endif
                    [values] => Array
                        (
                            [visible] => true
                            [PERIODIC_period] => 5
                            [icon] => ReplaceableTextures\CommandButtons\BTNSkeletonMage.blp
                            [name] => Raise Skeletal Mage
                            [short_explain] => Periodically raises skeletal mages from nearby corpses.
                            [long_explain] => Every |cffffff805|r seconds, attempt to raise a Skeletal Mage from a non-air corpse within attack range. Skeletal mages attack every |cffffff802|r seconds, dealing |cffffff802000|r spell damage and last |cffffff8010|r seconds. Skeletal Mages scale with the Necromancer's buff duration, attack speed and spell damage stats.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+40|r spell damage|n|cffFFFF80+0.2|r seconds duration
                        )

                )

            [6] => Array
                (
                    [name] => Autocast
                    [code] => Array
                        (
                        )

                    [values] => Array
                        (
                            [AUTOCAST_cooldown] => 15
                            [AUTOCAST_autoRange] => 900
                            [AUTOCAST_manacost] => 100
                            [icon] => ReplaceableTextures\CommandButtons\BTNLifeDrain.blp
                            [AUTOCAST_range] => 900
                            [AUTOCAST_targetType] => TARGET_TYPE_CREEPS
                            [AUTOCAST_numBuffsBeforeIdle] => 1
                            [caster_art] => 
                            [long_explain] => Inflict a powerful curse that increases damage taken from the Necromancer's minions by |cffffff8025%|r and causes the target to lose |cffffff805%|r of its remaining life per second. Lasts |cffffff805|r seconds. If the target dies while affected by Soul Harvest, the cooldown is reset.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+1%|r damage taken from minions|n|cffFFFF80+0.1|r seconds duration
                            [target_art] => Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl
                            [AUTOCAST_autocastType] => AC_TYPE_OFFENSIVE_BUFF
                            [AUTOCAST_buffType] => ashbringer_harvest_buff
                            [AUTOCAST_isExtended] => false
                            [name] => Soul Harvest
                            [AUTOCAST_targetSelf] => false
                            [short_explain] => Deals damage over time and increases damage taken from minions.
                        )

                )

            [7] => Array
                (
                    [name] => On Tower Creation
                    [code] => local Effect e = Effect.createAnimatedScaled("SharedModels\\UBirth.mdl", tower.getX(), tower.getY(), 0.0, 129.9, 0.35)

    set tower.userInt = 0
    set tower.userInt2 = e
    set tower.userInt3 = 0
    set tower.userReal = 0
    call ashbringer_damned_setup(tower)
    
    call SetUnitColor(tower.getUnit(), ConvertPlayerColor(10))
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

        )

    [abilities] => Array
        (
            [0] => Array
                (
                    [id] => @@0@@
                    [derivedFrom] => Asph
                    [oeValues] => Array
                        (
                            [Targetattach] => weapon
                            [Art] => Array
                                (
                                )

                            [Targetattach1] => Array
                                (
                                )

                            [Targetattach2] => Array
                                (
                                )

                            [TargetArt] => Abilities\Weapons\NecromancerMissile\NecromancerMissile.mdl
                            [Targetattachcount] => 1
                            [Missileart] => Abilities\Weapons\NecromancerMissile\NecromancerMissile.mdl
                            [Unubertip] => -HIDE-
                            [Cool1] => 0.01
                            [Name] => necrosphere
                        )

                )

        )

    [buffs] => Array
        (
            [0] => Array
                (
                    [id] => @@1@@
                    [derivedFrom] => BHab
                    [oeValues] => Array
                        (
                            [Targetattach] => chest
                            [Buffubertip] => Damage taken increased.
                            [TargetArt] => war3mapImported\SoulArmor.mdx
                            [Bufftip] => Soul Harvest
                            [Buffart] => ReplaceableTextures\CommandButtons\BTNLifeDrain.blp
                        )

                )

        )

    [units] => Array
        (
        )

    [references] => Array
        (
        )

    [lightning] => Array
        (
        )

)