Initiate Elementalist v1
150
ID:
59
Family ID:
Author:
Kel-Thuzad
Rarity:
uncommon
Element:
astral
Attack Type:
Magic
Attack Range:
900
Attack CD:
2
Damage:
25-25
Status:
Approved

Description:

Not very experienced mage of elements.
Elemental Chaos
Elementalist casts one of the following spells on attack:

Fire Blast: 66% chance, 200 AoE, 190 damage
Frost Nova: 33% chance, 250 AoE, 125 damage, 10% slow for 3 seconds

Level Bonus:
+7.6 damage (Fire Blast)
+5 damage (Frost Nova)
Download

Toggle Triggers

Header

globals
    //@export
    BuffType KelSlow 
endglobals
//The init function
private function init takes nothing returns nothing
    local Modifier slow=Modifier.create() 
    call slow.addModification(MOD_MOVESPEED,0,-0.001) 
    set KelSlow=BuffType.create(0,0,false) // apply custom timed
    call KelSlow.setBuffIcon('@@0@@') 
    call KelSlow.setBuffModifier(slow)
    endfunction

On Attack

ONATTACK_chance: 1.0 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
    local integer randomSpellID=GetRandomInt(1,3)
    local Creep c = Event.getTarget()
    local Unit u
    local Iterate it
    if randomSpellID<3 then
        call SFXAtUnit("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl",c.getUnit())
        call tower.doSpellDamageAoEUnit(c,200,190+tower.getLevel()*7.6,tower.calcSpellCritNoBonus(),0)
    else
        set it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_CREEPS,c,250)
        loop
            set u = it.next()
            exitwhen u == 0
            call KelSlow.applyCustomTimed(tower,u,100,3)
        endloop
        call SFXAtUnit("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl",c.getUnit())
        call tower.doSpellDamageAoEUnit(c,250,125+tower.getLevel()*5,tower.calcSpellCritNoBonus(),0)
    endif
endfunction
Adept Elementalist v1
500
ID:
62
Family ID:
Author:
Kel-Thuzad
Rarity:
uncommon
Element:
astral
Attack Type:
Magic
Attack Range:
900
Attack CD:
2
Damage:
83-83
Status:
Approved

Description:

Little more experienced mage of elements.
Elemental Chaos
Elementalist casts one of the following spells on attack:

Fire Blast: 40% chance, 250 AoE, 500 damage
Frost Nova: 20% chance, 250 AoE, 250 damage, 12% slow for 3 seconds
Aftershock: 40% chance, 750 damage, 0.5 seconds stun

Level Bonus:
+10 damage (Fire Blast)
+8 damage (Frost Nova)
+0.01 seconds stun (Aftershock)
Download

Toggle Triggers

Header

globals
    //@import
    BuffType KelSlow 
endglobals
//The init function
private function init takes nothing returns nothing
endfunction

On Attack

ONATTACK_chance: 1.0 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
    local integer randomSpellID=GetRandomInt(1,5)
    local Creep c = Event.getTarget()
    local Unit u
    local Iterate it
    if randomSpellID<3 then
        call SFXAtUnit("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl",c.getUnit())
        call tower.doSpellDamageAoEUnit(c,250,500+tower.getLevel()*10,tower.calcSpellCritNoBonus(),0)
    elseif randomSpellID<5 then
        call SFXAtUnit("Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMissile.mdl",c.getUnit())
        call cb_stun.applyOnlyTimed(tower,c,0.5+tower.getLevel()*0.01)
        call tower.doSpellDamage(c,750,tower.calcSpellCritNoBonus())
    else
        set it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_CREEPS,c,250)
        loop
            set u = it.next() //Get the next unit
            exitwhen u == 0 //Stop when there are no more units
            call KelSlow.applyCustomTimed(tower,u,120,3)
        endloop
        call SFXAtUnit("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl",c.getUnit())
        call tower.doSpellDamageAoEUnit(c,250,50+tower.getLevel()*8,tower.calcSpellCritNoBonus(),0)
    endif
endfunction
Master Elementalist v1
1250
ID:
61
Family ID:
Author:
Kel-Thuzad
Rarity:
uncommon
Element:
astral
Attack Type:
Magic
Attack Range:
900
Attack CD:
2
Damage:
209-209
Status:
Approved

Description:

Really experienced mage of elements.
Elemental Chaos
Elementalist casts one of the following spells on attack:

Fire Blast: 30% chance, 250 AoE, 1650 damage
Frost Nova: 20% chance, 250 AoE, 800 damage, 14% slow for 4 seconds
Aftershock: 30% chance, 2000 damage, 0.5 seconds stun
Lightning Burst: 20% chance, 1650 damage, affects 5 random targets in 900 range 

Level Bonus:
+18 damage (Fire Blast)
+10 damage (Frost Nova)
+0.01 seconds stun (Aftershock)
+30 damage (Lightning Burst)
Download

Toggle Triggers

Header

globals
    //@import
    BuffType KelSlow 
endglobals
//The init function
private function init takes nothing returns nothing
endfunction

On Attack

ONATTACK_chance: 1.0 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
    local integer randomSpellID=GetRandomInt(1,10)
    local Creep c = Event.getTarget()
    local Unit u
    local integer count = 0
    local Iterate it
    if randomSpellID<4 then
        call SFXAtUnit("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl",c.getUnit())
        call tower.doSpellDamageAoEUnit(c,250,1650+tower.getLevel()*18,tower.calcSpellCritNoBonus(),0)
    elseif randomSpellID<7 then
        call SFXAtUnit("Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMissile.mdl",c.getUnit())
        call cb_stun.applyOnlyTimed(tower, c, 0.5+tower.getLevel()*0.01 )
        call tower.doSpellDamageAoEUnit(c,10,2000,tower.calcSpellCritNoBonus(),0)
    elseif randomSpellID<9 then
        set it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_CREEPS,c,250)
        loop
            set u = it.next() //Get the next unit
            exitwhen u == 0 //Stop when there are no more units
            call KelSlow.applyCustomTimed(tower,u,140,4)
        endloop
        call SFXAtUnit("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl",c.getUnit())
        call tower.doSpellDamageAoEUnit(c,250,800+tower.getLevel()*10,tower.calcSpellCritNoBonus(),0)
    else
        set it = Iterate.overUnitsInRangeOfCaster(tower,TARGET_CREEPS,900)
        loop
            set u = it.next()
            set count = count + 1
            exitwhen count == 6 or u == 0
            call SFXAtUnit("Abilities\\Weapons\\Bolt\\BoltImpact.mdl",u.getUnit())
            call tower.doSpellDamage(u,1650+(tower.getLevel()*30),tower.calcSpellCritNoBonus())
            call Lightning.createFromUnitToUnit("CLPB", tower, u).setLifetime(0.15)
        endloop
        if u != 0 then
            call it.destroy()
        endif
    endif
endfunction
Divine Elementalist v1
2500
ID:
60
Family ID:
Author:
Kel-Thuzad
Rarity:
uncommon
Element:
astral
Attack Type:
Magic
Attack Range:
900
Attack CD:
2
Damage:
417-417
Status:
Approved

Description:

Let all who live in the world stand in awe of him.
Elemental Fury
Consecutive casts of the same spell will deal 50% more damage.

Level Bonus:
+1% damage
Elemental Chaos
Elementalist casts one of the following spells on attack:

Fire Blast: 30% chance, 300 AoE, 3000 damage
Frost Nova: 20% chance, 300 AoE, 2000 damage, 15% slow for 4 seconds
Aftershock: 30% chance, 6000 damage, 0.7 seconds stun
Lightning Burst: 20% chance, 3000 damage, affects 6 random targets in 900 range 

Level Bonus:
+60 damage (Fire Blast)
+80 damage (Frost Nova)
+0.02 seconds stun (Aftershock)
+60 damage (Lightning Burst)
Download

Toggle Triggers

Header

globals
    //@import
    BuffType KelSlow
endglobals
//The init function
private function init takes nothing returns nothing
endfunction

On Attack

ONATTACK_chance: 1.0 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
    local integer randomSpellID=GetRandomInt(1,10) //RandomSpell
    local Creep c = Event.getTarget()
    local Unit u
    local integer count = 0 //counter for lightnings
    local Iterate it
    if randomSpellID<4 then //FireBlast 
        if tower.userInt2 == 1 then 
            set tower.userInt = tower.userInt + 1 
        else
            set tower.userInt = 1
            set tower.userInt2 = 1
        endif
        call SFXAtUnit("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl",c.getUnit()) //BANG!!
        call tower.doSpellDamageAoEUnit(c,300,(3000+tower.getLevel()*60)*(1+((0.5+tower.getLevel()*0.01)*(tower.userInt-1))),tower.calcSpellCritNoBonus(),0)
    elseif randomSpellID<7 then //Aftershock
        if tower.userInt2 == 2 then 
            set tower.userInt = tower.userInt + 1 
        else
            set tower.userInt = 1
            set tower.userInt2 = 2
        endif
        call SFXAtUnit("Abilities\\Spells\\Human\\MarkOfChaos\\MarkOfChaosTarget.mdl",c.getUnit()) //just a pretty SFX
        call cb_stun.applyOnlyTimed(tower,c,0.7+tower.getLevel()*0.02 )
        call tower.doSpellDamage(c,6000*(1+((0.5+tower.getLevel()*0.01)*(tower.userInt-1))),tower.calcSpellCritNoBonus())
    elseif randomSpellID<9 then //FrostNova
        if tower.userInt2 == 3 then 
            set tower.userInt = tower.userInt + 1 
        else
            set tower.userInt = 1
            set tower.userInt2 = 3
        endif
        set it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_CREEPS,c,300)
        loop //slow
            set u = it.next()
            exitwhen u == 0 
            call KelSlow.applyCustomTimed(tower,u,150,4) //slow
        endloop
        call SFXAtUnit("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl",c.getUnit()) //sfx
        call SFXAtUnit("Abilities\\Spells\\Undead\\FreezingBreath\\FreezingBreathMissile.mdl",c.getUnit()) //sfx
        call tower.doSpellDamageAoEUnit(c,300,(2000+tower.getLevel()*80)*(1+((0.5+tower.getLevel()*0.01)*(tower.userInt-1))),tower.calcSpellCritNoBonus(),0)
    else //Lightning Burst
        if tower.userInt2 == 4 then 
            set tower.userInt = tower.userInt + 1 
        else
            set tower.userInt = 1
            set tower.userInt2 = 4
        endif
        set it = Iterate.overUnitsInRangeOfCaster(tower,TARGET_CREEPS,900)
        loop //SFX+lightnings
            set u = it.next()
            set count = count+1
            exitwhen count == 7 or u == 0 //"count" is number of lightnings to create
            call SFXAtUnit("Abilities\\Weapons\\Bolt\\BoltImpact.mdl",u.getUnit()) //SFX+sound on unit
            call tower.doSpellDamage(u,(3000+tower.getLevel()*60)*(1+((0.5+tower.getLevel()*0.01)*(tower.userInt-1))),tower.calcSpellCritNoBonus()) //damage
            call Lightning.createFromUnitToUnit("CLPB", tower, u).setLifetime(0.15) //lightning itself
        endloop
        if u != 0 then
            call it.destroy()
        endif
    endif
endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
set tower.userInt=0 //Stores how many consecutive times last spell was cast
set tower.userInt2=0 //Stores which spell was last cast
endfunction