Young Northern Troll v1
900
ID:
249
Family ID:
Author:
DaveMatthews
Rarity:
rare
Element:
ice
Attack Type:
Elemental
Attack Range:
800
Attack CD:
2
Damage:
1933-1933
Status:
Approved

Description:

Wanders in the cold northern lands, looking for preys.
Specials:
+10% dmg to orcs (+0.2%/lvl)
+10% dmg to humanoids (+0.2%/lvl)
Ice Smashing Axe
On attack this tower has a 15% chance to throw a giant axe. The axe shatters all the buffs from its target and deals 20% of the tower's attack damage as elemental damage for each buff purged. If more than 5 buffs are removed the enemy is also stunned for 1.5 seconds (0.75 on bosses). The axe is so heavy that its wielder's attack speed is slowed by 30% for 3 seconds after throwing it. 

Level Bonus:
+0.4% damage per buff 
-0.4% attack speed reduction
Ice Coated Axes
This tower deals 0.6% bonus damage for every 1% movement speed the target is missing. 

Level Bonus:
+0.02% damage
Download

Toggle Triggers

Header

    globals
        //@export
        BuffType dave_fatigue
        //@export
        ProjectileType dave_axe
    endglobals
    
    function axeHit takes Projectile p, Unit creep returns nothing
        local Tower tower = p.getCaster()
        local integer level= tower.getLevel()
        local integer buffs = 0
        local real damage = tower.getCurrentAttackDamageWithBonus()
        loop
            exitwhen not (creep.purgeBuff(true) or creep.purgeBuff(false))
            set buffs = buffs + 1
        endloop
         
        if buffs != 0 then
            call tower.doAttackDamage(creep,damage*(p.userReal*buffs),tower.calcAttackMulticrit(0,0,0))
            if buffs > 5 then
                if creep.getSize() != SIZE_BOSS then
                    call cb_stun.applyOnlyTimed(tower,creep,1.5)
                else
                    call cb_stun.applyOnlyTimed(tower,creep,0.75)
               endif
            endif
        endif
         
        call SFXAtUnit("Abilities\\Weapons\\FrostWyrmMissile\\FrostWyrmMissile.mdl",creep.getUnit())
    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 m = Modifier.create()
        set dave_fatigue = BuffType.create(3.0,0.0,false)
        call dave_fatigue.setBuffModifier(m)
        call dave_fatigue.setBuffIcon( '@@0@@' )
        call m.addModification(MOD_ATTACKSPEED,-0.3,0.004)
      
        set dave_axe = ProjectileType.create("Abilities\\Weapons\\RexxarMissile\\RexxarMissile.mdl",4,900)
        call dave_axe.setEventOnInterpolationFinished(ProjectileTargetEvent.axeHit)
    endfunction

On Attack

ONATTACK_chance: 0.15 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
    local Projectile p
    local Unit creep = Event.getTarget()
    local integer level = tower.getLevel()

    set p = Projectile.createLinearInterpolationFromUnitToUnit(dave_axe, tower,1,1, tower, creep, 0.2, true)
    set p.userReal = 0.2+0.004*level
    call p.setScale(1.5)
    call dave_fatigue.apply(tower,tower,level)
endfunction

On Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    local Creep creep = Event.getTarget()
    local integer level= tower.getLevel()
    local real speed = creep.getBaseMovespeed()
    local real currentSpeed = creep.getCurrentMovespeed()
    local real slow
    local real damage
    if currentSpeed < speed then
        set slow = (speed - currentSpeed) / speed
        set damage = Event.damage*slow*(0.6+0.02*level)
        set Event.damage = Event.damage+damage
        call tower.getOwner().displaySmallFloatingText("+"+I2S(R2I(damage)),creep,100,100,255,0)
    endif
endfunction
Hell Bat v1
900
ID:
259
Family ID:
Author:
DaveMatthews
Rarity:
rare
Element:
darkness
Attack Type:
Decay
Attack Range:
900
Attack CD:
1.2
Damage:
910-910
Mana:
50
Mana regen:
1.5
Status:
Approved

Description:

Like a bat out of hell I'll be gone when the morning comes!
Engulfing Darkness
This tower engulfs itself in darkness, gaining power as if it's night for 5 seconds.

AC_TYPE_OFFENSIVE_BUFF
 45, 0 range, 6s cooldown
Bat Swarm
This tower has a 15% chance on attack to release a swarm of bats, dealing 600 spell damage at nighttime or 200 spell damage at daytime to all enemies in a cone. The cone grows from a 100 AoE radius at the start to a 300 AoE radius at the end. 

Level Bonus:
+0.2% chance 
+15 damage during night 
+5 damage during day
Creature of the Night
This tower deals 150% damage during nighttime and 50% damage during daytime. 

Level Bonus:
+0.4% damage during night 
+0.2% damage during day
Download

Toggle Triggers

Autocast

caster_art: Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl AUTOCAST_cooldown: 6 AUTOCAST_numBuffsBeforeIdle: 1 AUTOCAST_isExtended: false AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_BUFF AUTOCAST_manacost: 45 AUTOCAST_range: 0 AUTOCAST_buffType: dave_darkness AUTOCAST_targetSelf: true AUTOCAST_targetType: TARGET_TYPE_TOWERS target_art: AUTOCAST_autoRange: 0
private function onAutocast takes Tower tower returns nothing
call dave_darkness.apply(tower,tower,tower.getLevel())
endfunction

Header

    globals
    //@export
    BuffType dave_darkness
    //@export
    Cast dave_bats
    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 dave_darkness = BuffType.create(5,0,true)
    call dave_darkness.setBuffIcon( '@@2@@' )
    
    set dave_bats = Cast.create( '@@0@@', "carrionswarm", 3.0 )
    endfunction

On Attack

ONATTACK_chance: 0.15 ONATTACK_chanceLevelAdd: 0.002
function onAttack takes Tower tower returns nothing
local real time = GetFloatGameState(GAME_STATE_TIME_OF_DAY)
local integer level = tower.getLevel()

if time >= 18.00 or time < 6.00 or tower.getBuffOfType(dave_darkness)!=0 then
   call dave_bats.targetCastFromCaster(tower, Event.getTarget(), 600+(15*level), tower.calcSpellCritNoBonus())
else
   call dave_bats.targetCastFromCaster(tower, Event.getTarget(), 200+(5*level), tower.calcSpellCritNoBonus())
endif
endfunction

On Damage

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

if time >= 18.00 or time < 6.00 or tower.getBuffOfType(dave_darkness)!=0 then
   set Event.damage = Event.damage*(1.5+0.004*level)
else
   set Event.damage = Event.damage*(0.5+0.002*level)
endif
endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
call AddUnitAnimationProperties(tower.getUnit(), "stand alternate", false)
endfunction
Old Brazier v1
900
ID:
278
Family ID:
Author:
SirCoqaLot.
Rarity:
uncommon
Element:
fire
Attack Type:
Elemental
Attack Range:
865
Attack CD:
0.7
Damage:
389-429
Status:
Approved

Description:

Basic tower with high attackspeed and a multicritchance.
Specials:
15% crit chance (+1.5%/lvl)
x1.7 crit damage (+x0.03/lvl)
2 x multicrit
Download
Horrible Tombstone v1
900
ID:
324
Family ID:
Author:
geX
Rarity:
common
Element:
darkness
Attack Type:
Decay
Attack Range:
1050
Attack CD:
1.85
Damage:
953-1153
Status:
Approved

Description:

Basic tower with a small chance on attack to kill lesser targets immediately.
Tomb's Curse
This tower has a 1.4% chance on attack to kill a non boss, non champion target immediately.

Level Bonus:
 +0.22% chance
Download

Toggle Triggers

On Damage

ONDAMAGE_chance: 0.014 ONDAMAGE_chanceLevelAdd: 0.0022
function onDamage takes Tower tower returns nothing
            
local Unit creep = Event.getTarget()
    local integer size = creep.getSize()
    if size < SIZE_CHAMPION then  // removed or size == SIZE_AIR
        call tower.killInstantly(creep)
        call SFXAtUnit("Abilities\\Spells\\Undead\\DeathCoil\\DeathCoilSpecialArt.mdl",creep.getUnit())       
    endif
        
endfunction
Frigate v1
900
ID:
609
Family ID:
Author:
Natac
Rarity:
uncommon
Element:
iron
Attack Type:
Physical
Attack Range:
900
Attack CD:
1.7
Damage:
1345-1345
Status:
Approved

Description:

A small ship with less weapons.
Specials:
Attacks GROUND only
Splash attack:
   25 AoE: 100% damage
   150 AoE: 40% damage
   250 AoE: 10% damage
Pirates
This tower plunders 1.3 gold each attack.
Treasure Seeker - Aura
Increases the bounty gain of towers in 300 range by 10%.

Level Bonus:
+1% bounty
Download

Toggle Triggers

Header

    globals
        //@import
        BuffType         natac_treasureSeeker_Buff
        //@import
        MultiboardValues natac_pirates_MultiboardValue 
    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: 1.0 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
    local real goldGranted = 1.3// The gold, that will be granted to the player on this attack 
    set  tower.userReal  = tower.userReal + goldGranted // Set the statistics
    call tower.getOwner().giveGold(goldGranted, tower.getUnit(), false, true)
endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
    local Tower parent = Event.getPrecedingTower()
     if parent.getFamily() == tower.getFamily() then
        set tower.userReal = parent.userReal
    else
        set tower.userReal = 0
    endif   // Total gold, earned by this towers pirates ability
endfunction

On Tower Details

function onTowerDetails takes Tower tower returns MultiboardValues
    // Show total gold, stolen by this tower pirates ability
    call   natac_pirates_MultiboardValue.setValue(0,R2S(tower.userReal)) 
    return natac_pirates_MultiboardValue
endfunction

Tower Aura

AURA_auraEffect: natac_treasureSeeker_Buff AURA_power: 100 AURA_level: 100 AURA_auraRange: 300 AURA_targetType: TARGET_TYPE_TOWERS AURA_levelAdd: 10 AURA_powerAdd: 10 AURA_targetSelf: true
Skilled Sniper v1
900
ID:
663
Family ID:
Author:
cedi
Rarity:
uncommon
Element:
iron
Attack Type:
Physical
Attack Range:
1400
Attack CD:
2.5
Damage:
1276-1276
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 1200 damage in a 160 AoE. Deals 125% damage to mass creeps.

Level Bonus:
+0.6% chance
+30 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,12.0+tower.getLevel()*0.3, tower.calcSpellCritNoBonus(),tower,Event.getTarget(),0.25,true).userReal = 160.0
endfunction
Cultivated Chasm v1
915
ID:
682
Family ID:
Author:
SirCoqaLot.
Rarity:
uncommon
Element:
nature
Attack Type:
Essence
Attack Range:
950
Attack CD:
1.4
Damage:
961-961
Status:
Approved

Description:

Basic tower that has a small chance to root creeps it attacks.
Entangle
Has a 12.5% chance to entangle the attacked target for 3 seconds. Entangled targets are immobile and suffer 1800 damage per second. Cannot entangle air or boss units. 

Level Bonus:
+0.2% chance to entangle
+90 damage per second
Download

Toggle Triggers

Header

    globals
        //@import
        BuffType chasm_entangle
    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: 0.125 ONDAMAGE_chanceLevelAdd: 0.002
function onDamage takes Tower tower returns nothing
    local Creep target = Event.getTarget()
    if target.getSize() < SIZE_BOSS and target.getSize() != SIZE_AIR then
        call chasm_entangle.apply(tower, target, 2)
        call target.reorder()
    endif
endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
    set tower.userInt = 1800 //base entagle dps
endfunction