Tentacle v1
180
ID:
612
Family ID:
Author:
drol
Rarity:
common
Element:
darkness
Attack Type:
Physical
Attack Range:
850
Attack CD:
1.5
Damage:
176-235
Status:
Approved

Description:

Sometimes hits its targets in a weak spot, leaving them rended.
Rend
The tentacle has a 25% chance to rend a target, making it suffer 4% increased spell damage and dealing 60 spell damage per second for 6 seconds. Does not stack.

Level Bonus:
+1% chance
+2.4 spell damage per second
Download

Toggle Triggers

Header

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

On Damage

ONDAMAGE_chance: 0.25 ONDAMAGE_chanceLevelAdd: 0.01
function onDamage takes Tower tower returns nothing
    set drol_tentacleDot.apply(tower, Event.getTarget(), 2).userReal = 60. + tower.getLevel() * 2.4
endfunction
Thief Novice v1
195
ID:
109
Family ID:
Author:
i_mOck_death
Rarity:
uncommon
Element:
darkness
Attack Type:
Physical
Attack Range:
800
Attack CD:
1.5
Damage:
305-305
Status:
Approved

Description:

Trained in the shadows, the thief is an expert in finding gold.
Specials:
-10% dmg to undead (+0.4%/lvl)
+0.75% bounty collected/lvl
+6% item chance (+0.24%/lvl)
+6% item quality (+0.24%/lvl)
Steal
Every time the thief damages a creep there is a 10% chance he steals 0.9 gold.

Level Bonus:
+0.036 gold
+0.4% chance
Download

Toggle Triggers

Header

    globals
        //@import
        ProjectileType mOck_steal
        //@import
        MultiboardValues mOck_thief_multiboard
    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
    endfunction

On Damage

ONDAMAGE_chance: .1 ONDAMAGE_chanceLevelAdd: 0.004
function onDamage takes Tower tower returns nothing
    call Projectile.createLinearInterpolationFromUnitToUnit(mOck_steal,tower,0,0,Event.getTarget(),tower,0,true)
endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
    local Tower super = Event.getPrecedingTower()
    call AddUnitAnimationProperties(tower.getUnit(), "stand alternate", false)
    if super.getFamily() == tower.getFamily() then
        set tower.userReal = super.userReal
    else
        set tower.userReal = 0.0 
    endif
    set tower.userInt = 9
endfunction

On Tower Details

function onTowerDetails takes Tower tower returns MultiboardValues
    call mOck_thief_multiboard.setValue(0,I2S(R2I(tower.userReal)))
    return mOck_thief_multiboard
endfunction
Firestorm Cell v1
200
ID:
421
Family ID:
Author:
Ashbringer
Rarity:
uncommon
Element:
fire
Attack Type:
Magic
Attack Range:
900
Attack CD:
1.3
Damage:
106-106
Status:
Approved

Description:

A device created to unleash fiery explosions.
Firestorm
Attacks have a 12% chance to apply 3 charges of Firestorm to the target. Each second, a charge will be spent, dealing 100 spell damage to enemies in 300 range. If the target already has charges, the charges will accumulate and a charge will be consumed instantly. On death all remaining firestorm charges get consumed at once.

Level Bonus:
+0.4% chance
+3 damage
Download

Toggle Triggers

Header

    globals
        BuffType ashbringer_firestorm_buff
    endglobals
    
    function ashbringer_firestorm_damage takes Tower tower, Unit creep returns nothing
        call Effect.createScaled("Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl", creep.getX(), creep.getY(), 0, 0, 0.4).destroy()
        call tower.doSpellDamageAoEUnit(creep, 300, 100 + (3 * tower.getLevel()), tower.calcSpellCritNoBonus(), 0.0) 
   endfunction
    
    function ashbringer_firestorm_periodic takes Buff b returns nothing
        local Tower tower = b.getCaster()
        local Unit target = b.getBuffedUnit()
        set b.userInt = b.userInt - 1
        if b.userInt <= 0 then
            call b.removeBuff() //need to do it in this order, because the damage can kill the buff carrier, and removing buff after the carrier is dead causes double free
        endif
        call ashbringer_firestorm_damage(tower, target)
    endfunction 
    
    function ashbringer_firestorm_setint takes Buff b returns nothing        
        set b.userInt = b.getPower()
    endfunction
    
 
    function firestorm takes Buff b returns nothing 
        local Tower tower = b.getCaster() 
        local Creep creep = b.getBuffedUnit() 
        call Effect.createScaled("Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl", creep.getX(), creep.getY(), 0, 0, 0.6).destroy()
        call tower.doSpellDamageAoEUnit(creep, 300, b.getPower()* (100 + (3 * tower.getLevel())), tower.calcSpellCritNoBonus(), 0.0) 
    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 ashbringer_firestorm_buff = BuffType.create(1000,0,false) 
        call ashbringer_firestorm_buff.setBuffIcon('@@0@@')  
        call ashbringer_firestorm_buff.addEventOnCreate(EventHandler.ashbringer_firestorm_setint)
        call ashbringer_firestorm_buff.addPeriodicEvent(EventHandler.ashbringer_firestorm_periodic,1)
        call ashbringer_firestorm_buff.addEventOnDeath(EventHandler.firestorm)
    endfunction

On Attack

ONATTACK_chance: 0.12 ONATTACK_chanceLevelAdd: 0.004
function onAttack takes Tower tower returns nothing
    local Unit creep = Event.getTarget()
    local Buff b
    local integer i
    set b = creep.getBuffOfType(ashbringer_firestorm_buff)
    if ( b != 0 ) then
        call ashbringer_firestorm_damage(tower, creep)
        set i = b.getPower() + 2
        call b.setPower(i)
        set b.userInt = i
    else
        set i = 3
        call ashbringer_firestorm_buff.applyCustomPower(tower, creep, i, i)
    endif
endfunction
Annoyed Tree v1
200
ID:
520
Family ID:
Author:
Boekie
Rarity:
uncommon
Element:
nature
Attack Type:
Physical
Attack Range:
950
Attack CD:
1.4
Damage:
142-161
Status:
Approved

Description:

An angry tree that has a chance to throw a big rock at its target.
Rock Throw
30% chance to throw a rock towards the attacked unit. On impact it deals 150 spell damage in a 300 AoE. 

Level Bonus:
+0.6% chance
+5 damage
Download

Toggle Triggers

Header

    globals
        //@export
        ProjectileType boekie_tree_rock
    endglobals    
   
    function RockHit takes Projectile p, Unit t returns nothing
        call p.doSpellDamagePBAoE(p.userReal,100.0,0.0)
        call DestroyEffect( AddSpecialEffect("Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdl", p.x, p.y ) )
    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 boekie_tree_rock = ProjectileType.createInterpolate( "Abilities\\Weapons\\RockBoltMissile\\RockBoltMissile.mdl",750.00 )
        call boekie_tree_rock.setEventOnInterpolationFinished(ProjectileTargetEvent.RockHit)
    endfunction

On Attack

ONATTACK_chance: 0.30 ONATTACK_chanceLevelAdd: 0.006
function onAttack takes Tower tower returns nothing
    set Projectile.createLinearInterpolationFromUnitToUnit(boekie_tree_rock,tower,1.5+tower.getLevel()*0.05, tower.calcSpellCritNoBonus(),tower,Event.getTarget(),0.25,true).userReal = 300.0
endfunction
Burning Fire Pit v1
200
ID:
558
Family ID:
Author:
Boekie
Rarity:
common
Element:
fire
Attack Type:
Decay
Attack Range:
800
Attack CD:
0.9
Damage:
157-157
Status:
Approved

Description:

A fire pit that has the ability to unleash some powerful flames.
Specials:
2x multicrit
Hot Coals
Whenever this tower kills a creep it gains 20% bonus crit chance for 8.5 seconds.

Level Bonus:
+0.05 sec duration
+0.3% crit chance
Download

Toggle Triggers

Header

    globals
    //@import 
    BuffType boekie_coals_buff 
    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
    endfunction

On Kill

function onKill takes Tower tower returns nothing
local integer lvl = tower.getLevel() 
call boekie_coals_buff.applyCustomTimed(tower,tower,50+(lvl*3),8.5+0.05*lvl) 
endfunction
Basic Knowledge v1
200
ID:
617
Family ID:
Author:
SirCoqaLot.
Rarity:
uncommon
Element:
astral
Attack Type:
Energy
Attack Range:
960
Attack CD:
2.6
Damage:
415-415
Status:
Approved

Description:

Basic astral tower that strengthens itself by acummulating knowledge from its books.
High Knowledge
Grants 0.4 experience on attack.
Download

Toggle Triggers

On Attack

ONATTACK_chance: 1.0 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
    call tower.addExp(0.4)
endfunction
Advanced Wooden Trap v1
200
ID:
623
Family ID:
Author:
Boekie
Rarity:
uncommon
Element:
iron
Attack Type:
Physical
Attack Range:
950
Attack CD:
1.3
Damage:
141-141
Status:
Approved

Description:

This trap is used to capture beasts but it works on other stuff too.
Activate Trap
Every 14 seconds this tower traps 3  creeps in 950 range, dealing 270 spelldamage and stunning them for 0.75 seconds.

Level Bonus:
+15 spelldamage 
-0.2 seconds cooldown
Download

Toggle Triggers

Header

    globals
    endglobals
    
    //@import
    function trap takes Tower tower, real cooldown, real baseDamage, real damageAdd, real stunDuration, integer maxTargets returns nothing
    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
    endfunction

Periodic

PERIODIC_period: 2
function periodic takes Tower tower returns nothing
    call trap(tower, 14, 270, 15, 0.75, 3)
endfunction