Owl of Wisdom v1
2300
ID:
190
Family ID:
Author:
Der_kleine_Tomy
Rarity:
unique
Element:
astral
Attack Type:
Energy
Attack Range:
900
Attack CD:
2
Damage:
1756-1756
Abil. Factor:
0.30
Status:
Approved

Description:

Strong spell damage tower which gets stronger with experience. Can even damage immune units with it's spells.

Latest Upload Comment:

Restored from 1.10
Specials:
5% spell crit chance (+0.15%/lvl)
+1% spell damage/lvl
Energyball
The Owl of Wisdom has a 25% chance on attack to cast Energyball on the attacked creep. The Energyball deals 4500 + [2.25x Towerexp] spell damage in a 100 AoE around the attacked creep. The experience bonus cannot exceed [150x current wave] damage.

Level Bonus:
+1 AoE
+0.4% chance
Energy Aura
Every 5 seconds, for each creep in 900 range the Owl of Wisdom has a 10% chance to cast Energyball on it.

Level Bonus:
+0.2% chance
Download

Toggle Triggers

Header

    globals
    //@export
      ProjectileType tomy_energyballPT
    endglobals
    
    private function Tomy_Energyball_Damage takes Projectile p, Unit target returns nothing
        local Tower tower = p.userInt
        local real damage
        local real immunedamage
  
        // Owl of Wisdom
        if tower.userInt == 1 then
            set damage = 4500.0 + RMinBJ(tower.getExp() * 2.25, tower.getOwner().getTeam().getLevel() * 150.0)
            set immunedamage = (10.0 + 0.4 * tower.getLevel()) / 100
        else // Ancient Owl of Wisdom
            set damage = 6500.0 + RMinBJ(tower.getExp() * 3.25, tower.getOwner().getTeam().getLevel() * 150.0)
            set immunedamage = (15.0 + 0.6 * tower.getLevel()) / 100
        endif
      
        if not target.isImmune() then
            call tower.doSpellDamageAoEUnit(target, 100 + (1* tower.getLevel()),damage, tower.calcSpellCritNoBonus(),0)
        else
            call tower.doAttackDamageAoEUnit(target,100 + (1* tower.getLevel()) ,damage * immunedamage * tower.getProp_SpellDmgDealt(), tower.calcSpellCritNoBonus(), 0)
        endif
  
        call Effect.createColored("Units\\NightElf\\Wisp\\WispExplode.mdl",p.x,p.y,p.z,0,0.70,0,0,255,255).setLifetime(1.0)    
    endfunction
    
 
    function Tomy_Energyball_Start takes Unit target, Tower tower returns nothing
        set Projectile.createFromUnitToUnit(tomy_energyballPT, tower, 0, 0, tower, target, true, false, false).userInt = tower 
    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 tomy_energyballPT = ProjectileType.create("Abilities\\Spells\\Undead\\DarkSummoning\\DarkSummonMissile.mdl", 5.0, 950.0)
        call tomy_energyballPT.enableHoming(ProjectileTargetEvent.Tomy_Energyball_Damage, 0.0)
    endfunction

On Attack

ONATTACK_chance: 0.25 ONATTACK_chanceLevelAdd: 0.004
function onAttack takes Tower tower returns nothing
    call Tomy_Energyball_Start(Event.getTarget(), tower)  
endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
    set tower.userInt = 1
endfunction

Periodic

PERIODIC_period: 5.0
function periodic takes Tower tower returns nothing
 
    local Unit target
    local Iterate it = Iterate.overUnitsInRangeOfCaster(tower,TARGET_CREEPS,900)
   
    loop
        set target = it.next()
        exitwhen target == 0
        if tower.calcChance(0.10+0.002*tower.getLevel()) then
            call Tomy_Energyball_Start(target, tower)
        endif 
    endloop
  
endfunction