Engulfing Dark Fire Pit v1
1300
ID:
181
Family ID:
Author:
i_mOck_death
Rarity:
common
Element:
darkness
Attack Type:
Decay
Attack Range:
850
Attack CD:
1.1
Damage:
754-754
Status:
Approved

Description:

Darkness tower that is weak to undead units, but strong to magical units. The tower can also hit multiple units on each attack.
Specials:
-20% dmg to undead (+0.5%/lvl)
+20% dmg to magical (+0.7%/lvl)
Multishot:
Attacks up to 3 targets at the same time.
Download
Lunar Emitter v1
1300
ID:
296
Family ID:
Author:
geX
Rarity:
rare
Element:
darkness
Attack Type:
Elemental
Attack Range:
800
Attack CD:
1.4
Damage:
990-990
Status:
Approved

Description:

Shines moonlight on the enemies in its vicinity weakening their resistances.
Specials:
Splash attack:
   50 AoE: 100% damage
   350 AoE: 40% damage
Moonlight - Aura
Reduces the spell resistance of enemies in 800 range by 15% and increases the vulnerability to damage from Astral, Darkness, Ice, and Storm towers by 10%. 

Level Bonus:
+0.45% spell resistance reduction
+0.3% vulnerability
Download

Toggle Triggers

Header

    globals
        //@export
        BuffType gexMoonAura
    endglobals
    
    private function init takes nothing returns nothing
        local Modifier m = Modifier.create()
        set gexMoonAura = BuffType.createAuraEffectType(false)
        call m.addModification(MOD_DMG_FROM_ASTRAL,0.0,0.001)
        call m.addModification(MOD_DMG_FROM_DARKNESS,0.0,0.001)
        call m.addModification(MOD_DMG_FROM_ICE,0.0,0.001)
        call m.addModification(MOD_DMG_FROM_STORM,0.0,0.001)
        call m.addModification(MOD_SPELL_DAMAGE_RECEIVED,0.0,0.0015)
        call gexMoonAura.setBuffModifier(m)
        call gexMoonAura.setBuffIcon('@@0@@')
    endfunction

Tower Aura

AURA_auraEffect: gexMoonAura AURA_power: 100 AURA_level: 100 AURA_auraRange: 800 AURA_targetType: TARGET_TYPE_CREEPS AURA_levelAdd: 3 AURA_powerAdd: 3 AURA_targetSelf: false
Sacrificial Lamb v1
1300
ID:
335
Family ID:
Author:
DaveMatthews
Rarity:
rare
Element:
darkness
Attack Type:
Decay
Attack Range:
850
Attack CD:
1
Damage:
1234-1234
Mana:
100
Mana regen:
2.5
Status:
Approved

Description:

Sacrifices itself to boost nearby towers.
Specials:
+0.1 mana regen/lvl
Sacrifice
This tower loses 100% of its damage to boost the dps of a tower in 500 range by 30% of its total damage for 6 seconds. This buff has no effect on towers of the same family.

Level Bonus:
+0.6% bonus damage

AC_TYPE_OFFENSIVE_BUFF
 90, 500 range, 6s cooldown
Blood Spill
On attack, this tower has a 15% chance to lose 100% attack speed and boost the attack speed of all towers in 200 range by 50%, equally divided among them, for 6 seconds. Every time it casts Blood Spill, the tower gains 0.25 experience for every other tower affected. Cannot retrigger when the buff is already active. 

Level Bonus:
+1% attack speed 
+0.2% chance
Download

Toggle Triggers

Autocast

AUTOCAST_cooldown: 6 AUTOCAST_autoRange: 500 AUTOCAST_manacost: 90 AUTOCAST_range: 500 AUTOCAST_targetType: TARGET_TYPE_TOWERS AUTOCAST_numBuffsBeforeIdle: 1 caster_art: Abilities\Spells\Undead\CarrionSwarm\CarrionSwarmDamage.mdl target_art: Abilities\Spells\Undead\DeathPact\DeathPactCaster.mdl AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_BUFF AUTOCAST_buffType: dave_sacrifice_target AUTOCAST_isExtended: false AUTOCAST_targetSelf: false
private function onAutocast takes Tower tower returns nothing
    local Tower target = Event.getTarget()
    local Buff b

    if target.getFamily() != tower.getFamily() then
        if target.getBuffOfType(dave_sacrifice_target) != 0 then
            call dave_sacrifice_target.apply(tower, target, 0)
        else
            set b = dave_sacrifice_target.apply(tower, target, 0)
            set b.userReal = tower.getCurrentAttackDamageWithBonus()*(0.3+(0.006*tower.getLevel()))
            call target.modifyProperty(MOD_DPS_ADD, b.userReal) 
        endif
        
        call dave_sacrifice_altar.apply(tower, tower, tower.getLevel())
    endif
endfunction

Header

    globals
        //@export
        BuffType dave_sacrifice_target
        //@export
        BuffType dave_sacrifice_altar
        //@export
        BuffType dave_blood_target
        //@export
        BuffType dave_blood_altar
    endglobals
    
    function resetBonus takes Buff b returns nothing
        local Tower tower = b.getBuffedUnit()
       call tower.modifyProperty(MOD_DPS_ADD, -b.userReal)
    endfunction
    
    private function init takes nothing returns nothing
        local Modifier m = Modifier.create()
        local Modifier n = Modifier.create()
        local Modifier o = Modifier.create()
        
        set dave_blood_target = BuffType.create(6.0,0.0,true)
        call dave_blood_target.setBuffModifier(m)
        call m.addModification(MOD_ATTACKSPEED,0.0,0.01)
        call dave_blood_target.setBuffIcon( '@@0@@' )
        
        set dave_blood_altar = BuffType.create(6.0,0,false)
        call dave_blood_altar.setBuffModifier(n)
        call n.addModification(MOD_ATTACKSPEED,-1.0,0.0)
        call dave_blood_altar.setBuffIcon( '@@1@@' )
        
        set dave_sacrifice_target = BuffType.create(6.0,0,true)
        call dave_sacrifice_target.addEventOnCleanup(resetBonus)
        call dave_sacrifice_target.setBuffIcon( '@@2@@' )
        
        set dave_sacrifice_altar = BuffType.create(6.0,0,false)
        call dave_sacrifice_altar.setBuffModifier(o)
        call o.addModification(MOD_DAMAGE_ADD_PERC,-1.0,0)
        call dave_sacrifice_altar.setBuffIcon( '@@3@@' )
    endfunction

On Attack

ONATTACK_chance: 0.15 ONATTACK_chanceLevelAdd: 0.002
function onAttack takes Tower tower returns nothing
    local integer numTowers
    local integer level = tower.getLevel() 
    local Tower u
    local Buff b
    local Iterate it = Iterate.overUnitsInRangeOfCaster(tower, TARGET_TOWERS, 200)

    set b = tower.getBuffOfType(dave_blood_altar)
    set numTowers = it.count() - 1

    if b == 0 then
      call SFXAtUnit("Objects\\Spawnmodels\\Human\\HumanBlood\\HumanBloodKnight.mdl", tower.getUnit())
        loop
            set u = it.next()
            exitwhen u == 0
            if u != tower and numTowers > 0 then
                call dave_blood_target.apply(tower, u, (50 + level)/numTowers)
            endif
        endloop
        if numTowers > 0 then
            call dave_blood_altar.apply(tower, tower, level)
            call tower.addExp(0.25 * numTowers)
        endif
    else
      call it.destroy()    
    endif
endfunction
Snowy Cliff v1
1300
ID:
452
Family ID:
Author:
geX
Rarity:
common
Element:
ice
Attack Type:
Elemental
Attack Range:
780
Attack CD:
0.9
Damage:
850-1040
Status:
Approved

Description:

Basic tower with a high AoE splash attack with low splash damage. Deals bonus damage to mass creeps.
Specials:
Splash attack:
   600 AoE: 10% damage
+42% dmg to masses (+1.4%/lvl)
Download
Wealthy Fire Pit v1
1300
ID:
585
Family ID:
Author:
Boekie
Rarity:
common
Element:
fire
Attack Type:
Decay
Attack Range:
800
Attack CD:
0.9
Damage:
951-951
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 30% bonus crit chance for 10.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,150+(lvl*3),10.5+0.05*lvl) 
endfunction
Old Lightning Totem v1
1300
ID:
605
Family ID:
Author:
Boekie
Rarity:
rare
Element:
storm
Attack Type:
Energy
Attack Range:
800
Attack CD:
0.7
Damage:
652-652
Status:
Approved

Description:

This totem uses ancient magic to boost lightning spells.
Ancient Magic - Aura
Increases spell crit chance of towers in 500 range by 15%. 

Level Bonus:
+0.2% spell crit chance
Download

Toggle Triggers

Header

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

Tower Aura

AURA_auraEffect: boekie_spellCrit_aura AURA_power: 50 AURA_level: 50 AURA_auraRange: 500 AURA_targetType: TARGET_TYPE_TOWERS AURA_levelAdd: 2 AURA_powerAdd: 2 AURA_targetSelf: false
Chilled Spirit v1
1300
ID:
646
Family ID:
Author:
Boekie
Rarity:
rare
Element:
ice
Attack Type:
Energy
Attack Range:
950
Attack CD:
2
Damage:
439-439
Status:
Approved

Description:

An icy spirit that lives in the north. It can invoke an ice nova.
Nova Storm
When this tower attacks there is a 25% chance to hit 3 creeps in 900 range around it with ice novas. A nova hits all creeps in 200 AoE dealing 910 spelldamage at the centre, dropping off to 50% at the sides. Also slows by 12.5% for 4 seconds.

Level Bonus:
+45.5 spelldamage 
+0.5% chance 
+0.5% slow 
+1 nova at lvl 15 and 25
Download

Toggle Triggers

Header

    globals
        //@import  
        BuffType boekie_icySpirit_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 Attack

ONATTACK_chance: 0.25 ONATTACK_chanceLevelAdd: 0.005
function onAttack takes Tower tower returns nothing
    local integer level = tower.getLevel() 

    if tower.userInt != 0 then
        if level < 15 then
            set tower.userInt2 = 3 
        elseif level < 25 then
            set tower.userInt2 = 4
        else
            set tower.userInt2 = 5
        endif

        call PeriodicEvent(tower.userInt).enable() 
    endif 
endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
    set tower.userInt = 0 //Saves the periodic
    set tower.userInt2 = 0 //Saves the number of novas remaining to fire
endfunction

Periodic

PERIODIC_period: 0.1
function periodic takes Tower tower returns nothing
    local Iterate it
    local Unit target
    local integer level = tower.getLevel()

    if tower.userInt2 > 0 then 
        set it = Iterate.overUnitsInRangeOfCaster(tower,TARGET_CREEPS,900) 
        set target = it.nextRandom()

        if target != 0 then
            call it.destroy()
            call tower.doSpellDamageAoEUnit(target,200,910.0+(level*45.5),tower.calcSpellCritNoBonus(),0.5) 
            call SFXOnUnit("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl",target.getUnit(),"origin")

            set it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_CREEPS,target,200) 
            loop
                set target = it.next()
                exitwhen target == 0
                call boekie_icySpirit_buff.apply(tower,target,125+level*5)
            endloop 
        endif 

        set tower.userInt2 = tower.userInt2 - 1 
    else
        //Save the periodic event
        if tower.userInt == 0 then
            set tower.userInt = Event.getCurrentPeriodicEvent()
        endif
        call PeriodicEvent(tower.userInt).disable()
    endif 
endfunction