Burning Fortress v1
2500
ID:
661
Family ID:
Author:
Natac
Rarity:
uncommon
Element:
fire
Attack Type:
Elemental
Attack Range:
800
Attack CD:
1.34
Damage:
1865-1866
Status:
Approved

Description:

Burning structure with a huge 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 5.5, any other fire towers by 1.65. If the unit dies, it explodes and deals 1875 damage to nearby units in a range of 200.
Lasts 5 seconds after the last attack of a fire tower.

Level Bonus:
+ 0.55 damage gain (Burning Structrues)
+ 0.17 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      = 5.5 + towerLevel*0.55
    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 < 1875) then
        set b.userInt = 1875
    endif
endfunction
Star Keeper v1
2560
ID:
57
Family ID:
Author:
i_mOck_death
Rarity:
uncommon
Element:
astral
Attack Type:
Energy
Attack Range:
875
Attack CD:
1.55
Damage:
1781-1781
Status:
Approved

Description:

Uncommon astral tower that deals spell damage equal to its attack every time the tower attacks.
Magic Split
This tower deals an additional amount of spell damage to its target equal to 100% of its attack damage. If the creep is immune this damage is dealt as energy damage equal to 80% of its attack damage not affected by level bonus.

Level Bonus:
 +4% damage
Download

Toggle Triggers

On Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    local Unit creep = Event.getTarget()
    if creep.isImmune() then
        call tower.doAttackDamage(creep,tower.getCurrentAttackDamageWithBonus()*(.8),tower.calcAttackMulticrit(0.0,0.0,0))
    else
        call tower.doSpellDamage(creep,tower.getCurrentAttackDamageWithBonus()*(1+.04*tower.getLevel()),tower.calcSpellCritNoBonus())
    endif
endfunction
Necromantic Monument v1
2600
ID:
8
Family ID:
Author:
Boekie
Rarity:
uncommon
Element:
darkness
Attack Type:
Decay
Attack Range:
875
Attack CD:
1.6
Damage:
2484-2484
Mana:
30
Mana regen:
2
Status:
Approved

Description:

This monument is haunted by lost souls.
Soul Revenge
Hits 3 random creeps in 875 range, the first one suffers 1700 spelldamage, the second one suffers 3400 spelldamage and the third one suffers 5100 spelldamage.

Level Bonus:
+100/200/300 spelldamage

AC_TYPE_OFFENSIVE_IMMEDIATE
 20, 875 range, 1s cooldown
Download

Toggle Triggers

Autocast

caster_art: AUTOCAST_cooldown: 1 AUTOCAST_numBuffsBeforeIdle: 0 AUTOCAST_isExtended: false AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_IMMEDIATE AUTOCAST_manacost: 20 AUTOCAST_range: 875 AUTOCAST_buffType: 0 AUTOCAST_targetSelf: false AUTOCAST_targetType: 0 target_art: Abilities\Spells\Undead\Curse\CurseTarget.mdl AUTOCAST_autoRange: 875
private function onAutocast takes Tower tower returns nothing
    local integer  lvl = tower.getLevel()
    local Iterate inRange = Iterate.overUnitsInRangeOfCaster(tower,TARGET_TYPE_CREEPS,875) //Can set this at the start.
    local Unit next //Used as next during the iterate and the unit to affect during the other loop.
    local integer indexCounter = 0
    local integer loopCounter = 3
    local integer counter = 1

    loop
        set next=inRange.next()
        exitwhen next==0
        set resultArray[indexCounter] = next
        set indexCounter = indexCounter+1
    endloop
   
    if(indexCounter > 0) then //Commented lines here are for setting the period to a low time when no creeps are around,
                              //remove them if you don't want this to happen. Also if these lines are used, the On Level
                              //Up code isn't needed.
        loop
            set loopCounter = loopCounter - 1
            set next = resultArray[GetRandomInt(0,indexCounter-1)]
            call tower.doSpellDamage(next,(1700+lvl*100)*counter,tower.calcSpellCritNoBonus())
            call SFXAtUnit("Abilities\\Spells\\Items\\AIre\\AIreTarget.mdl",next.getUnit())
            set counter = counter + 1
            exitwhen loopCounter == 0
        endloop
    
    endif
    
endfunction

Header

    globals
    Unit array resultArray //Instead of numResults, use a resultArray so you only have to iterate once.
    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
Modern Iron Sentry v1
2600
ID:
33
Family ID:
Author:
Glowackos
Rarity:
rare
Element:
iron
Attack Type:
Physical
Attack Range:
925
Attack CD:
1.4
Damage:
1942-1942
Status:
Approved

Description:

A powerful iron tower that will go to great lengths to defend its territory.
Alert
Towers in 500 range get alerted whenever a creep of size air, champion or boss enters the sentry's attack range. They have their base damage increased by 7.5% for 15 seconds. Does not stack.

Level Bonus:
+0.5% base damage bonus
Trespasser Awareness
This tower strengthens its defenses when uninvited units enter its territory. It gains bonus 5%-40% base percent damage with each creep entering its attack range, based on the creep's size. Bonus damage lasts 12 seconds and new stacks of damage do not refresh duration of old ones.
There is also a 60% chance that the trespassing creep will permanently have its armor reduced by 5, which stacks up to 5 times.

Level Bonus:
+0.2 armor reduction
+0.1%-0.8% bonus base percent damage
Download

Toggle Triggers

Header

    globals
        //@import
        BuffType glow_damage_buff
        //@import
        BuffType glow_armor_shred
    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 Unit Comes In Range

UNITINRANGE_targetType: TARGET_TYPE_CREEPS UNITINRANGE_range: 925
function onUnitInRange takes Tower tower returns nothing
    local Unit creep = Event.getTarget()
    local integer size = creep.getSize()
    local integer level = tower.getLevel()
    local Iterate it
    local Unit next
    local integer uid = tower.getUID()
    local Buff b = creep.getBuffOfType(glow_armor_shred)
    local integer buffLevel = 500 + 20 * level
    if b != 0 then
        set buffLevel = IMinBJ(buffLevel + b.getLevel(), buffLevel * 5)
    endif
    
    if tower.calcChance(0.6) then
        call glow_armor_shred.apply(tower,creep,buffLevel)
    endif
    call tower.modifyProperty(MOD_DAMAGE_BASE_PERC,(0.05 + 0.001*level)*(size+1))
    if size > SIZE_NORMAL then
        set it = Iterate.overUnitsInRangeOfCaster(tower, TARGET_TOWERS, 500)
        loop
            set next = it.next()
            exitwhen next == 0
            call glow_damage_buff.apply(tower,next,2)
        endloop
    endif
    call TriggerSleepAction(12)
    if tower.getUID() == uid then
        call tower.modifyProperty(MOD_DAMAGE_BASE_PERC,-(0.05 + 0.001*level)*(size+1))
    endif
endfunction
Area Inflamer v1
2600
ID:
69
Family ID:
Author:
SirCoqaLot.
Rarity:
uncommon
Element:
fire
Attack Type:
Elemental
Attack Range:
700
Attack CD:
1.2
Damage:
188-188
Status:
Approved

Description:

Advanced tower thats attacks multiple targets at once and burns them, increasing other fire towers damage and dealing some damage over time.
Spreading Flames:
This tower attacks 4 targets at once.
Ignite
Units damaged by this tower receive 21% more damage from fire towers and take 140 spell damage every 0.5 seconds for 5 seconds. The damage over time effect stacks. 

Level Bonus:
+5.6 spell damage 
+0.05 seconds duration
Download

Toggle Triggers

Header

    globals
    //@import
    BuffType sir_area_rooster
    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 Buff buffyorno = Event.getTarget().getBuffOfGroup("sir_area_rooster")

    if buffyorno != 0 then 
        set tower.userInt = buffyorno.getLevel()+ 4
        set tower.userInt2 = IMaxBJ(buffyorno.getPower(),210)
    else
        set tower.userInt = 4
        set tower.userInt2 = 210
    endif
    
    call sir_area_rooster.applyAdvanced(tower,Event.getTarget(),tower.userInt,tower.userInt2,5+tower.getLevel()*0.05)
    
endfunction
Thief Grand Master v1
2600
ID:
113
Family ID:
Author:
i_mOck_death
Rarity:
uncommon
Element:
darkness
Attack Type:
Physical
Attack Range:
800
Attack CD:
1.5
Damage:
3930-3930
Status:
Approved

Description:

Trained in the shadows, the thief is an expert in finding gold.
Specials:
-10% dmg to undead (+0.4%/lvl)
+1.5% bounty collected/lvl
+9% item chance (+0.36%/lvl)
+9% item quality (+0.36%/lvl)
Steal
Every time the thief damages a creep there is a 10% chance he steals 12 gold.

Level Bonus:
+0.48 gold
+0.4% chance
Download

Toggle Triggers

Header

    globals
        //@import
        ProjectileType mOck_steal
        //@import
        MultiboardValues mOck_thief_multiboard
    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 ONDAMAGE_chanceLevelAdd: 0.004
function onDamage takes Tower tower returns nothing
call Projectile.createLinearInterpolationFromUnitToUnit(mOck_steal,tower,0,0,Event.getTarget(),tower,0,true)
endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
    local Tower super = Event.getPrecedingTower()
    call AddUnitAnimationProperties(tower.getUnit(), "stand alternate", false)
    if super.getFamily() == tower.getFamily() then
        set tower.userReal = super.userReal
    else
        set tower.userReal = 0.0 
    endif
    set tower.userInt = 120
endfunction

On Tower Details

function onTowerDetails takes Tower tower returns MultiboardValues
    call mOck_thief_multiboard.setValue(0,I2S(R2I(tower.userReal)))
    return mOck_thief_multiboard
endfunction
Blazing Sun Orb v1
2600
ID:
388
Family ID:
Author:
MasterCassim
Rarity:
common
Element:
astral
Attack Type:
Energy
Attack Range:
850
Attack CD:
1.3
Damage:
2300-2300
Status:
Approved

Description:

The blazing light of the sun makes its targets glow, especially undead ones.
Specials:
Splash attack:
   125 AoE: 55% damage
   225 AoE: 35% damage
+15% dmg to undead
Afterglow
The Orb has a 5% chance to reduce armor of units it damages by 10 for 5 seconds. This chance is doubled for bosses.

Level Bonus:
+0.6% chance
+0.25 seconds duration
Download

Toggle Triggers

Header

    globals
      //@import
      BuffType cassimArmor
    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
function onDamage takes Tower tower returns nothing
   local integer lvl = tower.getLevel()
   local Creep creep = Event.getTarget()
   local real sizeFactor = 1.0
   if creep.getSize() == SIZE_BOSS then
      set sizeFactor = 2.0
   endif
   if(tower.calcChance((0.05+lvl*0.006)*sizeFactor)) then
      call cassimArmor.applyCustomTimed(tower,creep,10,5+lvl*0.25)
   endif
endfunction