Lunar Protector v1
1800
ID:
50
Family ID:
Author:
SirCoqaLot.
Rarity:
uncommon
Element:
astral
Attack Type:
Energy
Attack Range:
1200
Attack CD:
2
Damage:
806-826
Status:
Approved

Description:

The spirit of a watcher left to look over the ruins.
Lunar Grace
Smites a target creep dealing 1500 spelldamage to it. There is a 12.5% chance to empower the smite with lunar energy dealing 1500 additional spell damage, stunning the target for 0.3 seconds and making it receive 20% more damage from spells for 2.5 seconds.

Level Bonus:
+60 inital and chanced spell damage 
+0.5% chance 
+600 initial damage at level 15 
+5% spell damage received at level 15 
+0.1 seconds stun at level 25

AC_TYPE_OFFENSIVE_UNIT
 0, 1200 range, 2s cooldown
Download

Toggle Triggers

Autocast

caster_art: AUTOCAST_cooldown: 2 AUTOCAST_numBuffsBeforeIdle: 0 AUTOCAST_isExtended: true AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_UNIT AUTOCAST_manacost: 0 AUTOCAST_range: 1200 AUTOCAST_buffType: 0 AUTOCAST_targetSelf: false AUTOCAST_targetType: 0 target_art: Abilities\Spells\Items\AIil\AIilTarget.mdl AUTOCAST_autoRange: 1200
private function onAutocast takes Tower tower returns nothing
local integer level = tower.getLevel()
local Unit target = Event.getTarget()
    if level < 15 then
        call tower.doSpellDamage(target,1500+level*60,tower.calcSpellCritNoBonus())
    else
        call tower.doSpellDamage(target,2100+level*60,tower.calcSpellCritNoBonus())
    endif
    
    if tower.calcChance(0.125 + level * 0.005) == true then
            call tower.doSpellDamage(target,1500 + level * 60,tower.calcSpellCritNoBonus())
            if level < 25 then
                call cb_stun.applyOnlyTimed(tower,target,0.3)
            else
                call cb_stun.applyOnlyTimed(tower,target,0.4)
            endif
            if level < 15 then
                call sir_moonp_buff.applyAdvanced(tower,target,0,200,2.5)
            else
                call sir_moonp_buff.applyAdvanced(tower,target,0,250,2.5)
            endif
        endif
    
endfunction

Header

    globals
    //@import
    BuffType sir_moonp_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
Viviparous Skink v1
1800
ID:
257
Family ID:
Author:
cedi
Rarity:
uncommon
Element:
nature
Attack Type:
Decay
Attack Range:
800
Attack CD:
1
Damage:
743-770
Status:
Approved

Description:

It likes to hug people.
Poisonous Skin - Aura
This and any towers in 200 range gain a poisonous attack. The poison deals 76.5 spell damage per second for 5 seconds. The effect stacks and is attack speed and range adjusted.

Level Bonus:
+3.06 spell damage per second
Download

Toggle Triggers

Header

            globals
        //@import
        BuffType cedi_skinkA //Aura
        //@import
        BuffType cedi_skinkB //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 Tower Creation

function onCreate takes Tower tower returns nothing
            
set tower.userReal = 76.5
    set tower.userReal2 = 3.06
        
endfunction

Tower Aura

AURA_auraEffect: cedi_skinkA AURA_power: 0 AURA_level: 0 AURA_auraRange: 200 AURA_targetType: TARGET_TYPE_TOWERS AURA_levelAdd: 1 AURA_powerAdd: 1 AURA_targetSelf: true
            
        
Elder Felweed v1
1800
ID:
409
Family ID:
Author:
SirCoqaLot.
Rarity:
common
Element:
fire
Attack Type:
Decay
Attack Range:
750
Attack CD:
1
Damage:
1360-1360
Status:
Approved

Description:

Basic Tower that sometimes deals more damage.
Fireblossom
Every 5th attack deals 15% bonus damage.
Every 6th attack deals 30% bonus damage.
Every 7th attack deals 45% bonus damage.
Every 8th attack deals 60% bonus damage. 

Level Bonus:
+0.3% bonus damage every 5th attack.
+0.6% bonus damage every 6th attack.
+0.9% bonus damage every 7th attack.
+1.2% bonus damage every 8th attack.
Download

Toggle Triggers

On Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
local real damage = Event.damage
local integer level = tower.getLevel()

set tower.userInt = tower.userInt +1
set tower.userInt2 = tower.userInt2 +1
set tower.userInt3 = tower.userInt3 +1
set tower.userReal = tower.userReal +1

if tower.userInt >= 5 then
    set Event.damage = Event.damage * (1.15 + level * 0.003)
    set tower.userInt = 0
endif
if tower.userInt2 >= 6 then
    set Event.damage = Event.damage * (1.3 + level * 0.006)
    set tower.userInt2 = 0
endif
if tower.userInt3 >= 7 then
    set Event.damage = Event.damage * (1.45 + level * 0.009)
    set tower.userInt3 = 0
endif
if tower.userReal >= 8 then
    set Event.damage = Event.damage * (1.6 +level * 0.012)
    set tower.userReal = 0
endif
if Event.damage > damage then
    call tower.getOwner().displaySmallFloatingText(I2S(R2I(Event.damage)),tower,255,150,150,0)
endif
endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
set tower.userInt = 0
set tower.userInt2 = 0
set tower.userInt3 = 0
set tower.userReal = 0
endfunction
Dragon Sorcerer v1
1800
ID:
524
Family ID:
Author:
Boekie
Rarity:
unique
Element:
fire
Attack Type:
Decay
Attack Range:
900
Attack CD:
1
Damage:
1505-1514
Mana:
30
Mana regen:
2
Status:
Approved

Description:

Buffs nearby towers to increase their attack strenght.
Specials:
+5 mana/lvl
+0.1 mana regen/lvl
Burning Mark
This tower adds a buff to a tower in 500 range that lasts 10 seconds. The buff increases the multicrit count by 1,  the crit chance by 7.5% and the attack speed by 25%.

Level Bonus:
+0.4 seconds duration 
+0.6% attackspeed 
+0.2% crit chance

AC_TYPE_OFFENSIVE_BUFF
 20, 500 range, 2.00s cooldown
Download

Toggle Triggers

Autocast

caster_art: AUTOCAST_cooldown: 2.00 AUTOCAST_numBuffsBeforeIdle: 3 AUTOCAST_isExtended: false AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_BUFF AUTOCAST_manacost: 20 AUTOCAST_range: 500 AUTOCAST_buffType: boekie_markBuff AUTOCAST_targetSelf: true AUTOCAST_targetType: TARGET_TYPE_TOWERS target_art: Abilities\Spells\Other\Doom\DoomDeath.mdl AUTOCAST_autoRange: 500
private function onAutocast takes Tower tower returns nothing

endfunction

Header

    globals
        BuffType boekie_markBuff
    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 boekie_markBuff = BuffType.create( 10.00, 0.4, true )
        call boekie_markBuff.setBuffIcon( '@@0@@' )
        call m.addModification( MOD_MULTICRIT_COUNT, 1.00, 0.00 )
        call m.addModification( MOD_ATK_CRIT_CHANCE, 0.075, 0.002 )
        call m.addModification( MOD_ATTACKSPEED, 0.25, 0.006 )
        call boekie_markBuff.setBuffModifier( m )
    endfunction
Nerubian Queen v1
1800
ID:
570
Family ID:
Author:
Boekie
Rarity:
unique
Element:
darkness
Attack Type:
Physical
Attack Range:
950
Attack CD:
1.25
Damage:
987-1026
Status:
Approved

Description:

The mother of all Nerubian spiders. She is very poisonous!
Inject Parasite
When the Queen damages a creep she has a 30% chance to inject a parasite that lives for 10 seconds. Each second the creep will suffer 500 spelldamage and will permanently lose 2% armor. When an infected creep dies, the Nerubian Queen will gain 0.75% permanent bonus attackdamage and the parasite will attempt to jump to another host in 500 range.

Level Bonus:
+0.4% chance 
+100 spelldamage
+0.08% armor reduction
Download

Toggle Triggers

Header

    globals
        BuffType boekie_injectParasite_buff
        ProjectileType boekie_parasite_jump
        MultiboardValues boekie_queen_damage
    endglobals
    
    function boekie_poison takes Buff b returns nothing 
        local Unit target = b.getBuffedUnit()
        local Tower tower = b.getCaster()
        call tower.doSpellDamage(target,500+b.getLevel()*100,tower.calcSpellCritNoBonus())
        call target.modifyProperty(MOD_ARMOR_PERC, -(0.02 + (b.getLevel()*0.0008))) 
    endfunction  
        
    function boekie_parasite_onDeath takes Buff b returns nothing 
        local Creep creep = b.getBuffedUnit()
        local Tower tower = b.getCaster()
        local Iterate it = Iterate.overUnitsInRangeOfUnit(tower, TARGET_CREEPS, creep, 500)
        local Creep newHost = it.next()
        local Creep temp = 0
        local Projectile p
        
        call Effect.createSimple("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodCryptFiend.mdl", creep.getX(), creep.getY()).destroy()
        if tower != 0 then
            call tower.modifyProperty(MOD_DAMAGE_ADD_PERC, 0.0075)
            set tower.userReal = tower.userReal + 0.0075
        endif
        
        //Find a new host! Prefers targets that aren't carrying parasites already.
        loop
            exitwhen newHost == 0 or newHost.getBuffOfType(boekie_injectParasite_buff) == 0
            if newHost != creep then
                set temp = newHost
            endif
            set newHost = it.next()
        endloop
        if newHost == 0 then
            if temp == 0 then
                //noone to jump to! parasite dies :(
                call Effect.createScaled("units\\creeps\\Spider\\Spider.mdl", creep.getX(), creep.getY(), 0.0, 0.0, 0.2).destroy()
                return
            else
                //can only jump to a target that already has a parasite. Do it anyway, to refresh the buff duration.
                set newHost = temp
            endif
        else
            call it.destroy()
        endif
        set p = Projectile.createLinearInterpolationFromUnitToUnit(boekie_parasite_jump, tower, 0.0, 0.0, creep, newHost, 0.5, true)
        call p.setScale(0.2)
        set p.userInt = newHost.getUID()
    endfunction
    
    function boekie_parasite_inject takes Tower tower, Creep newHost returns nothing
        local integer level = tower.getLevel()
        call boekie_injectParasite_buff.applyCustomTimed(tower,newHost,level,10)
    endfunction
    
    function boekie_parasite_jump_onCleanup takes Projectile p returns nothing
        local Creep creep = p.getHomingTarget()
        if creep.getUID() == p.userInt then
            call boekie_parasite_inject(p.getCaster(), creep)
        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 boekie_injectParasite_buff = BuffType.create(0,0,false) 
        call boekie_injectParasite_buff.setBuffIcon('@@0@@')  
        call boekie_injectParasite_buff.addPeriodicEvent(EventHandler.boekie_poison,1) 
        call boekie_injectParasite_buff.addEventOnDeath(EventHandler.boekie_parasite_onDeath)
        
        set boekie_parasite_jump = ProjectileType.createInterpolate("units\\creeps\\Spider\\Spider.mdl",500)
        call boekie_parasite_jump.setEventOnCleanup(boekie_parasite_jump_onCleanup)
        call boekie_parasite_jump.disableExplodeOnHit()
        
        set boekie_queen_damage = MultiboardValues.create(1)
        call boekie_queen_damage.setKey(0,"Damage Gained")
    endfunction

On Damage

ONDAMAGE_chance: 0.30 ONDAMAGE_chanceLevelAdd: 0.004
function onDamage takes Tower tower returns nothing
    call boekie_parasite_inject(tower, Event.getTarget())
endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
    set tower.userReal = 0
endfunction

On Tower Details

function onTowerDetails takes Tower tower returns MultiboardValues
    call boekie_queen_damage.setValue(0, formatPercent(tower.userReal,0))
    return boekie_queen_damage
endfunction
Sniper Nest v1
1800
ID:
664
Family ID:
Author:
cedi
Rarity:
uncommon
Element:
iron
Attack Type:
Physical
Attack Range:
1400
Attack CD:
2.5
Damage:
2551-2551
Status:
Approved

Description:

A long ranged tower which is good against bosses, but weak against mass creeps.
Specials:
-70% dmg to masses
-30% dmg to normals
+20% dmg to champions (+1.6%/lvl)
+50% dmg to bosses (+4%/lvl)
+20% dmg to air (+1.6%/lvl)
Rocket Strike
30% chance to fire a rocket towards the attacked unit. On impact it deals 2400 damage in a 170 AoE. Deals 125% damage to mass creeps.

Level Bonus:
+0.6% chance
+60 damage
Download

Toggle Triggers

Header

    globals
        //@import
        ProjectileType cedi_sniper_rocket
    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 Attack

ONATTACK_chance: 0.30 ONATTACK_chanceLevelAdd: 0.006
function onAttack takes Tower tower returns nothing
    set Projectile.createLinearInterpolationFromUnitToUnit(cedi_sniper_rocket,tower,24.0+tower.getLevel()*0.6, tower.calcSpellCritNoBonus(),tower,Event.getTarget(),0.25,true).userReal = 170.0
endfunction
Ruined Tempest Tower v1
1850
ID:
342
Family ID:
Author:
SirCoqaLot.
Rarity:
uncommon
Element:
storm
Attack Type:
Physical
Attack Range:
1000
Attack CD:
2.8
Damage:
6683-6733
Status:
Approved

Description:

Strange tower that rejects some items.
Rejection
This tower drops all except Rare items on attack.
Download

Toggle Triggers

On Attack

ONATTACK_chance: 1.0 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
    local Item itm
    local integer i = 1

    loop 
    exitwhen i > 6
        set itm = tower.getHeldItem(i)
        if  itm != 0 and itm.getRarity() != Rarity.RARE then
            call itm.drop()
        endif
        set i = i + 1
    endloop
  
endfunction