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

            [Art] => ReplaceableTextures\CommandButtons\BTNUndeadDestroyer.blp
            [dmgplus1] => 7137
            [bldtm] => 1
            [unitSound] => Ziggurat
            [goldcost] => 5000
            [sides1] => 1
            [acquire] => 2000
            [upgrades] => Array
                (
                )

            [Upgrade] => Array
                (
                )

            [Name] => Dutchman's Grave
            [red] => 100
            [weapTp1] => missile
            [MissileHoming] => 1
            [file] => Doodads\LordaeronSummer\Props\Grave\Grave.mdl
            [uberSplat] => OSMA
            [Missilespeed] => 10000
            [dice1] => 1
            [RngBuff1] => 250
            [green] => 100
            [modelScale] => 0.6
            [rangeN1] => 2000
            [atkType1] => siege
            [cool1] => 2.5
            [Ubertip] => An inscription is written on the grave: "The admiral defeated the Dutchman and its crew near this island."
            [blue] => 100
            [abilList] => Array
                (
                )

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

            [targs1] => Array
                (
                )

            [weapsOn] => 1
        )

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

            [abil_factor] => 0.80
            [author] => cedi
            [alpha] => 255
            [authorDisplay] => cedi
            [version] => 1.0
            [element] => darkness
            [rarity] => unique
        )

    [effects] => Array
        (
            [0] => Array
                (
                    [x] => 27.302
                    [y] => -29.2529
                    [z] => -70.4
                    [scale] => 0.5
                    [rot] => 0.872665
                    [file] => Doodads\Northrend\Rocks\North_Rocks\North_Rocks8.mdl
                    [red] => 100
                    [green] => 100
                    [blue] => 100
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

            [1] => Array
                (
                    [x] => -1.27701
                    [y] => -7.19725
                    [z] => 25.6
                    [scale] => 0.3
                    [rot] => 4.07657
                    [file] => units\nightelf\SpiritOfVengeance\SpiritOfVengeance.mdl
                    [red] => 150
                    [green] => 200
                    [blue] => 150
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

            [2] => Array
                (
                    [x] => 35.4683
                    [y] => 6.99733
                    [z] => -12.8
                    [scale] => 0.5
                    [rot] => 0.872665
                    [file] => Doodads\Northrend\Rocks\North_Rocks\North_Rocks8.mdl
                    [red] => 100
                    [green] => 100
                    [blue] => 100
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

            [3] => Array
                (
                    [x] => 3.15635
                    [y] => 19.2419
                    [z] => -38.4
                    [scale] => 0.5
                    [rot] => 0.872665
                    [file] => Doodads\Northrend\Rocks\North_Rocks\North_Rocks8.mdl
                    [red] => 100
                    [green] => 100
                    [blue] => 100
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

            [4] => Array
                (
                    [x] => -1.28159
                    [y] => -6.96853
                    [z] => 57.6
                    [scale] => 0.3
                    [rot] => 4.07657
                    [file] => units\nightelf\SpiritOfVengeance\SpiritOfVengeance.mdl
                    [red] => 150
                    [green] => 200
                    [blue] => 150
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

            [5] => Array
                (
                    [x] => -10.1935
                    [y] => -14.8373
                    [z] => -44.8
                    [scale] => 0.5
                    [rot] => 0.872665
                    [file] => Doodads\Northrend\Rocks\North_Rocks\North_Rocks8.mdl
                    [red] => 100
                    [green] => 100
                    [blue] => 100
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

            [6] => Array
                (
                    [x] => 15.8704
                    [y] => 6.64977
                    [z] => -19.2
                    [scale] => 0.5
                    [rot] => 3.15405
                    [file] => Doodads\Northrend\Rocks\North_Rocks\North_Rocks8.mdl
                    [red] => 100
                    [green] => 100
                    [blue] => 100
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

            [7] => Array
                (
                    [x] => -21.4599
                    [y] => 0.691735
                    [z] => -19.2
                    [scale] => 0.5
                    [rot] => 0.872665
                    [file] => Doodads\Northrend\Rocks\North_Rocks\North_Rocks8.mdl
                    [red] => 100
                    [green] => 100
                    [blue] => 100
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

            [8] => Array
                (
                    [x] => 9.43545
                    [y] => -2.75376
                    [z] => -6.4
                    [scale] => 0.8
                    [rot] => 3.71755
                    [file] => Doodads\Underground\Rocks\UndergroundStalagmite\UndergroundStalagmite2.mdl
                    [red] => 100
                    [green] => 100
                    [blue] => 100
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

            [9] => Array
                (
                    [x] => -0.00498056
                    [y] => -0.234652
                    [z] => 44.8
                    [scale] => 0.6
                    [rot] => 0
                    [file] => Doodads\LordaeronSummer\Props\Grave\Grave.mdl
                    [red] => 100
                    [green] => 100
                    [blue] => 100
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

        )

    [dmgTable] => Array
        (
        )

    [triggers] => Array
        (
            [0] => Array
                (
                    [name] => On Attack
                    [code] => local Dutchman d = tower.userInt
    set d.target = Event.getTarget()
    set d.uid = d.target.getUID()
    call d.p.setHomingTarget( d.target )
                    [values] => Array
                        (
                            [visible] => true
                            [icon] => ReplaceableTextures\CommandButtons\BTNPossession.blp
                            [name] => Soul Attack
                            [short_explain] => The Dutchman attacks with a collected soul.
                            [ONATTACK_chance] => 1.0
                            [ONATTACK_chanceLevelAdd] => 0.0
                            [long_explain] => Every |cffFFFF805|r seconds the Dutchman attacks a random creep in |cffFFFF801200|r range with a collected soul. Deals |cffFFFF8014000|r spell damage to the target.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+1400|r spell damage
                        )

                )

            [1] => Array
                (
                    [name] => Header
                    [code] => globals
        ProjectileType Proj
        ProjectileType Soul
        ProjectileType NAttack
        Cast SAttack
        BuffType Panic
        MultiboardValues mbvals
    endglobals
    
    struct Dutchman
        Projectile p = 0
        integer uid = 0
        integer souls = 0
        real nattack = 2.00
        real sattack = 5.00
        real reorder = 2.00
        real soultime = 0.30
        Unit target = 0
        boolean soulstorm = false
        
        method onDestroy takes nothing returns nothing
            call .p.destroy()
        endmethod
        
        static method create takes Projectile p, Unit target returns thistype
            local thistype this = thistype.allocate()
            set .p = p
            set .target = target
            set .uid = target.getUID()
            
            set .nattack = p.getCaster().getCurrentAttackspeed()
            return this
        endmethod
        
    endstruct
    
    function Storm takes Projectile p, Dutchman d, Unit tower returns nothing
        local Projectile p2
        if d.souls >= 2 then
            set d.souls = d.souls - 2
            set p2 = Projectile.create( Soul, tower, 1.00, tower.calcSpellCritNoBonus(), p.x, p.y, p.z, 0.00 )
            set p2.userReal = 14000.00
            set p2 = Projectile.create( Soul, tower, 1.00, tower.calcSpellCritNoBonus(), p.x, p.y, p.z, 180.00 )
            set p2.userReal = 14000.00
        else
            set d.soulstorm = false
        endif
    endfunction
    
    function NAttackHit takes Projectile p, Unit target returns nothing
        local Tower T = p.getCaster()
        call T.doAttackDamageAoEUnit(target, 250, T.getCurrentAttackDamageWithBonus(), T.calcAttackMulticrit(0,0,0),0)
    endfunction
    
    function NAttackFunc takes Projectile p, Unit tower returns nothing
        local Iterate I = Iterate.overUnitsInRange( tower, TARGET_CREEPS, p.x, p.y, 800.00 )
        local Unit U = I.nextRandom()
        if U != 0 then
            call I.destroy()
            call Projectile.createLinearInterpolationFromPointToUnit(NAttack,tower,1,1,p.x,p.y,p.z,U,0.4,true)
        endif
    endfunction
    
    function SAttackFunc takes Projectile p, Dutchman d, Unit tower returns nothing
        local Iterate I
        local Unit U
        if d.souls >= 1 then
            set I = Iterate.overUnitsInRange( tower, TARGET_CREEPS, p.x, p.y, 1200.00 )
            loop
                set U = I.nextRandom()
                exitwhen U == 0
                if not U.isImmune() then
                    set d.souls = d.souls - 1
                    call SAttack.targetCastFromPoint( tower, U, p.x, p.y, 14000.00 + I2R( tower.getLevel() ) * 1400.00, tower.calcSpellCritNoBonus())
                    call I.destroy()
                    return
                endif
            endloop
        endif
    endfunction
    
    function Periodic takes Projectile p returns nothing
        local Unit tower = p.getCaster()
        local Dutchman d = p.userInt
        if IsUnitType( d.target.getUnit(), UNIT_TYPE_DEAD ) or d.target == 0 or d.target.getUID() != d.uid then
            call p.setHomingTarget( tower )
            set d.target = tower
            set d.uid = tower.getUID()
        endif
        set d.nattack = d.nattack - 0.1
        if d.nattack <= 0.00 then
            set d.nattack = d.nattack + tower.getCurrentAttackspeed()
            call NAttackFunc( p, tower )
        endif
        set d.sattack = d.sattack - 0.1
        if d.sattack <= 0.00 then
            set d.sattack = 5.00
            call SAttackFunc( p, d, tower )
        endif
        set d.reorder = d.reorder - 0.1
        if d.reorder <= 0.00 then
            set d.reorder = 2.00
            call p.setHomingTarget( d.target )
        endif
        if d.soulstorm then
            set d.soultime = d.soultime - 0.1
            if d.soultime <= 0.00 then
                set d.soultime = 0.3
                call Storm( p, d, tower )
            endif
        endif
    endfunction
    
    function Hit takes Projectile p, Unit target returns nothing
        call p.avertDestruction()
    endfunction
    
    function SoulHit takes Projectile p, Unit target returns nothing
        call SFXOnUnit( "Abilities\\Spells\\Undead\\DeathCoil\\DeathCoilSpecialArt.mdl", target.getUnit(), "chest" )
        call p.doSpellDamage( target, p.userReal )
        set p.userReal = p.userReal * 0.5
    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 Proj = ProjectileType.create( "units\\creeps\\UndeadDestroyerShip\\UndeadDestroyerShip.mdl", 999999.00, 550.00 )
        call Proj.enablePeriodic( Periodic, 0.10 )
        call Proj.enableHoming( Hit, 4.00 )
        set SAttack = Cast.create( '@@0@@', "acidbomb", 5.00 )
        set Panic = BuffType.create( 10.00, 0.00, false )
        call Panic.setBuffIcon( '@@2@@' )
        call m.addModification( MOD_ARMOR, -25.00, -1.00 )
        call m.addModification( MOD_MOVESPEED, 0.20, -0.002 )
        call Panic.setBuffModifier( m )
        set NAttack = ProjectileType.createInterpolate("Abilities\\Weapons\\BoatMissile\\BoatMissile.mdl", 900.00 ) 
        call NAttack.setEventOnInterpolationFinished(NAttackHit)
        set Soul = ProjectileType.create( "Abilities\\Spells\\Undead\\Possession\\PossessionMissile.mdl", 6.00, 300.00 )
        call Soul.setAcceleration( 10.00 )
        call Soul.enableCollision( SoulHit, 100.00, TARGET_CREEPS, false )
        call Soul.setStartRotation( 6.00 )
        set mbvals = MultiboardValues.create( 1 )
        call mbvals.setKey( 0, "Souls" )
	endfunction
                    [values] => Array
                        (
                            [visible] => true
                            [icon] => ReplaceableTextures\CommandButtons\BTNDwarvenLongRifle.blp
                            [name] => Cannon
                            [short_explain] => The Dutchman attacks with its board cannons.
                            [long_explain] => The Dutchman attacks a random creep in |cffFFFF80800|r range, dealing the tower's attack damage in |cffFFFF80250|r AoE around the target on hit. Uses the tower's attackspeed.
                        )

                )

            [2] => Array
                (
                    [name] => On Tower Details
                    [code] => call mbvals.setValue(0, I2S(Dutchman(tower.userInt).souls))
    return mbvals
                    [values] => Array
                        (
                        )

                )

            [3] => Array
                (
                    [name] => On Kill
                    [code] => local Iterate I = Iterate.overUnitsInRangeOfUnit( tower, TARGET_CREEPS, Event.getTarget(), 300.00 )
    local Unit U
    local integer lvl = tower.getLevel()
    local Dutchman d = tower.userInt
    set d.souls = d.souls + 1
    call SFXAtUnit( "Abilities\\Spells\\Items\\AIso\\AIsoTarget.mdl", Event.getTarget().getUnit() )
    loop
        set U = I.next()
        exitwhen U == 0
        call Panic.apply( tower, U, lvl )
    endloop
                    [values] => Array
                        (
                            [visible] => true
                            [icon] => ReplaceableTextures\CommandButtons\BTNDarkSummoning.blp
                            [name] => Panic
                            [short_explain] => Whenever the Dutchman kills a creep, it collects its soul. All creeps around it panic.
                            [long_explain] => Whenever the Dutchman kills a creep, it collects its soul. All creeps in a range of |cffFFFF80300|r around the killed creep start to panic. They have only one thing in mind: RUN!. They don ' t care about their defense and their armor is reduced by |cffFFFF8025|r, but they run |cffFFFF8020%|r faster. This effect lasts |cffFFFF8010|r seconds.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80-1|r armor|n|cffFFFF80-0.2%|r movement speed
                        )

                )

            [4] => Array
                (
                    [name] => On Tower Destruction
                    [code] => call Dutchman(tower.userInt).destroy()
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

            [5] => Array
                (
                    [name] => On Damage
                    [code] => set Event.damage = 0
                    [values] => Array
                        (
                            [ONDAMAGE_chance] => 1.0
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [ONDAMAGE_chanceLevelAdd] => 0.0
                            [long_explain] => 
                        )

                )

            [6] => Array
                (
                    [name] => Autocast
                    [code] => set Dutchman(tower.userInt).soulstorm = true
                    [values] => Array
                        (
                            [AUTOCAST_cooldown] => 5.00
                            [AUTOCAST_autoRange] => 600.00
                            [AUTOCAST_manacost] => 0
                            [icon] => ReplaceableTextures\CommandButtons\BTNBanish.blp
                            [AUTOCAST_range] => 600.00
                            [AUTOCAST_targetType] => 0
                            [AUTOCAST_numBuffsBeforeIdle] => 0
                            [caster_art] => 
                            [long_explain] => When this spell is activated |cffFFFF802|r souls will be released every |cffFFFF800.3|r seconds. When a soul collides with a creep it deals |cffFFFF8014000|r spell damage. When a soul damages a creep, its damage is reduced by |cffFFFF8050%|r.
                            [target_art] => 
                            [AUTOCAST_autocastType] => AC_TYPE_NOAC_IMMEDIATE
                            [AUTOCAST_buffType] => 0
                            [AUTOCAST_isExtended] => false
                            [name] => Soul Storm
                            [AUTOCAST_targetSelf] => true
                            [short_explain] => The Dutchman releases all collected souls in one devasting storm.
                        )

                )

            [7] => Array
                (
                    [name] => On Tower Creation
                    [code] => local Projectile p = Projectile.createFromUnitToUnit( Proj, tower, 1.00, tower.calcSpellCritNoBonus(), tower, tower, true, true, false )
    local Dutchman d = Dutchman.create( p, tower )
    call p.color( 100, 100, 100, 180 )
    call p.setScale( 1.00 )
    set tower.userInt = d
    set p.userInt = d
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

        )

    [abilities] => Array
        (
            [0] => Array
                (
                    [id] => @@0@@
                    [derivedFrom] => ANab
                    [oeValues] => Array
                        (
                            [Cost1] => 0
                            [Rng1] => 99999
                            [DataE1] => 0
                            [DataD1] => 1
                            [Art] => ReplaceableTextures\CommandButtons\BTNAcidBomb.blp
                            [HeroDur1] => 1
                            [hero] => 0
                            [BuffID1] => @@1@@
                            [Area1] => 1
                            [DataC1] => 0
                            [Name] => Canon 2
                            [Dur1] => 1
                            [Missileart] => Abilities\Spells\Undead\Possession\PossessionMissile.mdl
                            [levels] => 1
                            [targs1] => ground,enemies,air,neutral
                        )

                )

        )

    [buffs] => Array
        (
            [0] => Array
                (
                    [id] => @@1@@
                    [derivedFrom] => BNab
                    [oeValues] => Array
                        (
                            [EditorName] => Under Attack
                            [Buffubertip] => This unit takes damage.
                            [TargetArt] => Array
                                (
                                )

                            [Bufftip] => Under Attack
                            [Buffart] => ReplaceableTextures\CommandButtons\BTNUndeadDestroyer.blp
                        )

                )

            [1] => Array
                (
                    [id] => @@2@@
                    [derivedFrom] => BHfs
                    [oeValues] => Array
                        (
                            [Targetattach] => head
                            [EditorName] => Panic
                            [Buffubertip] => This unit is in panic. It has dramatically decreased armor but increased movement speed.
                            [TargetArt] => Abilities\Spells\Other\HowlOfTerror\HowlTarget.mdl
                            [Targetattachcount] => 1
                            [Bufftip] => Panic
                            [Buffart] => ReplaceableTextures\CommandButtons\BTNDarkSummoning.blp
                        )

                )

        )

    [units] => Array
        (
        )

    [references] => Array
        (
        )

)