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

            [Art] => ReplaceableTextures\CommandButtons\BTNBanshee.blp
            [turnRate] => 3
            [dmgplus1] => 45
            [bldtm] => 1
            [goldcost] => 125
            [unitSound] => Banshee
            [sides1] => 1
            [Missilearc] => 0.1
            [manaN] => 100
            [acquire] => 1000
            [upgrades] => Array
                (
                )

            [Upgrade] => Array
                (
                )

            [Name] => Cold Wraith
            [red] => 55
            [weapTp1] => missile
            [MissileHoming] => 1
            [file] => units\undead\Banshee\Banshee.mdl
            [uberSplat] => YTDN
            [Missileart] => war3mapImported\BansheeMissileBlue.mdl
            [Missilespeed] => 1400
            [dice1] => 1
            [RngBuff1] => 250
            [regenMana] => 2
            [green] => 175
            [modelScale] => 0.6
            [rangeN1] => 1000
            [atkType1] => normal
            [cool1] => 1.8
            [Ubertip] => Although this forlorn soul bears no malice, her kiss remains forever lethal.
            [scaleBull] => 0
            [abilList] => Array
                (
                )

            [moveHeight] => 20
            [customTeamColor] => 1
            [buildingShadow] => Array
                (
                )

            [targs1] => Array
                (
                )

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

    [settings] => Array
        (
            [balanceTip] => |cffFFFF00+2% |rbuff duration/lvl
            [abil_factor] => 0.2
            [author] => Ashbringer
            [alpha] => 185
            [authorDisplay] => |cffff6600Ashbringer|r
            [version] => 1.0
            [element] => ice
            [rarity] => uncommon
        )

    [effects] => Array
        (
            [0] => Array
                (
                    [x] => -28.6586
                    [y] => -31.2144
                    [z] => -12.8
                    [scale] => 0.35
                    [rot] => 0.733038
                    [file] => Doodads\Ruins\Plants\Ruins_Shrub\Ruins_Shrub1.mdl
                    [red] => 35
                    [green] => 85
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [1] => Array
                (
                    [x] => 21.5281
                    [y] => 16.3451
                    [z] => 0
                    [scale] => 0.4
                    [rot] => 4.89265
                    [file] => Doodads\Cityscape\Props\CityGrave\CityGrave0.mdl
                    [red] => 115
                    [green] => 155
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [2] => Array
                (
                    [x] => 0.00463893
                    [y] => -0.0131363
                    [z] => -12.8
                    [scale] => 1.05
                    [rot] => 4.36332
                    [file] => war3mapImported\GeneralAuraTargetWhite.mdl
                    [red] => 25
                    [green] => 155
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [3] => Array
                (
                    [x] => -34.8649
                    [y] => -6.52717
                    [z] => 0
                    [scale] => 0.3
                    [rot] => 4.7822
                    [file] => Doodads\Icecrown\Water\IceEdge\IceEdge2.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [4] => Array
                (
                    [x] => -0.478405
                    [y] => 10.7448
                    [z] => -6.4
                    [scale] => 0.5
                    [rot] => 4.13574
                    [file] => Doodads\Icecrown\Water\IceEdge\IceEdge2.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [5] => Array
                (
                    [x] => 2.37199
                    [y] => -44.8784
                    [z] => -19.2
                    [scale] => 0.4
                    [rot] => 2.38374
                    [file] => Doodads\Ruins\Plants\Ruins_Shrub\Ruins_Shrub1.mdl
                    [red] => 35
                    [green] => 85
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [6] => Array
                (
                    [x] => 33.5619
                    [y] => -30.1838
                    [z] => 0
                    [scale] => 0.2
                    [rot] => 3.7016
                    [file] => Doodads\Icecrown\Water\IceEdge\IceEdge2.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [7] => Array
                (
                    [x] => 39.8239
                    [y] => -10.1818
                    [z] => 0
                    [scale] => 0.2
                    [rot] => 4.98681
                    [file] => Doodads\Icecrown\Water\IceEdge\IceEdge2.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [8] => Array
                (
                    [x] => -15.1332
                    [y] => 28.9894
                    [z] => 0
                    [scale] => 0.55
                    [rot] => 4.71355
                    [file] => Doodads\Northrend\Plants\North_Thorns\North_Thorns2.mdl
                    [red] => 55
                    [green] => 175
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

            [9] => Array
                (
                    [x] => 39.2974
                    [y] => -18.1124
                    [z] => 0
                    [scale] => 0.1
                    [rot] => 4.38078
                    [file] => Doodads\Icecrown\Rocks\Icecrown_Crystal\Icecrown_Crystal2.mdl
                    [red] => 155
                    [green] => 155
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

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

        )

    [dmgTable] => Array
        (
            [0] => Array
                (
                    [id] => MOD_BUFF_DURATION
                    [base] => 0
                    [add] => 0.02
                )

        )

    [triggers] => Array
        (
            [0] => Array
                (
                    [name] => On Level Up
                    [code] => set tower.userReal = 0.05 + (tower.getLevel() * 0.002)
    set tower.userReal2 = 5 + (tower.getLevel() * 0.2)
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

            [1] => Array
                (
                    [name] => Header
                    [code] => globals
        //@export
        ProjectileType ashbringer_wisp_missile
        //@export
        BuffType ashbringer_kiss_aura
        BuffType ashbringer_kiss_buff
    endglobals
    
    function ashbringer_kiss_apply takes Tower tower, Unit target returns nothing
        local Buff b = target.getBuffOfType(ashbringer_kiss_buff)
        if b != 0 then
            set b.userInt = b.userInt + 1
            set b.userReal = tower.userReal2
            call b.refreshDuration()
        else
            set b = ashbringer_kiss_buff.apply(tower, target, tower.getLevel())
            set b.userInt = 1
            set b.userInt3 = 0
            set b.userReal = tower.userReal2
        endif
    endfunction
    
    function ashbringer_kiss_onattack takes Buff b returns nothing
        local Tower caster = b.getCaster()
        local Tower attacker = b.getBuffedUnit()
        
        if attacker.calcChance(caster.userReal * attacker.getBaseAttackspeed()) then
            call ashbringer_kiss_apply(caster, Event.getTarget())
        endif
    endfunction
    
    function ashbringer_kiss_ondamaged takes Buff b returns nothing
        local Tower caster = b.getCaster()
        local Tower attacker = Event.getTarget()
        local Unit target = b.getBuffedUnit()
        
        if b.userInt3 == 1 then
            return
        endif
        set b.userInt3 = 1
        call caster.doSpellDamage(target, b.userInt * b.userReal * attacker.getBaseAttackspeed(), caster.calcSpellCritNoBonus())
        set b.userInt3 = 0
    endfunction
    
    //@export
    function AngleDifference takes real a, real b returns real
        local real diff = a - b
        loop
            exitwhen diff <= 180 and diff >= -180
            if diff > 180 then
                set diff = diff - 360
            elseif diff < -180 then
                set diff = diff + 360
            endif
        endloop
        return diff
    endfunction
    
    function ashbringer_wisp_attack takes Tower tower, Projectile p returns nothing
        local Iterate i = Iterate.overUnitsInRangeOfCaster(tower, TARGET_TYPE_CREEPS, tower.getRange())
        local Unit next
        
        loop
            set next = i.nextRandom()
            exitwhen next == 0
            exitwhen not next.isImmune()
        endloop
        
        if next !=0 then
            call i.destroy()
            call p.disablePeriodic()
            set p.speed = 900
            set p.accelerate = 10
            call p.aimAtUnit(next, true, false, false)
        else
            set p.userInt = 0
        endif
    endfunction
    
    function ashbringer_wisp_update takes Projectile p returns nothing
        local Tower tower = p.getCaster()
        local real ox = tower.getX()
        local real oy = tower.getY()

        local real currentFacing = p.direction
        local real desiredAngle
        local real angleDiff
        local real distance
        local real z

        local real turnRate
        local real maxTurn = 12.0
        
        local real wanderJitter = 1.5
        local real wanderInfluence = 1.1

        set p.userReal = p.userReal + 0.2
        
        if p.userInt == 2 then
            if p.userReal >= 0.5 then
                set p.speed = 350
                set p.userInt = 0
                set p.userReal = 0
                set p.zangle = 0
                call p.setZSpeed(0)
            endif
        elseif p.userReal >= 2.6 then
            if p.userInt3 == tower.getUID() then
                set p.remainingLifetime = 5000
                set p.userReal = 0
                set p.userInt = 1
                call ashbringer_wisp_attack(tower, p)
            else
                call p.destroy()
            endif
        elseif p.userInt == 0 then
            set z = p.getAbsoluteZ()
            if z >=250 and z <=400 then
                call p.setZSpeed(0)
            elseif p.z < 250 then
                call p.setZSpeed(2)
            elseif p.z > 400 then
                call p.setZSpeed(-2)
            endif
        
            set distance = SquareRoot((p.x - ox)*(p.x - ox) + (p.y - oy)*(p.y - oy))

            set desiredAngle = AngleBetweenPoints(Location(p.x, p.y), Location(ox, oy))

            set angleDiff = AngleDifference(desiredAngle, currentFacing)
            
            set p.userReal3 = p.userReal3 + GetRandomReal(-wanderJitter, wanderJitter)

            if p.userReal3 > 3.0 then
                set p.userReal3 = 3.0
            elseif p.userReal3 < -3.0 then
                set p.userReal3 = -3.0
            endif

            if distance > 1000.0 then
                set turnRate = angleDiff * 0.25
            elseif distance > 750.0 then
                set turnRate = angleDiff * 0.10 + p.userReal3 * 0.3
            else
                set turnRate = p.userReal3 * wanderInfluence
            endif

            if turnRate > maxTurn then
                set turnRate = maxTurn
            elseif turnRate < -maxTurn then
                set turnRate = -maxTurn
            endif

            set p.rotation = turnRate
        endif
    endfunction
    
    function ashbringer_wisp_hit takes Projectile p, Unit target returns nothing
        local Tower tower = p.getCaster()
        local real x = p.x + (900 / 4) * Cos(Deg2Rad(p.direction))
        local real y = p.y + (900 / 4) * Sin(Deg2Rad(p.direction))
        
        call p.avertDestruction()
        set p.userInt = 2
        set p.userInt2 = p.userInt2 - 1
        set p.speed = 900 * 0.75
        set p.accelerate = 0
        call p.enablePeriodic(R2I(0.2*25.0+0.5))
        call p.aimAtPoint(x, y, 200, false, false)
        
        if target != 0 then
            call tower.doSpellDamage(target, p.userReal2, tower.calcSpellCritNoBonus())
            call Effect.createSimpleOnUnit("Abilities\\Weapons\\ZigguratFrostMissile\\ZigguratFrostMissile.mdl", target, "chest").destroy()
            call ashbringer_kiss_apply(tower, target)
        endif
        if p.userInt2 == 0 then
            call p.destroy()
        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
        set ashbringer_wisp_missile = ProjectileType.create("war3mapImported\\IllidanMissileFrost.mdx", 3000, 350)
        call ashbringer_wisp_missile.enablePeriodic(ProjectileEvent.ashbringer_wisp_update, 0.2)
        call ashbringer_wisp_missile.enableHoming(ProjectileTargetEvent.ashbringer_wisp_hit, 0.0)
        
        set ashbringer_kiss_aura = BuffType.createAuraEffectType(true)
        call ashbringer_kiss_aura.setBuffIcon('@@0@@')
        call ashbringer_kiss_aura.addEventOnAttack(EventHandler.ashbringer_kiss_onattack, 1.0, 0.0)
        
        set ashbringer_kiss_buff = BuffType.create(5, 0, false)
        call ashbringer_kiss_buff.setBuffIcon('@@1@@')
        call ashbringer_kiss_buff.addEventOnDamaged(EventHandler.ashbringer_kiss_ondamaged, 1.0, 0.0)
    endfunction
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

            [2] => Array
                (
                    [name] => Tower Aura
                    [code] => Array
                        (
                        )

                    [values] => Array
                        (
                            [AURA_powerAdd] => 1
                            [visible] => true
                            [AURA_auraEffect] => ashbringer_kiss_aura
                            [AURA_levelAdd] => 1
                            [AURA_power] => 0
                            [icon] => ReplaceableTextures\CommandButtons\BTNSpell_Frost_WizardMark.blp
                            [AURA_targetType] => TARGET_TYPE_TOWERS + TARGET_TYPE_ELEMENT_ICE
                            [long_explain] => |cFF00FFFFIce|r towers within |cffffff80200|r range have a |cffffff805%|r chance on attack to apply a stacking debuff which causes the target to take |cffffff805|r additional spell damage when hit. Lasts |cffffff805|r seconds.|n|nChance and damage are attack speed adjusted and the damage is dealt by this tower.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+0.2%|r chance|n|cffFFFF80+0.2|r spell damage
                            [AURA_targetSelf] => true
                            [name] => Winter's Kiss
                            [AURA_level] => 0
                            [short_explain] => |cFF00FFFFIce|r towers within |cffffff80200|r range have a chance on attack to apply a stacking debuff which causes the target to take additional spell damage when hit.
                            [AURA_auraRange] => 200
                        )

                )

            [3] => Array
                (
                    [name] => Autocast
                    [code] => local Projectile p = Projectile.createFromUnit(ashbringer_wisp_missile, tower, tower, 270, 0, 0)
    call p.disablePeriodic()
    set p.speed = 900
    set p.accelerate = 10
    set p.userReal = 0
    set p.userReal2 = 125 + (tower.getLevel() * 5)
    set p.userInt = 1
    set p.userInt2 = R2I(4 * tower.getProp_BuffDuration()) + 1
    set p.userInt3 = tower.getUID()
    call p.aimAtUnit(Event.getTarget(), true, false, false)
                    [values] => Array
                        (
                            [AUTOCAST_cooldown] => 3
                            [AUTOCAST_autoRange] => 900
                            [AUTOCAST_manacost] => 50
                            [icon] => ReplaceableTextures\CommandButtons\BTNSpell_Frost_Wisp.blp
                            [AUTOCAST_range] => 1000
                            [AUTOCAST_targetType] => 0
                            [AUTOCAST_numBuffsBeforeIdle] => 0
                            [caster_art] => 
                            [long_explain] => Summon a frost wisp to attack the target, dealing |cffffff80125|r spell damage and applying Winter's Kiss. The wisp will then continue to roam nearby and attack |cffffff804|r more times before disappearing.|n|nBuff duration increases the number of attacks.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+5|r spell damage
                            [target_art] => 
                            [AUTOCAST_autocastType] => AC_TYPE_OFFENSIVE_UNIT
                            [AUTOCAST_buffType] => 0
                            [AUTOCAST_isExtended] => false
                            [name] => Summon Frost Wisp
                            [AUTOCAST_targetSelf] => false
                            [short_explain] => Summon a wisp to attack enemies, dealing spell damage.
                        )

                )

            [4] => Array
                (
                    [name] => On Tower Creation
                    [code] => call SetUnitColor(tower.getUnit(), ConvertPlayerColor(9))
    set tower.userReal = 0.05 + (tower.getLevel() * 0.002)
    set tower.userReal2 = 5 + (tower.getLevel() * 0.2)
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

        )

    [abilities] => Array
        (
        )

    [buffs] => Array
        (
            [0] => Array
                (
                    [id] => @@0@@
                    [derivedFrom] => BHab
                    [oeValues] => Array
                        (
                            [Targetattach] => Array
                                (
                                )

                            [Buffubertip] => Chance to apply Winter's Kiss on attack.
                            [TargetArt] => Array
                                (
                                )

                            [Bufftip] => Winter's Kiss
                            [Buffart] => ReplaceableTextures\CommandButtons\BTNSpell_Frost_WizardMark.blp
                        )

                )

            [1] => Array
                (
                    [id] => @@1@@
                    [derivedFrom] => BHab
                    [oeValues] => Array
                        (
                            [Targetattach] => chest
                            [Buffubertip] => Taking additional spell damage when hit.
                            [TargetArt] => war3mapImported\ImmolationDamageFrost.mdx
                            [Bufftip] => Winter's Kiss
                            [Buffart] => ReplaceableTextures\CommandButtons\BTNSpell_Frost_WizardMark.blp
                        )

                )

        )

    [units] => Array
        (
        )

    [references] => Array
        (
            [0] => Array
                (
                    [export] => true
                    [category] => global
                    [typ] => ProjectileType
                    [name] => ashbringer_wisp_missile
                )

            [1] => Array
                (
                    [export] => true
                    [category] => global
                    [typ] => BuffType
                    [name] => ashbringer_kiss_aura
                )

        )

    [lightning] => Array
        (
        )

)