Buried Soul v1
80
ID:
376
Family ID:
Author:
SirCoqaLot.
Rarity:
uncommon
Element:
darkness
Attack Type:
Magic
Attack Range:
1200
Attack CD:
1
Damage:
10-71
Status:
Approved

Description:

A tricky tower that may weaken its target temporarily but also itself
Soul Scattering
10% chance on attack to reduce its own attackspeed by 60% and make the target receive 40% more spell damage. Both effects last 2.5 seconds.

Level Bonus:
+1% attackspeed 
+0.32% spell damage received
Shadowstrike
This tower has a 25% chance on attack to deal 80 spell damage. 

Level Bonus:
+4 spell damage 
+0.5% chance
Download

Toggle Triggers

Header

    globals
        //@export
        BuffType sir_cripple
        //@export
        BuffType sir_banish
        
    endglobals
    
    private function init takes nothing returns nothing
        
        local Modifier banish = Modifier.create()
        local Modifier cripple = Modifier.create()
        
        set sir_cripple=BuffType.create(0.0,0,false)
        set sir_banish=BuffType.create(0.0,0,false)
        call sir_cripple.setBuffIcon('@@1@@')
        call sir_cripple.setSpecialEffectSimple("Abilities\\Spells\\Undead\\Cripple\\CrippleTarget.mdl")
        call sir_banish.setBuffIcon('@@0@@')
        call banish.addModification(MOD_SPELL_DAMAGE_RECEIVED,0.0,0.0001)        
        call cripple.addModification(MOD_ATTACKSPEED,-0.6,0.01)
        call sir_cripple.setBuffModifier(cripple)
        call sir_banish.setBuffModifier(banish)
        
    endfunction

On Attack

ONATTACK_chance: 1.0 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
    local integer lvl = tower.getLevel()
    local Creep creep = Event.getTarget()
    if tower.calcChance(0.1) then
        call sir_banish.applyCustomTimed(tower,creep,R2I((40+0.32*lvl)*100),2.5)
        call sir_cripple.applyCustomTimed(tower,tower,lvl,2.5)
    endif
    if tower.calcChance(.25 + 0.005 * lvl) then
        call tower.doSpellDamage(creep,80+tower.getLevel()*4,tower.calcSpellCritNoBonus())
        call SFXOnUnit("Abilities\\Spells\\Undead\\DeathPact\\DeathPactTarget.mdl",creep.getUnit(),"origin")
    endif
endfunction

On Damage

ONDAMAGE_chance: 0.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing

endfunction
Cold Troll v1
90
ID:
476
Family ID:
Author:
cedi
Rarity:
uncommon
Element:
ice
Attack Type:
Elemental
Attack Range:
900
Attack CD:
1.5
Damage:
71-71
Mana:
100
Mana regen:
2.5
Status:
Approved

Description:

With his 15 years he is really young, but 15 years in the ice hell of Northrend is something to show.
Specials:
-50% dmg to undead
+25% dmg to orcs
+25% dmg to humanoids
Blizzard
Summons 5 waves of icy spikes which fall down to earth. Each wave deals 60 damage in an AoE of 200. Each time a unit is damaged by this spell there is a chance of 30% to slow the unit by 7% for 4 seconds and a chance of 10% to stun the unit for 0.25 seconds.

Level Bonus:
+6 damage
+0.1% slow
+1% chance for slow
+0.1% chance for stun

AC_TYPE_OFFENSIVE_UNIT
 95, 900 range, 10s cooldown
Download

Toggle Triggers

Autocast

caster_art: AUTOCAST_cooldown: 10 AUTOCAST_numBuffsBeforeIdle: 0 AUTOCAST_isExtended: false AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_UNIT AUTOCAST_manacost: 95 AUTOCAST_range: 900 AUTOCAST_buffType: 0 AUTOCAST_targetSelf: true AUTOCAST_targetType: 0 target_art: AUTOCAST_autoRange: 900
private function onAutocast takes Tower tower returns nothing
    local unit u = Event.getTarget().getUnit() 
    call Troll_blizzard.pointCastFromCasterOnPoint( tower, GetUnitX( u ), GetUnitY( u ), 1.00 + I2R( tower.getLevel() ) * 0.1, tower.calcSpellCritNoBonus() )
    set u = null
endfunction

Header

    globals
        BuffType Troll_blizzardslow
        Cast Troll_blizzard
    endglobals
    
    function OnBlizzard takes DummyUnit U returns nothing
        if U.getCaster().calcChance( 0.30 + I2R( U.getCaster().getLevel() ) * 0.01 ) then
            call Troll_blizzardslow.applyOnlyTimed( U.getCaster(), Event.getTarget(), 4.00 )
        endif
        if U.getCaster().calcChance( 0.10 + I2R( U.getCaster().getLevel() ) * 0.001 ) then
            call cb_stun.applyOnlyTimed( U.getCaster(), Event.getTarget(), 0.25 )
        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
        local Modifier mod2 = Modifier.create()
        set Troll_blizzardslow = BuffType.create(0.0,0.0,false)
        call mod2.addModification(MOD_MOVESPEED,-0.07,-0.001)
        call Troll_blizzardslow.setBuffModifier(mod2)
        set Troll_blizzard = Cast.create( '@@0@@', "blizzard", 9.00 )
        call Troll_blizzard.setDamageEvent( EventHandler.OnBlizzard )
        call Troll_blizzardslow.setStackingGroup("cedi_troll_blizzard")
        call Troll_blizzardslow.setBuffIcon( '@@2@@' )
    endfunction
Lesser Priest v1
90
ID:
590
Family ID:
Author:
Boekie
Rarity:
uncommon
Element:
astral
Attack Type:
Elemental
Attack Range:
1000
Attack CD:
2
Damage:
97-97
Status:
Approved

Description:

This holy priest is able to smite creeps. It's very weak at the start but becomes a lot stronger when it gains experience.
Specials:
+3% attackspeed/lvl
Smite
When this tower damages a creep it has 5% chance to smite it, dealing 10 spelldamage.

Level Bonus:
+2% chance
+18 spelldamage
-0.6 permanent armor reduction (-0.2 on bosses) at level 25
Download

Toggle Triggers

On Damage

ONDAMAGE_chance: 0.05 ONDAMAGE_chanceLevelAdd: 0.02
function onDamage takes Tower tower returns nothing
    local Unit creep = Event.getTarget() 
    local integer level = tower.getLevel()

    call tower.doSpellDamage(creep,10.0+(level*18.0),tower.calcSpellCritNoBonus()) 
    call SFXOnUnit("Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl",creep.getUnit(),"origin") 
    
    if level == 25 then
    
        if creep.getSize() < SIZE_BOSS then
            call creep.modifyProperty(MOD_ARMOR, -0.6) 
        else
            call creep.modifyProperty(MOD_ARMOR, -0.2) 
        endif
        
    endif
    
endfunction
Lightning Generator v1
92
ID:
378
Family ID:
Author:
SirCoqaLot.
Rarity:
uncommon
Element:
storm
Attack Type:
Magic
Attack Range:
980
Attack CD:
1.35
Damage:
1-1
Status:
Approved

Description:

Simple storm tower that will deal all of its damage through spells. Has a minor chance to cast a chainlightning on attack.
Chainlightning
This tower has a 19.5% chance on attack to release a chainlightning that does 150 damage and hits up to 3 units.

Level Bonus:
+3 damage
+0.25% chance
Force Attack
This tower deals 70 spell damage on attack.

Level Bonus:
+1.4 damage
Download

Toggle Triggers

Header

    globals
        Cast Chainlightning
    endglobals
    
    //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 Chainlightning = Cast.create('@@0@@',"chainlightning",5.0)
    endfunction

On Attack

ONATTACK_chance: 0.195 ONATTACK_chanceLevelAdd: 0.0025
function onAttack takes Tower tower returns nothing
     call Chainlightning.targetCastFromCaster(tower,Event.getTarget(),1.0+tower.getLevel()*0.02,tower.calcSpellCritNoBonus())
endfunction

On Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    local Unit creep = Event.getTarget()
        call tower.doSpellDamage(creep,70*(1+tower.getLevel()*0.02),tower.calcSpellCritNoBonus())
endfunction
Ice Weed v1
100
ID:
151
Family ID:
Author:
drol
Rarity:
common
Element:
ice
Attack Type:
Energy
Attack Range:
750
Attack CD:
0.75
Damage:
48-67
Status:
Approved

Description:

Can still grow even in the coldest places.
Frozen Thorn
Has a 15% chance to deal 125 additional spell damage each time it deals damage.

Level Bonus:
+5 spell damage
Download

Toggle Triggers

On Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    if Event.isMainTarget() and tower.calcChance(0.15) and not Event.getTarget().isImmune() then
        call SFXAtUnit("Abilities\\Spells\\Undead\\FrostArmor\\FrostArmorDamage.mdl", Event.getTarget().getUnit())
        call tower.doSpellDamage(Event.getTarget(), 125 + 5 * tower.getLevel(), tower.calcSpellCritNoBonus())
    endif
endfunction
Essence of Fury v1
100
ID:
277
Family ID:
Author:
Killamasta
Rarity:
uncommon
Element:
darkness
Attack Type:
Decay
Attack Range:
800
Attack CD:
2
Damage:
16-16
Status:
Approved

Description:

A piece of a black heart. Poisons many enemies.
Specials:
Bounce attack:
   2 targets
   -0% damage per bounce
Poisoned Heart
This tower destroys a piece of the creep's heart on damage. The affected creep takes 25 spelldamage every second for 6 seconds.

Level Bonus:
+1 poison damage
+0.1 seconds poison duration
Download

Toggle Triggers

Header

    globals  
       //@export
       BuffType Poisoned_heart // this is used to declare the buff
    endglobals 
    function dealDamage takes Buff b returns nothing // we need this function to deal damage to the buffed creep
        local Unit creep = b.getBuffedUnit() // this method is used to get the buffed creep
        local Tower tower = b.getCaster()  // this method is used to get the caster of the buff
        call tower.doSpellDamage(creep,b.userReal,tower.calcSpellCritNoBonus()) // replace yy with your own value
    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 Poisoned_heart=BuffType.create(9,0.5,false)  //replace zz with your own value
        call Poisoned_heart.setBuffIcon('@@0@@') // this is the id of the buff you have to create in the object editor
    
        call Poisoned_heart.addPeriodicEvent(EventHandler.dealDamage,1) // with this we add a periodic event to the buff
    endfunction

On Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
  
 local Unit creep = Event.getTarget()

 
set Poisoned_heart.applyCustomTimed(tower,creep,tower.getLevel(),6+tower.getLevel()*.1).userReal = 25. + 1 * tower.getLevel()
 
endfunction
Frosty Rock v1
100
ID:
684
Family ID:
Author:
SirCoqaLot.
Rarity:
uncommon
Element:
ice
Attack Type:
Energy
Attack Range:
760
Attack CD:
2.3
Damage:
237-237
Status:
Approved

Description:

Iced formation radiating blistering cold.
Glacial Wrath
Attacks of this tower slow the attacked creep by 7% for 3 seconds. Each attack has a 2% to deal 100 spelldamage and stun the target for 0.8 seconds. The chance to stun the target is increased by 2% per attack and resets after a target is stunned.

Level Bonus:
+2 spelldamage 
+0.35% slow
Download

Toggle Triggers

Header

    globals
    //@export
    BuffType sir_frost_glacier
    endglobals
    
    //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  sir_frost_glacier = BuffType.create(0,0,false)
        call sir_frost_glacier.setBuffIcon('@@0@@')
        call m.addModification(MOD_MOVESPEED,0,-0.001)
        call sir_frost_glacier.setBuffModifier(m)
    endfunction

On Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    local Creep creep = Event.getTarget()
            
    call sir_frost_glacier.applyCustomTimed(tower,creep,70*(1+tower.getLevel()/20),3)
    call tower.getOwner().displayFloatingTextX(I2S(R2I(tower.userInt))+"% Chance",tower,50,150,255,255,0.05,2,3) 
   
    
        if tower.calcChance(tower.userInt*0.01) == true and not Event.getTarget().isImmune() then
            call cb_stun.applyOnlyTimed(tower,Event.getTarget(),0.8)
            call tower.doSpellDamage(creep,100*(1+tower.getLevel()*0.02),tower.calcSpellCritNoBonus())
            set tower.userInt = 2
        else 
            set tower.userInt = tower.userInt +2
        endif        
endfunction

On Tower Creation

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