Hall of Souls v1
1000
ID:
633
Family ID:
Author:
Natac
Rarity:
rare
Element:
darkness
Attack Type:
Decay
Attack Range:
800
Attack CD:
1.4
Damage:
634-684
Status:
Approved

Description:

The last place of all already fallen souls, seeking for their last revenge.
Revenge of Souls
This tower gains 6 permanent bonus damage and 1 experience every time a creep in 1000 range dies.

Level Bonus:
+0.3 damage per kill
Download

Toggle Triggers

Header

    globals
        //@export
        BuffType natac_revengeOfSouls_Buff
    endglobals
    
    function setFamID takes Buff b returns nothing
        set b.userInt = Tower(b.getCaster()).getFamily()
    endfunction
    
    function increaseDamageAndExp takes Buff b returns nothing
        local Iterate it = Iterate.overUnitsInRangeOfCaster(b.getBuffedUnit(), TARGET_TOWERS, 1000)
        local Tower loopUnit
        local real loopSoulBonus
        
        call SFXAtUnit("Abilities\\Spells\\Items\\AIso\\AIsoTarget.mdl", b.getBuffedUnit().getUnit())
        loop
            set loopUnit = it.next()
            exitwhen loopUnit == 0
            if(loopUnit.getFamily() == b.userInt) then
                set loopSoulBonus = loopUnit.userReal + (loopUnit.getLevel() * loopUnit.userReal2)
                set loopUnit.userReal3 = loopUnit.userReal3 + loopSoulBonus
                call loopUnit.modifyProperty(MOD_DAMAGE_ADD, loopSoulBonus) //Modify damage
                call loopUnit.addExp(loopUnit.userInt) // Add exp
            endif
        endloop
    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  natac_revengeOfSouls_Buff = BuffType.createAuraEffectType(false)
        call natac_revengeOfSouls_Buff.setBuffIcon('@@0@@')
        call natac_revengeOfSouls_Buff.addEventOnCreate(EventHandler.setFamID)
        call natac_revengeOfSouls_Buff.addEventOnDeath(EventHandler.increaseDamageAndExp)
    endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
    local Tower preceding = Event.getPrecedingTower()
    local real  soulBonus
    
    set tower.userInt   = 1
    set tower.userReal  = 6
    set tower.userReal2 = 0.3   
    
    if(preceding != 0 and preceding.getFamily() == tower.getFamily()) then
        set  soulBonus       = preceding.userReal3
        set  tower.userReal3 = soulBonus
        call tower.modifyProperty(MOD_DAMAGE_ADD, soulBonus)
    else
        set   tower.userReal3  = 0.0 //Damage bonus from souls
    endif
    
    
endfunction

Tower Aura

AURA_powerAdd: 0 AURA_auraEffect: natac_revengeOfSouls_Buff AURA_levelAdd: 0 AURA_power: 1 AURA_targetType: TARGET_TYPE_CREEPS AURA_targetSelf: false AURA_level: 1 AURA_auraRange: 1000
Burning Outpost v1
1000
ID:
660
Family ID:
Author:
Natac
Rarity:
uncommon
Element:
fire
Attack Type:
Elemental
Attack Range:
800
Attack CD:
1.36
Damage:
759-760
Status:
Approved

Description:

Burning structure with a big synergetic effect for its element.
Burn
Starts to burn a target. On every further hit of a fire tower, the target will receive more bonus damage then before. Burning Structures will increase the bonus damage by 4, any other fire towers by 1.2. If the unit dies, it explodes and deals 750 damage to nearby units in a range of 200.
Lasts 5 seconds after the last attack of a fire tower.

Level Bonus:
+ 0.4 damage gain (Burning Structrues)
+ 0.12 damage gain (Other fire towers)
+ 0.12 seconds burn duration
Download

Toggle Triggers

Header

    globals
        //This buff is configurated as follows:
        //level: damage gain per attack
        //userReal: Already done bonus damage on the buffed unit
        //userInt: AOE-Damage if the buffed unit dies
        //@import
        BuffType   natac_burning_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 integer towerLevel = tower.getLevel()
    local Unit    target     = Event.getTarget()
    local real    level      = 4 + towerLevel*0.4
    local real    duration   = 5 + towerLevel*0.12
    local Buff    b          = natac_burning_buff.applyCustomTimed(tower, target, R2I(level*100), duration)
    
    // Upgrade AOE-damage, if it makes sense
    if(b.userInt < 750) then
        set b.userInt = 750
    endif
endfunction
Stormcloud Generator v1
1025
ID:
382
Family ID:
Author:
SirCoqaLot.
Rarity:
uncommon
Element:
storm
Attack Type:
Magic
Attack Range:
980
Attack CD:
1.35
Damage:
1-1
Status:
Approved

Description:

Simple storm tower that will deal all of its damage through spells. Has a minor chance to cast a chainlightning on attack.
Chainlightning
This tower has a 19.5% chance on attack to release a chainlightning that does 1680 damage and hit up to 3 units.

Level Bonus:
+33.6 damage
+0.25% chance
Force Attack
This tower deals 770 spell damage on attack.

Level Bonus:
+15.4 damage
Download

Toggle Triggers

Header

    globals
        Cast Chainlightning
    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 Chainlightning = Cast.create('@@0@@',"chainlightning",5.0)
    endfunction

On Attack

ONATTACK_chance: 0.195 ONATTACK_chanceLevelAdd: 0.0025
function onAttack takes Tower tower returns nothing
     call Chainlightning.targetCastFromCaster(tower,Event.getTarget(),1.0+tower.getLevel()*0.02,tower.calcSpellCritNoBonus())
endfunction

On Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    local Unit creep = Event.getTarget()
    call tower.doSpellDamage(creep,770*(1+tower.getLevel()*0.02),tower.calcSpellCritNoBonus())
endfunction
Adorable Young Spider v1
1080
ID:
175
Family ID:
Author:
D1000
Rarity:
uncommon
Element:
nature
Attack Type:
Essence
Attack Range:
825
Attack CD:
1.2
Damage:
549-558
Status:
Unapproved

Description:

I can not describe this spider, but at least it doesn´t spit at me.
Specials:
-30% dmg to nature
+10% dmg to orcs
+20% dmg to humanoids
Poisonous Spittle
Units damaged by the spider become infected and receive 270 spell damage per second for 5 seconds. Further attacks on the same unit will increase the potency of the infection, stacking the damage and refreshing duration. Limit of 5 stacks. The highest stack amount of any spider that has infected a unit will be used.

Level Bonus:
+13.5 damage per second
+0.05 second duration
+1 stack every 5 levels
Download

Toggle Triggers

Header

    globals
        //@import
        BuffType D1000_Spider_Poison
        //@import
        EventTypeList D1000_Spider_Apply
    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
    call tower.addEventList(D1000_Spider_Apply)
    set tower.userInt = 270
    set tower.userReal = 13.5
    set tower.userInt2 = 1350
    set tower.userReal2 = 67.5
    set tower.userInt3 = 5
    set tower.userReal3 = 0.05
endfunction
Old Felweed v1
1100
ID:
408
Family ID:
Author:
SirCoqaLot.
Rarity:
common
Element:
fire
Attack Type:
Decay
Attack Range:
750
Attack CD:
1
Damage:
912-912
Status:
Approved

Description:

Basic Tower that sometimes deals more damage.
Fireblossom
Every 6th attack deals 12.5% bonus damage.
Every 7th attack deals 25% bonus damage.
Every 8th attack deals 37.5% bonus damage.
Every 9th attack deals 50% bonus damage. 

Level Bonus:
+0.25% bonus damage every 6th attack.
+0.5% bonus damage every 7th attack.
+0.75% bonus damage every 8th attack.
+1% bonus damage every 9th 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 >= 6 then
    set Event.damage = Event.damage * (1.125 + level * 0.0025)
    set tower.userInt = 0
endif
if tower.userInt2 >= 7 then
    set Event.damage = Event.damage * (1.25 + level * 0.005)
    set tower.userInt2 = 0
endif
if tower.userInt3 >= 8 then
    set Event.damage = Event.damage * (1.375 + level * 0.0075)
    set tower.userInt3 = 0
endif
if tower.userReal >= 9 then
    set Event.damage = Event.damage * (1.5 +level * 0.01)
    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
Sun Shrine v1
1100
ID:
445
Family ID:
Author:
geX
Rarity:
common
Element:
astral
Attack Type:
Energy
Attack Range:
1200
Attack CD:
2
Damage:
1218-1374
Status:
Approved

Description:

Basic Tower with a weak bouncing attack and bonus damage to undead enemies.
Specials:
Bounce attack:
   3 targets
   -42% damage per bounce
+24% dmg to undead (+2.4%/lvl)
Download
Major Abominable Snowman v1
1100
ID:
589
Family ID:
Author:
drol
Rarity:
common
Element:
ice
Attack Type:
Energy
Attack Range:
900
Attack CD:
1.5
Damage:
1148-1152
Status:
Approved

Description:

Trained in surviving even the coldest winters, this creature has strengths unimagineable.
Specials:
Bounce attack:
   2 targets
   -10% damage per bounce
Download