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

            [Art] => ReplaceableTextures\CommandButtons\BTNGhostMage.blp
            [turnRate] => 3
            [dmgplus1] => 533
            [bldtm] => 1
            [goldcost] => 1200
            [unitSound] => Priest
            [sides1] => 1
            [Missilearc] => 0.15
            [manaN] => 100
            [acquire] => 850
            [upgrades] => Array
                (
                )

            [Upgrade] => Array
                (
                )

            [Name] => Lightweaver
            [weapTp1] => missile
            [file] => units\other\HeroArchMageGhost\HeroArchMageGhost.mdl
            [MissileHoming] => 1
            [uberSplat] => YTDO
            [Missileart] => war3mapImported\HolyFireBallMissile.mdl
            [Missilespeed] => 1400
            [dice1] => 1
            [RngBuff1] => 250
            [regenMana] => 2
            [modelScale] => 0.55
            [rangeN1] => 850
            [atkType1] => magic
            [cool1] => 1.6
            [Ubertip] => Once a zealous priest, he saw the error of his ways and spent the rest of his life repenting. Now he has returned from beyond, to guide others to the Light which redeemed him.
            [scaleBull] => 0
            [blue] => 215
            [abilList] => Array
                (
                )

            [moveHeight] => 15
            [buildingShadow] => Array
                (
                )

            [targs1] => Array
                (
                )

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

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

            [abil_factor] => 0.24
            [author] => Ashbringer
            [alpha] => 175
            [authorDisplay] => |cffff6600Ashbringer|r
            [version] => 1.0
            [element] => astral
            [rarity] => rare
        )

    [effects] => Array
        (
            [0] => Array
                (
                    [x] => -16.5101
                    [y] => 0.661243
                    [z] => 6.4
                    [scale] => 0.1
                    [rot] => 0.000000238419
                    [file] => Doodads\Ruins\Structures\RuinsArchway0_\RuinsArchway0_0.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => -1.57
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [1] => Array
                (
                    [x] => 16.429
                    [y] => -0.196864
                    [z] => 6.4
                    [scale] => 0.1
                    [rot] => 3.14159
                    [file] => Doodads\Ruins\Structures\RuinsArchway0_\RuinsArchway0_0.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => -1.57
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [2] => Array
                (
                    [x] => 0.393854
                    [y] => 16.4241
                    [z] => 6.4
                    [scale] => 0.1
                    [rot] => 4.71239
                    [file] => Doodads\Ruins\Structures\RuinsArchway0_\RuinsArchway0_0.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => -1.57
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [3] => Array
                (
                    [x] => -0.46424
                    [y] => -16.5149
                    [z] => 6.4
                    [scale] => 0.1
                    [rot] => 1.5708
                    [file] => Doodads\Ruins\Structures\RuinsArchway0_\RuinsArchway0_0.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => -1.57
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [4] => Array
                (
                    [x] => -0.230434
                    [y] => 0.0941513
                    [z] => -115.2
                    [scale] => 1.25
                    [rot] => 4.71239
                    [file] => Doodads\Ruins\Props\RuinsPillar\RuinsPillar2.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [5] => Array
                (
                    [x] => -0.0901514
                    [y] => -0.0973223
                    [z] => -12.8
                    [scale] => 1.55
                    [rot] => 3.47321
                    [file] => war3mapImported\GeneralAuraTargetWhite.mdl
                    [red] => 255
                    [green] => 225
                    [blue] => 55
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [6] => Array
                (
                    [x] => 18.5136
                    [y] => 0.622098
                    [z] => 0
                    [scale] => 0.2
                    [rot] => 3.16477
                    [file] => Doodads\Ruins\Props\RuinsRuinedThrone\RuinsRuinedThrone0.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [7] => Array
                (
                    [x] => -0.00288538
                    [y] => -18.3595
                    [z] => 0
                    [scale] => 0.2
                    [rot] => 1.58778
                    [file] => Doodads\Ruins\Props\RuinsRuinedThrone\RuinsRuinedThrone0.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [8] => Array
                (
                    [x] => -18.5972
                    [y] => 0.336484
                    [z] => 0
                    [scale] => 0.2
                    [rot] => 0.0184943
                    [file] => Doodads\Ruins\Props\RuinsRuinedThrone\RuinsRuinedThrone0.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [9] => Array
                (
                    [x] => 0.077423
                    [y] => 19.0926
                    [z] => 0
                    [scale] => 0.2
                    [rot] => 4.70885
                    [file] => Doodads\Ruins\Props\RuinsRuinedThrone\RuinsRuinedThrone0.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [10] => Array
                (
                    [x] => -27.8919
                    [y] => -28.352
                    [z] => -12.8
                    [scale] => 0.25
                    [rot] => 4.49497
                    [file] => Doodads\Ruins\Props\RuinsPillar\RuinsPillar2.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [11] => Array
                (
                    [x] => 28.621
                    [y] => 28.2873
                    [z] => -12.8
                    [scale] => 0.25
                    [rot] => 4.49497
                    [file] => Doodads\Ruins\Props\RuinsPillar\RuinsPillar2.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [12] => Array
                (
                    [x] => -27.9245
                    [y] => 28.88
                    [z] => -12.8
                    [scale] => 0.25
                    [rot] => 4.49497
                    [file] => Doodads\Ruins\Props\RuinsPillar\RuinsPillar2.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [13] => Array
                (
                    [x] => 27.2979
                    [y] => -28.3397
                    [z] => -12.8
                    [scale] => 0.25
                    [rot] => 4.49497
                    [file] => Doodads\Ruins\Props\RuinsPillar\RuinsPillar2.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

        )

    [dmgTable] => Array
        (
        )

    [triggers] => Array
        (
            [0] => Array
                (
                    [name] => On Attack
                    [code] => local Iterate i = Iterate.overUnitsInRangeOfCaster(tower, TARGET_TYPE_TOWERS, 175)
    local Unit next
    local integer power = R2I((0.2 + (tower.getLevel() * 0.008)) / 0.0001)
    
    call Effect.createSimpleAtUnit("war3mapImported\\AnimateDeadTargetHoly.mdx", tower).setLifetime(3)
    loop
        set next = i.next()
        exitwhen next == 0
        call ashbringer_illuminate_buff.applyCustomPower(tower, next, tower.getLevel(), power)
    endloop
                    [values] => Array
                        (
                            [visible] => true
                            [icon] => ReplaceableTextures\CommandButtons\BTNSpell_Holy_MindVision.blp
                            [name] => Illuminate
                            [short_explain] => Attacks have a chance to increase the trigger chances and exp gain of adjacent towers for a short duration.
                            [ONATTACK_chance] => 0.075
                            [ONATTACK_chanceLevelAdd] => 0.003
                            [long_explain] => Attacks have a |cffffff807.5%|r chance to increase the trigger chances and experience gain of towers within |cffFFFF80175|r range by |cffFFFF8020%|r. Lasts |cffFFFF803|r seconds.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+0.3%|r chance|n|cffFFFF80+0.8%|r trigger chances|n|cffFFFF80+0.8%|r experience
                        )

                )

            [1] => Array
                (
                    [name] => Header
                    [code] => globals
        //@export
        BuffType ashbringer_illuminate_buff
    endglobals
    
    //@export
    struct lightfall
        Tower tower
        real x
        real y
        Iterate i
        integer waves
        real damage
        real area
        Unit last
        timer tm
        boolean destruct
        
        static method create takes Tower tower, Unit target, real damage, integer waves, real area returns lightfall
            local lightfall l = lightfall.allocate()
            set l.tower = tower
            set l.x = target.getX()
            set l.y = target.getY()
            set l.damage = damage
            set l.area = area
            set l.waves = waves - 1
            set l.destruct = false
            call Effect.createSimple("Abilities\\Spells\\Orc\\Reincarnation\\ReincarnationTarget.mdl", l.x, l.y).setLifetime(5)
            
            return l
        endmethod
    
        static method ashbringer_sanctify takes Tower tower, Unit target, integer level returns nothing
            call tower.doSpellDamage(target, tower.getExp()*(0.4 + (level * 0.016)), tower.calcSpellCritNoBonus())
            call Lightning.createFromPointToUnit("YLWL", tower.getX(), tower.getY(), 60, target).setLifetime(0.2)
            call Effect.createSimpleOnUnit("Abilities\\Spells\\Items\\StaffOfPurification\\PurificationTarget.mdl", target, "origin").setLifetime(2)
        endmethod
        
        private static method hit takes nothing returns nothing
            local timer tm = GetExpiredTimer()
            local lightfall l = lightfall(GetTimerData(tm))
            local Unit next = l.i.nextRandom()
            
            set l.last = next
            if next != 0 then
                call Effect.createSimpleOnUnit("war3mapImported\\StarfallTargetHoly.mdx", next, "origin").setLifetime(2)
                call cb_stun.applyOnlyTimed(l.tower, next, 0.3)
                call l.tower.doSpellDamage(next, l.damage, l.tower.calcSpellCritNoBonus())
                
                if l.tower.calcChance(0.15 + (l.tower.getLevel() * 0.006)) then
                    call ashbringer_sanctify(l.tower, next, l.tower.getLevel())
                endif
            else
                call PauseTimer(l.tm)
                if l.destruct then
                    call DestroyTimer(l.tm)
                    call l.destroy()
                endif
            endif
        endmethod
        
        private method instant_wave takes nothing returns nothing
            set .i = Iterate.overUnitsInRange(.tower, TARGET_TYPE_CREEPS, .x, .y, .area)
            call TimerStart(.tm, 0.1, true, function lightfall.hit)
        endmethod
        
        private static method wave takes nothing returns nothing
            local timer tm = GetExpiredTimer()
            local lightfall l = lightfall(GetTimerData(tm))
            
            if l.waves > 0 then
                set l.waves = l.waves - 1
                if l.last != 0 then
                    call l.i.destroy()
                endif
                set l.i = Iterate.overUnitsInRange(l.tower, TARGET_TYPE_CREEPS, l.x, l.y, l.area)
                call TimerStart(l.tm, 0.1, true, function lightfall.hit)
            else
            endif
            
            if l.waves == 0 then
                call PauseTimer(tm)
                call DestroyTimer(tm)
                set l.destruct = true
            endif
        endmethod
        
        method start takes nothing returns nothing
            local timer tm = CreateTimer()
            
            set .tm = CreateTimer()
            call SetTimerData(.tm, this)
            
            call .instant_wave()
            if .waves > 0 then
                call SetTimerData(tm, this)
                call TimerStart(tm, 2, true, function lightfall.wave)
            else
                call DestroyTimer(tm)
                call DestroyTimer(.tm)
            endif
        endmethod
    endstruct
    
    function ashbringer_illuminate_ondamage takes Buff b returns nothing
        if b.getBuffedUnit() != b.getCaster() then
            call lightfall.ashbringer_sanctify(b.getBuffedUnit(), Event.getTarget(), b.getCaster().getLevel())
        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 m = Modifier.create()
        
        set ashbringer_illuminate_buff = BuffType.create(3, 0, true)
        call ashbringer_illuminate_buff.setBuffIcon('@@0@@')
        call m.addModification(MOD_TRIGGER_CHANCES, 0, 0.0001)
        call m.addModification(MOD_EXP_RECEIVED, 0, 0.0001)
        call ashbringer_illuminate_buff.setBuffModifier(m)
        call ashbringer_illuminate_buff.addEventOnDamage(ashbringer_illuminate_ondamage, 0.15, 0.006)
    endfunction
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

            [2] => Array
                (
                    [name] => On Damage
                    [code] => call lightfall.ashbringer_sanctify(tower, Event.getTarget(), tower.getLevel())
                    [values] => Array
                        (
                            [ONDAMAGE_chance] => 0.15
                            [visible] => true
                            [icon] => ReplaceableTextures\CommandButtons\BTNSpell_Holy_PrayerOfHealing02.blp
                            [name] => Sanctification
                            [short_explain] => Attacks and Beacon of Light have a chance on hit to deal spell damage based on the tower's total experience.
                            [ONDAMAGE_chanceLevelAdd] => 0.006
                            [long_explain] => Attacks and Beacon of Light have a |cffffff8015%|r chance on hit to deal |cffffff8040%|r of the tower's total experience as spell damage. Additionally, other towers affected by Illuminate gain this effect on their attacks.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+0.6%|r chance|n|cffFFFF80+1.6%|r experience as spell damage
                        )

                )

            [3] => Array
                (
                    [name] => Autocast
                    [code] => local real damage = 2400 + (tower.getLevel() * 96)
    
    call lightfall.create(tower, Event.getTarget(), damage, 3, 300).start()
                    [values] => Array
                        (
                            [AUTOCAST_cooldown] => 4
                            [AUTOCAST_autoRange] => 800
                            [AUTOCAST_manacost] => 50
                            [icon] => ReplaceableTextures\CommandButtons\BTNSpell_Holy_SurgeOfLight.blp
                            [AUTOCAST_range] => 850
                            [AUTOCAST_targetType] => 0
                            [AUTOCAST_numBuffsBeforeIdle] => 0
                            [caster_art] => 
                            [long_explain] => Creates a beacon at the target's location, which calls down |cffffff803|r waves of light onto enemies within |cffffff80300|r range over |cffffff804|r seconds. Each wave deals |cffffff802400|r spell damage and stuns for |cffffff800.3|r seconds.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+96|r spell damage
                            [target_art] => 
                            [AUTOCAST_autocastType] => AC_TYPE_OFFENSIVE_UNIT
                            [AUTOCAST_buffType] => 0
                            [AUTOCAST_isExtended] => false
                            [name] => Beacon of Light
                            [AUTOCAST_targetSelf] => false
                            [short_explain] => Calls down waves of light over an area, dealing spell damage and stunning.
                        )

                )

            [4] => Array
                (
                    [name] => On Tower Creation
                    [code] => call SetUnitColor(tower.getUnit(), ConvertPlayerColor(4))
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

        )

    [abilities] => Array
        (
        )

    [buffs] => Array
        (
            [0] => Array
                (
                    [id] => @@0@@
                    [derivedFrom] => BHbd
                    [oeValues] => Array
                        (
                            [Targetattach] => overhead
                            [Buffubertip] => Increased trigger chance and experience gain.
                            [TargetArt] => Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
                            [Bufftip] => Illuminate
                            [Buffart] => ReplaceableTextures\CommandButtons\BTNSpell_Holy_MindVision.blp
                        )

                )

        )

    [units] => Array
        (
        )

    [references] => Array
        (
            [0] => Array
                (
                    [export] => true
                    [category] => global
                    [typ] => BuffType
                    [name] => ashbringer_illuminate_buff
                )

        )

    [lightning] => Array
        (
        )

)