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

            [Art] => ReplaceableTextures\CommandButtons\BTNMarkOfFire.blp
            [turnRate] => 0.5
            [dmgplus1] => 831
            [bldtm] => 1
            [goldcost] => 700
            [sides1] => 1
            [Missilearc] => 0.4
            [acquire] => 800
            [upgrades] => Array
                (
                )

            [Upgrade] => Array
                (
                )

            [Name] => Little Phoenix
            [weapTp1] => missile
            [MissileHoming] => 1
            [file] => units\human\phoenix\phoenix.mdl
            [uberSplat] => OSMA
            [Missileart] => Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl
            [Missilespeed] => 800
            [dice1] => 1
            [RngBuff1] => 250
            [modelScale] => 0.4
            [rangeN1] => 850
            [atkType1] => pierce
            [cool1] => 2.5
            [Ubertip] => A little phoenix which can burn more than 1 target with its attacks.
            [abilList] => Array
                (
                )

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

            [targs1] => Array
                (
                )

            [weapsOn] => 1
        )

    [settings] => Array
        (
            [balanceTip] => |cffFFFF00+20% |rdmg to nature (|cffFFFF00+1%|r/lvl)
            [abil_factor] => 0.375
            [author] => Der_kleine_Tomy
            [alpha] => 255
            [authorDisplay] => |c00ff0000Der_kleine_Tomy|r
            [version] => 1.0
            [element] => fire
            [rarity] => rare
        )

    [effects] => Array
        (
            [0] => Array
                (
                    [x] => -0.0000235438
                    [y] => 13.7342
                    [z] => 0
                    [scale] => 0.4
                    [rot] => 1.5708
                    [file] => Doodads\Dungeon\Rocks\Cave_FieryCrator\Cave_FieryCrator.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

            [1] => Array
                (
                    [x] => 2.0396
                    [y] => 11.2254
                    [z] => 0
                    [scale] => 0.6
                    [rot] => 0.977384
                    [file] => Doodads\Dungeon\Props\LavaCracks\LavaCracks3.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

            [2] => Array
                (
                    [x] => -0.0302131
                    [y] => -11.0221
                    [z] => 0
                    [scale] => 0.4
                    [rot] => 3.28122
                    [file] => Doodads\Cinematic\FireTrapUp\FireTrapUp.mdl
                    [red] => 255
                    [green] => 255
                    [blue] => 255
                    [alpha] => 255
                    [pitch] => 0
                    [advanced] => false
                    [animation] => Array
                        (
                        )

                    [aniSpeed] => 50
                )

        )

    [dmgTable] => Array
        (
            [0] => Array
                (
                    [id] => MOD_DMG_TO_NATURE
                    [base] => 0.2
                    [add] => 0.01
                )

        )

    [triggers] => Array
        (
            [0] => Array
                (
                    [name] => On Attack
                    [code] => local integer attacks = 1
    local boolean add = false
    local Unit maintarget = Event.getTarget()
    local Unit target
    local Iterate it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_TYPE_CREEPS,maintarget,450)
    local real sidearc = 0.20
    local boolean itDestroyed = false
 
    if tower.getLevel() >= 15 then
        set attacks = attacks + 1
    endif
 
    loop
        exitwhen attacks == 0 // Exit when all attacks are fired
        
        // If the Iterate is not destroyed, get the next target
        if not itDestroyed then
            set target = it.next()
        
            // If there are no more targets
            if target == 0 then
                set itDestroyed = true // Iterate is destroyed (auto destroy)
                set target = maintarget // target is the maintarget now
            endif
        endif
  
        // If there are no more units, shoot at the maintarget (itDestroyed). If there are units then don't shoot at the maintarget
        if itDestroyed or target != maintarget then
            call Projectile.createBezierInterpolationFromUnitToUnit(tomy_PhoenixPT,tower,0,0,tower,target,0,sidearc,0,true).setScale(0.40)
            set attacks = attacks - 1
            set sidearc = -sidearc
            if add then
                set sidearc = sidearc + 0.20
            endif
            set add = not add
        endif

    endloop
 
    // If the Iterate is not destroyed yet, destroy it
    if not itDestroyed then
        call it.destroy()
    endif
                    [values] => Array
                        (
                            [visible] => true
                            [icon] => ReplaceableTextures\CommandButtons\BTNOrbOfFire.blp
                            [name] => Phoenixfire
                            [short_explain] => This tower attacks multiple targets and melts their armor.
                            [ONATTACK_chance] => 1.0
                            [ONATTACK_chanceLevelAdd] => 0.0
                            [long_explain] => The Little Phoenix attacks up to |cffFFFF802|r targets at once. If there are less creeps than attacks, the remaining attacks will hit the main target. The armor of attacked creeps melts, reducing it by |cffFFFF800.5|r for |cffFFFF805|r seconds. This buff is stackable.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+0.01|r armor reduction|n|cffFFFF80+1|r target at level |cffFFFF8015|r
                        )

                )

            [1] => Array
                (
                    [name] => Header
                    [code] => globals
        //@export
        ProjectileType tomy_PhoenixPT
        //@export
        BuffType tomy_PhoenixFireBuff
        boolean purged = false
    endglobals
    
    function tomy_PhoenixAttackHit takes Projectile p, Unit target returns nothing
        local Tower tower = p.getCaster()
        local Buff b = target.getBuffOfType(tomy_PhoenixFireBuff)
        local integer familyMember = tower.userInt
        local integer level = tower.getLevel()
        local real armorLoss
        
        if familyMember == 1 then
            set armorLoss = 0.50 + 0.01 * level
        elseif familyMember == 2 then
            set armorLoss = 0.60 + 0.015 * level
        elseif familyMember == 3 then
            set armorLoss = 0.70 + 0.020 * level
        endif
        
        if b != 0 then
            call tomy_PhoenixFireBuff.apply(tower, target, b.getPower() + R2I(armorLoss * 100.0))
        else
            call tomy_PhoenixFireBuff.apply(tower, target, R2I(armorLoss * 100.0))
        endif
        call tower.doAttackDamage(target,tower.getCurrentAttackDamageWithBonus(),tower.calcAttackMulticrit(0,0,0))
        
    endfunction
    
    function tomy_PhoenixFireBuffPurged takes Buff b returns nothing
        set purged = true
    endfunction
    
    function tomy_PhoenixFireBuffExpired takes Buff b returns nothing
        local integer power = b.getPower()
        local Unit target = b.getBuffedUnit()
        local Tower tower = b.getCaster()
        local integer level = tower.getLevel()
        local integer familyMember = tower.userInt
        local real damagePerPower // 100 power = -1.00 armor
        local real armorRegainFactor
        local real damageMultiplier = tower.getCurrentAttackDamageWithBonus() / tower.getBaseDamage()
        
        if familyMember == 1 then
            set damagePerPower = 1.0
            set armorRegainFactor = 0.70 - 0.01 * level
        elseif familyMember == 2 then
            set damagePerPower = 2.6
            set armorRegainFactor = 0.60 - 0.015 * level
        elseif familyMember == 3 then
            set damagePerPower = 4.4
            set armorRegainFactor = 0.50 - 0.020 * level
        endif
        
        if not purged then
            set damagePerPower = damagePerPower * damageMultiplier
            call tower.doAttackDamageAoEUnit(target, 200.0 , power * damagePerPower, tower.calcAttackMulticrit(0,0,0),0.5)
            call SFXAtUnit("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl", target.getUnit())
        endif
        call target.modifyProperty(MOD_ARMOR, -power / 100.0 * (1 - armorRegainFactor))
        set purged = false
    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()
         call m.addModification(MOD_ARMOR,0,-0.01)
         set tomy_PhoenixPT = ProjectileType.createInterpolate("Abilities\\Weapons\\PhoenixMissile\\Phoenix_Missile.mdl",800)
         call tomy_PhoenixPT.setEventOnInterpolationFinished(ProjectileTargetEvent.tomy_PhoenixAttackHit)
         set tomy_PhoenixFireBuff = BuffType.create(5.0,0,false)
         call tomy_PhoenixFireBuff.setBuffIcon('@@0@@')
         call tomy_PhoenixFireBuff.setBuffModifier(m)
         call tomy_PhoenixFireBuff.addEventOnCleanup(EventHandler.tomy_PhoenixFireBuffExpired)
         call tomy_PhoenixFireBuff.setEventOnPurge(EventHandler.tomy_PhoenixFireBuffPurged)
	endfunction
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

            [2] => Array
                (
                    [name] => On Damage
                    [code] => local Unit target = Event.getTarget()
    local Buff b = target.getBuffOfType(tomy_PhoenixFireBuff)
    local integer level = tower.getLevel()
    local real armorLoss = 0.50 + 0.01 * level
        
    if b != 0 then
        call tomy_PhoenixFireBuff.apply(tower, target, b.getPower() + R2I(armorLoss * 100.0))
    else
        call tomy_PhoenixFireBuff.apply(tower, target, R2I(armorLoss * 100.0))
    endif
                    [values] => Array
                        (
                            [ONDAMAGE_chance] => 1.0
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [ONDAMAGE_chanceLevelAdd] => 0.0
                            [long_explain] => 
                        )

                )

            [3] => Array
                (
                    [name] => Autocast
                    [code] => local Buff b
    local Iterate it = Iterate.overUnitsInRangeOfCaster(tower, TARGET_TYPE_CREEPS, 3000.0)
    local Unit u
    loop
        set u = it.next()
        exitwhen u == 0
        set b = u.getBuffOfType(tomy_PhoenixFireBuff)
        if b != 0 then
            call b.removeBuff()
        endif
    endloop
                    [values] => Array
                        (
                            [AUTOCAST_cooldown] => 1.0
                            [AUTOCAST_autoRange] => 0.0
                            [AUTOCAST_manacost] => 0
                            [icon] => ReplaceableTextures\CommandButtons\BTNWallOfFire.blp
                            [AUTOCAST_range] => 0.0
                            [AUTOCAST_targetType] => 0
                            [AUTOCAST_numBuffsBeforeIdle] => 0
                            [caster_art] => 
                            [long_explain] => When Phoenixfire expires, it erupts and deals |cffFFFF80100|r elemental damage per armor point the creep is missing in |cffFFFF80200|r range around its target. Additionally the target regains only |cffFFFF8070%|r of its armor. Creeps further away recieve less damage. This ability can be cast to make Phoenixfire expire immediately.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80-1%|r armor regain
                            [target_art] => 
                            [AUTOCAST_autocastType] => AC_TYPE_NOAC_IMMEDIATE
                            [AUTOCAST_buffType] => 0
                            [AUTOCAST_isExtended] => false
                            [name] => Eruption
                            [AUTOCAST_targetSelf] => true
                            [short_explain] => When Phoenixfire expires, this tower deals elemental damage in an AoE.
                        )

                )

            [4] => Array
                (
                    [name] => On Tower Creation
                    [code] => set tower.userInt = 1 // Save the family member (1 = first member)
    set tower.userInt2 = 0 // Used to save the buff (double linked list)
    call AddUnitAnimationProperties(tower.getUnit(), "stand alternate", false)
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

        )

    [abilities] => Array
        (
        )

    [buffs] => Array
        (
            [0] => Array
                (
                    [id] => @@0@@
                    [derivedFrom] => Bpxf
                    [oeValues] => Array
                        (
                            [EditorName] => Phoenixfire
                            [Buffubertip] => This unit's armor is melting.
                            [TargetArt] => Abilities\Spells\Other\BreathOfFire\BreathOfFireDamage.mdl
                            [Bufftip] => Melting Armor
                            [Buffart] => ReplaceableTextures\CommandButtons\BTNMarkOfFire.blp
                        )

                )

        )

    [units] => Array
        (
        )

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

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

        )

)