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

            [Art] => ReplaceableTextures\CommandButtons\BTNVillagerWoman.blp
            [turnRate] => 3
            [dmgplus1] => 85
            [bldtm] => 1
            [goldcost] => 70
            [sides1] => 5
            [acquire] => 800
            [upgrades] => Array
                (
                )

            [Upgrade] => Array
                (
                )

            [Name] => Teacher
            [weapTp1] => missile
            [MissileHoming] => 1
            [file] => units\critters\VillagerWoman\VillagerWoman.mdl
            [uberSplat] => OSMA
            [Missileart] => Abilities\Spells\Undead\OrbOfDeath\OrbOfDeathMissile.mdl
            [Missilespeed] => 1500
            [dice1] => 1
            [RngBuff1] => 250
            [modelScale] => 0.8
            [rangeN1] => 900
            [atkType1] => pierce
            [cool1] => 1.5
            [Ubertip] => Teacher teaches you to attack!
            [abilList] => Array
                (
                )

            [buildingShadow] => Array
                (
                )

            [targs1] => Array
                (
                )

            [weapsOn] => 1
            [castpt] => 0.3
        )

    [settings] => Array
        (
            [balanceTip] => |cffFFFF00+20% |rexp gain
            [abil_factor] => 0.8
            [author] => Deikorim / Limfa
            [alpha] => 255
            [authorDisplay] => |c007EBFF1Limfa|r
            [version] => 1.0
            [element] => astral
            [rarity] => uncommon
        )

    [effects] => Array
        (
        )

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

        )

    [triggers] => Array
        (
            [0] => Array
                (
                    [name] => On Attack
                    [code] => call teacher_attack(tower,1)
    call SetUnitAnimationByIndex(tower.getUnit(), 3)
                    [values] => Array
                        (
                            [visible] => true
                            [icon] => ReplaceableTextures\CommandButtons\BTNTomeRed.blp
                            [name] => Knowledge
                            [short_explain] => Attacking a creep has a chance to grant |cffFFFF801|r experience to a random tower.
                            [ONATTACK_chance] => 1.0
                            [ONATTACK_chanceLevelAdd] => 0.0
                            [long_explain] => When the teacher attacks there's a |cffFFFF8010%|r chance a random tower in |cffFFFF80600|r range will learn from her, gaining |cffFFFF801|r experience. |n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+0.6%|r chance
                        )

                )

            [1] => Array
                (
                    [name] => Header
                    [code] => globals
        //@export
        ProjectileType knowledge_green
        //@export
        ProjectileType knowledge_blue
        //@export
        ProjectileType knowledge_red
        //@export
        MultiboardValues limfa_teacherboard
    endglobals
    
    function hit takes Projectile p, Unit result returns nothing
        local Tower t = p.getCaster()
        if result.getUID() == p.userInt then
            call result.addExp(p.userReal)
            if Tower(p.userInt2).getUID() == t.getUID() then
                set t.userReal2 = t.userReal2 + p.userReal * result.getProp_ExpReceived()
            endif
        endif
    endfunction 
    
    //@export
    function teacher_attack takes Tower tower, real xp returns nothing
        local Iterate inRange
        local Unit result
        local ProjectileType pt
        local Projectile p
        local integer i
        
        
        if tower.calcChance(0.10+0.006*tower.getLevel()) then
            set inRange = Iterate.overUnitsInRangeOfCaster(tower,TARGET_TOWERS,600)
            set result = inRange.nextRandom()
            if result == tower then
                set result = inRange.nextRandom()
            endif
            
            if result != 0 then
                set i = GetRandomInt(1,3)
                if i == 1 then
                    set pt = knowledge_green
                elseif i == 2 then
                    set pt = knowledge_red
                elseif i == 3 then
                    set pt = knowledge_blue
                endif
                set p = Projectile.createFromUnitToUnit(pt, tower, 1.0, 1.0, tower, result, true, false, true)
                call p.setScale(0.7)
                set p.userReal = xp
                set p.userInt = result.getUID()
                set p.userInt2 = tower.getUID()
                call inRange.destroy()
            endif
        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 limfa_teacherboard = MultiboardValues.create(1)
	    call limfa_teacherboard.setKey(0,"Xp Granted")
        set knowledge_green = ProjectileType.create( "Objects\\InventoryItems\\tomeGreen\\tomeGreen.mdl", 20.0, 450.00 ) 
        call knowledge_green.enableFreeRotation()
        call knowledge_green.disableExplodeOnHit()
        call knowledge_green.enableHoming( ProjectileTargetEvent.hit, 0 )
        set knowledge_blue = ProjectileType.create( "Objects\\InventoryItems\\tomeBlue\\tomeBlue.mdl", 20.0, 450.00 ) 
        call knowledge_blue.enableFreeRotation()
        call knowledge_blue.disableExplodeOnHit()
        call knowledge_blue.enableHoming( ProjectileTargetEvent.hit, 0 )
        set knowledge_red = ProjectileType.create( "Objects\\InventoryItems\\tomeRed\\tomeRed.mdl", 20.0, 450.00 ) 
        call knowledge_red.enableFreeRotation()
        call knowledge_red.disableExplodeOnHit()
        call knowledge_red.enableHoming( ProjectileTargetEvent.hit, 0 )

    endfunction
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

            [2] => Array
                (
                    [name] => On Tower Details
                    [code] => call limfa_teacherboard.setValue(0, formatFloat(tower.userReal2,1))
    return limfa_teacherboard
                    [values] => Array
                        (
                            [0] => Array
                                (
                                    [_value] => 0
                                    [typ] => string
                                )

                        )

                )

            [3] => Array
                (
                    [name] => On Tower Creation
                    [code] => local Tower preceding = Event.getPrecedingTower()
    if (preceding.getFamily() == tower.getFamily()) then
        set tower.userReal2 = preceding.userReal2
    else
        set tower.userReal2 = 0
    endif
                    [values] => Array
                        (
                            [visible] => false
                            [icon] => 
                            [name] => 
                            [short_explain] => 
                            [long_explain] => 
                        )

                )

        )

    [abilities] => Array
        (
        )

    [buffs] => Array
        (
        )

    [units] => Array
        (
        )

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

            [1] => Array
                (
                    [export] => true
                    [category] => global
                    [typ] => ProjectileType
                    [name] => knowledge_blue
                )

            [2] => Array
                (
                    [export] => true
                    [category] => global
                    [typ] => ProjectileType
                    [name] => knowledge_red
                )

            [3] => Array
                (
                    [export] => true
                    [category] => global
                    [typ] => MultiboardValues
                    [name] => limfa_teacherboard
                )

        )

)