Magnataur Celestial Hunter v1
2800
ID:
239
Family ID:
Author:
drol/i_mOck_death
Rarity:
uncommon
Element:
ice
Attack Type:
Elemental
Attack Range:
900
Attack CD:
1.7
Damage:
4304-4315
Status:
Approved

Description:

Roaming on the Frozen Wastes, the Magnataur Celestial Hunter seeks new challenges to beat.
Frozen Spears
Has a 14% chance to deal 50% more damage and stun the target for 0.5 seconds.

Level Bonus:
+5% damage
+0.01 seconds
Download

Toggle Triggers

On Damage

ONDAMAGE_chance: .14 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    local Unit creep = Event.getTarget()
    local real level = tower.getLevel()
    if Event.isMainTarget() == true then
        set Event.damage = Event.damage*(1.5+(.05*level))
        call SFXAtUnit("Objects\\Spawnmodels\\Critters\\Albatross\\CritterBloodAlbatross.mdl", creep.getUnit())
        call cb_stun.applyOnlyTimed(tower, creep, 0.5+tower.getLevel()*0.01)
        call tower.getOwner().displaySmallFloatingText(I2S(R2I(Event.damage)),tower,255,150,150,0)
    endif
endfunction
Cenarius v1
2800
ID:
253
Family ID:
Author:
cedi
Rarity:
unique
Element:
nature
Attack Type:
Decay
Attack Range:
950
Attack CD:
1.4
Damage:
1344-1344
Mana:
100
Mana regen:
3
Status:
Approved

Description:

Damn, there are no trees.
Entangling Roots
Launches 3 rows of roots towards the target which will travel a distance of 1000, entangling creeps hit for 1.5 seconds, causing them to become immobilized and take 1100 spell damage per second.

Level Bonus:
+44 spell damage
+0.02 seconds

AC_TYPE_OFFENSIVE_UNIT
 90, 950.00 range, 10.00s cooldown
Leaf Storm
Each time this tower attacks it has a 15% chance to summon a 200 AoE leaf storm at the target's position, slowing enemy units inside by 30% for 1 second and dealing 2100 spell damage over time.

Level Bonus:
+0.6% chance
+90 spell damage
+0.6% slow
+0.04 seconds slow duration
Thorned!
When a unit comes in 950 range to this tower it recieves the thorned debuff. The debuff lasts 3 seconds and increases the damage taken from nature towers by 30%.

Level Bonus:
+0.06 seconds duration
+0.6% damage taken
Tranquility - Aura
Decreases the attackspeed of all towers in a 450 AoE by 20% and increases their attackdamage by 40%.

Level Bonus:
+0.4% attack damage
+0.4% attackspeed
Download

Toggle Triggers

Autocast

caster_art: AUTOCAST_cooldown: 10.00 AUTOCAST_numBuffsBeforeIdle: 0 AUTOCAST_isExtended: false AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_UNIT AUTOCAST_manacost: 90 AUTOCAST_range: 950.00 AUTOCAST_buffType: 0 AUTOCAST_targetSelf: true AUTOCAST_targetType: 0 target_art: AUTOCAST_autoRange: 950.00
private function onAutocast takes Tower tower returns nothing
    local unit tow = tower.getUnit()
    local unit targ = Event.getTarget().getUnit()
    local real r = bj_RADTODEG * Atan2(GetUnitY( targ ) - GetUnitY( tow ), GetUnitX( targ ) - GetUnitX( tow ))
    call Projectile.createFromUnit( WW, tower, tower, r, 1.00, tower.calcSpellCritNoBonus() )
    call Projectile.createFromUnit( WW, tower, tower, r + 15.00, 1.00, tower.calcSpellCritNoBonus() )
    call Projectile.createFromUnit( WW, tower, tower, r - 15.00, 1.00, tower.calcSpellCritNoBonus() )
    set targ = null
    set tow = null
endfunction

Header

    globals
        BuffType Tranquility
        ProjectileType WW
        BuffType Entangle
        Cast LS
        BuffType LSSlow
        BuffType Thorned
    endglobals
    
    function EntangleDamage takes Buff B returns nothing
        call B.getCaster().doSpellDamage( B.getBuffedUnit(), 1100.0 + 44.0 * B.getCaster().getLevel(), B.getCaster().calcSpellCritNoBonus() )
    endfunction
    
    function WWPeriodic takes Projectile P returns nothing
        local Effect e = Effect.createScaled( "Abilities\\Spells\\NightElf\\EntanglingRoots\\EntanglingRootsTarget.mdl", P.x, P.y, 0.00, 0.00, 0.75 )
        call e.setLifetime( 2.0 )
    endfunction
    
    function WWHit takes Projectile P, Creep U returns nothing
        local Unit caster = P.getCaster()
        call Entangle.apply( caster, U, caster.getLevel() )
    endfunction
    
    function LSHit takes DummyUnit d returns nothing
        local Unit t = d.getCaster()
        call LSSlow.apply( t, Event.getTarget(), t.getLevel() )
    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 Tranquility = BuffType.createAuraEffectType( true )
        call m.addModification( MOD_ATTACKSPEED, -0.2, 0.004 )
        call m.addModification( MOD_DAMAGE_ADD_PERC, 0.4, 0.004 )
        call Tranquility.setBuffIcon( '@@2@@' )
        call Tranquility.setBuffModifier( m )
        
        set Entangle = BuffType.createDuplicate( cb_stun, 1.5, 0.02, false )
        call Entangle.setBuffIcon( '@@4@@' )
        call Entangle.addPeriodicEvent( EntangleDamage, 1.0 )
        
        set WW = ProjectileType.createRanged( "", 1000.00, 600.00 )
        call WW.enableCollision( WWHit, 175.00, TARGET_TYPE_CREEPS, false )
        call WW.enablePeriodic( WWPeriodic, 0.2 )
        
        set LS = Cast.create( '@@0@@', "blizzard", 4.00 )
        call LS.setDamageEvent( LSHit )
        
        set m = Modifier.create()
        call m.addModification( MOD_MOVESPEED, -0.3, -0.006 )
        set LSSlow = BuffType.create( 1.00, 0.04, false )
        call LSSlow.setBuffIcon( '@@5@@' )
        call LSSlow.setBuffModifier( m )
        
        set m = Modifier.create()
        call m.addModification( MOD_DMG_FROM_NATURE, 0.3, 0.006 )
        set Thorned = BuffType.create( 3.00, 0.06, false )
        call Thorned.setBuffIcon( '@@7@@' )
        call Thorned.setBuffModifier( m )
    endfunction

On Damage

ONDAMAGE_chance: 0.15 ONDAMAGE_chanceLevelAdd: 0.006
function onDamage takes Tower tower returns nothing
    call LS.pointCastFromTargetOnTarget( tower, Event.getTarget(), 700.00 + 30.00 * tower.getLevel(), tower.calcSpellCritNoBonus() )
endfunction

On Unit Comes In Range

UNITINRANGE_targetType: TARGET_TYPE_CREEPS UNITINRANGE_range: 950
function onUnitInRange takes Tower tower returns nothing
    call Thorned.apply( tower, Event.getTarget(), tower.getLevel() )
endfunction

Tower Aura

AURA_auraEffect: Tranquility AURA_power: 0 AURA_level: 0 AURA_auraRange: 450.00 AURA_targetType: TARGET_TYPE_TOWERS AURA_levelAdd: 1 AURA_powerAdd: 1 AURA_targetSelf: true
Hurricane Circle v1
2800
ID:
316
Family ID:
Author:
SternBogen / Natac & girlfriend
Rarity:
uncommon
Element:
storm
Attack Type:
Physical
Attack Range:
1100
Attack CD:
1.4
Damage:
2953-2967
Status:
Approved

Description:

Strong gusts of wind often linger around these ruins.
Specials:
+70% dmg to air (+2%/lvl)
Wind of Death
On attack this tower has a 28% chance to catch a ground, non-boss unit in a cyclone for 1 second, dealing 1120 physical damage to all units in 300 AoE when it falls back down. Falling champions deal 25% more damage. 

Level Bonus:
+112 damage
+0.7% chance to catch
Download

Toggle Triggers

Header

    globals
        //@import
        BuffType sternbogen_broken_wind
    endglobals
    
    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 Creep target = Event.getTarget()
    local real damage = 1120 + 112 * tower.getLevel()
    local Buff b
    if (target.getSize() == SIZE_MASS or target.getSize() == SIZE_NORMAL or target.getSize() == SIZE_CHAMPION) then
        if(tower.calcChance(0.28 + (0.007 * tower.getLevel()))) then
            set b = target.getBuffOfType(sternbogen_broken_wind)
            if b != 0 then
                set damage = RMaxBJ(b.userReal3, damage)
            endif
            set b = sternbogen_broken_wind.applyCustomTimed(tower, target, tower.getLevel(), 1.0)
            if b != 0 then
                set b.userReal3 = damage
            endif
        endif
    endif 
endfunction
Holy Eternal Light v1
2800
ID:
356
Family ID:
Author:
SternBogen
Rarity:
uncommon
Element:
astral
Attack Type:
Energy
Attack Range:
850
Attack CD:
1
Damage:
2168-2174
Status:
Approved

Description:

A strong tower against the undead. Can see nearby invisible units.
Magical Sight:
Can see invisible enemy units in 850 range.
Power of Light
The mighty holy light weakens enemy undead creeps for 5 seconds, so they will receive 30% more damage from physical and spell attacks. 

Level Bonus:
+0.2 seconds
+1% damage
Download

Toggle Triggers

Header

    globals
        //@import
        BuffType sternbogen_holy_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 Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    local Unit creep = Event.getTarget()
    // 0.001 Basic Bonus
    local integer bufflevel = 300 + 10 * tower.getLevel()
    if (CATEGORY_UNDEAD == creep.getCategory()) then
        call sternbogen_holy_Buff.applyCustomTimed(tower,Event.getTarget(),bufflevel,5 + 0.2 * tower.getLevel())
    endif
endfunction
Shaman Master v1
2800
ID:
394
Family ID:
Author:
His_Shadow
Rarity:
rare
Element:
fire
Attack Type:
Essence
Attack Range:
900
Attack CD:
1.5
Damage:
1387-1387
Mana:
20
Mana regen:
1
Status:
Approved

Description:

A mighty tribal sorcerer.
Specials:
15% crit chance
Bloodlust
The Shaman makes a friendly tower lust for blood, increasing its crit damage by x0.65 and attackspeed by 25% for 5 seconds. 

Level Bonus:
+x0.008 crit damage
+0.4% attackspeed
+0.12 seconds duration

AC_TYPE_OFFENSIVE_BUFF
 15, 500.0 range, 5.0s cooldown
Bloody Experience - Aura
Every tower below 20 level in 350 range receives 1 experience every time it crits. The amount of experience gained is base attackspeed and range adjusted. Level cap does not affect the Shaman himself.

Level Bonus:
+1 level cap every 5 levels
Download

Toggle Triggers

Autocast

caster_art: AUTOCAST_cooldown: 5.0 AUTOCAST_numBuffsBeforeIdle: 1 AUTOCAST_isExtended: false AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_BUFF AUTOCAST_manacost: 15 AUTOCAST_range: 500.0 AUTOCAST_buffType: HS_bloodlust_buff AUTOCAST_targetSelf: true AUTOCAST_targetType: TARGET_TYPE_TOWERS target_art: Abilities\Spells\Orc\Bloodlust\BloodlustTarget.mdl AUTOCAST_autoRange: 500.0
private function onAutocast takes Tower tower returns nothing
local integer level = tower.getLevel()
call HS_bloodlust_buff.applyCustomTimed(tower,Event.getTarget(), 250 + level * 4, 5 + 0.12*level)
endfunction

Header

globals
    //@import
    BuffType HS_bloodlust_buff
    //@import
    BuffType HS_bloody_exp_aura
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.userInt = 20
endfunction

Tower Aura

AURA_auraEffect: HS_bloody_exp_aura AURA_power: 1 AURA_level: 1 AURA_auraRange: 350 AURA_targetType: TARGET_TYPE_TOWERS AURA_levelAdd: 0 AURA_powerAdd: 0 AURA_targetSelf: true
Nature Souls v1
2800
ID:
398
Family ID:
Author:
DaveMatthews
Rarity:
uncommon
Element:
nature
Attack Type:
Essence
Attack Range:
900
Attack CD:
1.2
Damage:
2364-2364
Mana:
50
Mana regen:
2.5
Status:
Approved

Description:

Friendly spirits that live in the trees.
Nature's Gift
One of the spirits flies towards a tower in 500 range and buffs it for 5 seconds. The buff has a different effect depending on the tower's element:
+56% experience for Astral
+32% spell damage for Darkness
+8% crit chance for Nature
+32% damage for Fire
+40% buff duration for Ice
+16% attack speed for Storm
+12% item chance for Iron
The buffed tower has a 25% chance to receive another random effect in addition to the first one.

Level Bonus:
+1.6% experience
+0.8% spell damage
+0.2% crit chance
+0.8% damage
+1.2% buff duration
+0.4% attack speed
+0.28% item chance

AC_TYPE_OFFENSIVE_BUFF
 45, 500 range, 2s cooldown
Download

Toggle Triggers

Autocast

AUTOCAST_cooldown: 2 AUTOCAST_autoRange: 500 AUTOCAST_manacost: 45 AUTOCAST_range: 500 AUTOCAST_targetType: TARGET_TYPE_TOWERS AUTOCAST_numBuffsBeforeIdle: 5 caster_art: target_art: AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_BUFF AUTOCAST_buffType: 0 AUTOCAST_isExtended: false AUTOCAST_targetSelf: false
private function onAutocast takes Tower tower returns nothing
    local Projectile p
    set p = Projectile.createFromUnitToUnit(dave_sprite, tower, 0, 0, tower, Event.getTarget(), true, false, false)
    call p.setScale(1.5)
    call p.color(50,255,50,255)
endfunction

Header

    globals
        //@import
        ProjectileType dave_sprite
    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 = 2.0
endfunction
Firestorm Reactor v1
2800
ID:
423
Family ID:
Author:
Ashbringer
Rarity:
uncommon
Element:
fire
Attack Type:
Magic
Attack Range:
900
Attack CD:
1.3
Damage:
1487-1487
Status:
Approved

Description:

A device created to unleash fiery explosions.
Firestorm
Attacks have a 24% chance to apply 3 charges of Firestorm to the target. Each second, a charge will be spent, dealing 1400 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.7% chance
+65 damage
Download

Toggle Triggers

Header

    globals
        BuffType ashbringer_firestorm_buff
    endglobals
    
    function ashbringer_firestorm_damage takes Tower tower, Unit creep returns nothing
        call tower.doSpellDamageAoEUnit(creep, 300, 1400 + (65 * tower.getLevel()), tower.calcSpellCritNoBonus(), 0.0) 
        call Effect.createScaled("Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl", creep.getX(), creep.getY(), 0, 0, 0.4).destroy()
    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, 1.2).destroy()
        call tower.doSpellDamageAoEUnit(creep, 300, b.getPower()* (1400 + (65 * 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.24 ONATTACK_chanceLevelAdd: 0.007
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