Lesser Ice Defender v1
65
ID:
507
Family ID:
Author:
Natac
Rarity:
common
Element:
ice
Attack Type:
Elemental
Attack Range:
900
Attack CD:
1.4
Damage:
88-94
Status:
Approved

Description:

Common elementar defender.
Download
Lesser Astral Defender v1
65
ID:
510
Family ID:
Author:
Natac
Rarity:
common
Element:
astral
Attack Type:
Energy
Attack Range:
850
Attack CD:
1.2
Damage:
73-84
Status:
Approved

Description:

Common elementar defender.
Download
Lesser Iron Defender v1
65
ID:
515
Family ID:
Author:
Natac
Rarity:
common
Element:
iron
Attack Type:
Physical
Attack Range:
800
Attack CD:
1
Damage:
65-65
Status:
Approved

Description:

Common elementar defender.
Download
Burning Watchtower v1
65
ID:
658
Family ID:
Author:
Natac
Rarity:
uncommon
Element:
fire
Attack Type:
Elemental
Attack Range:
800
Attack CD:
1.4
Damage:
51-52
Status:
Approved

Description:

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

Level Bonus:
+ 0.1 damage gain (Burning Structrues)
+ 0.03 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
        //@export
        BuffType   natac_burning_buff
    endglobals
    
    // b.userReal: The user Real is the current bonus damage of the buff. Init with 0
    function initOnCreate takes Buff b returns nothing
        set b.userReal  = 0.0
        set b.userInt = 0
    endfunction
    
    // Increase damage gain and do direct damage to the target by setting the event damage
    function damageOnFireAttack takes Buff b returns nothing 
        local real    damageGain 
        local real    damageFactor
        local Unit    attacker       = Event.getTarget()
        local boolean isBurningTower 
        if(Element.FIRE == attacker.getCategory()) then
            set isBurningTower = Tower(attacker).getFamily() == Tower(b.getCaster()).getFamily()
            if(isBurningTower) then 
                set damageFactor = 1.0 // is Burning Tower
            else
                set damageFactor = 0.3 // is other fire tower
            endif
            
            set  damageGain   = damageFactor * b.getLevel() * 0.01 //Added power with "*100", so multiply with 0.01
            set  b.userReal   = b.userReal + damageGain
            set  Event.damage = Event.damage + b.userReal
            
            if(isBurningTower) then //Display damage
                call attacker.getOwner().displaySmallFloatingText(I2S(R2I(b.userReal)), b.getBuffedUnit(),255,90,0, 40.0)
            endif
            
            call b.refreshDuration() // Reset duration
        endif
    endfunction 
    
    // Does damage to all units around the buffed unit, if the buffed unit dies
    // b.userInt: AOE damage of the current buff.
    function explodeOnDeath takes Buff b returns nothing 
        local Unit killer      = Event.getTarget()
        local Unit buffedUnit  = b.getBuffedUnit()
        call  SFXAtUnit("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl",buffedUnit.getUnit())
        call  killer.doSpellDamageAoEUnit(buffedUnit,200, b.userInt, killer.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  natac_burning_buff = BuffType.create(0.0, 0.0, false) //CustomTime applied
        call natac_burning_buff.setBuffIcon('@@0@@')
        call natac_burning_buff.addEventOnCreate(EventHandler.initOnCreate)
        call natac_burning_buff.addEventOnDamaged(EventHandler.damageOnFireAttack,1.0,0.0)
        call natac_burning_buff.addEventOnDeath(EventHandler.explodeOnDeath)
    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      = 1 + towerLevel*0.1
    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 < 49) then
        set b.userInt = 49
    endif
endfunction
Baby Plant v1
65
ID:
673
Family ID:
Author:
Boekie
Rarity:
common
Element:
nature
Attack Type:
Decay
Attack Range:
825
Attack CD:
1.75
Damage:
108-108
Status:
Approved

Description:

This plant is small but it grows very fast!
Specials:
+40% exp gain (-2.5%/lvl)
+5% damage/lvl
Download
Fiery Dog v1
70
ID:
70
Family ID:
Author:
cedi
Rarity:
uncommon
Element:
fire
Attack Type:
Decay
Attack Range:
800
Attack CD:
1.2
Damage:
78-86
Status:
Approved

Description:

The hounds of war are howling again.
Roar
Whenever this tower damages a unit it has 30% chance to release a battle cry. The cry increases the attack damage of all towers in 420 range by 5% for 5 seconds. If a tower has allready the roar buff the attack damage is increased by 0.3% and the duration is refreshed. Stacks up to 100 times.

Level Bonus:
+0.3% attack damage
Download

Toggle Triggers

Header

    globals
        //@export
        BuffType cedi_helldog
    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
        local Modifier mod = Modifier.create()
        call mod.addModification( MOD_DAMAGE_ADD_PERC, 0.05, 0.0005 ) //*6 was 0.003 before
        
        set cedi_helldog = BuffType.create( 5.0, 0.0, true )
        call cedi_helldog.setBuffIcon( '@@0@@' )
        call cedi_helldog.setBuffModifier( mod )
    endfunction

On Damage

ONDAMAGE_chance: 0.3 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    local Iterate I = Iterate.overUnitsInRangeOfCaster( tower, TARGET_TYPE_TOWERS, 420.0 )
    local Unit U 
    local Buff B
    call DestroyEffect( AddSpecialEffectTarget( "Abilities\\Spells\\NightElf\\BattleRoar\\RoarCaster.mdl", tower.getUnit(), "origin" ) )
    loop
        set U = I.next()
        exitwhen U == 0
        set B = U.getBuffOfType( cedi_helldog )
        if B != 0 then
            if B.userInt < 100 then
                call cedi_helldog.apply( tower, U, B.getLevel() + 6 )
                set B.userInt = B.userInt + 1
            else
                call B.refreshDuration()
            endif
        else
            set B = cedi_helldog.apply( tower, U, tower.getLevel() * 6 )
            set B.userInt = 0
        endif
    endloop
endfunction
Burrow v1
70
ID:
186
Family ID:
Author:
tolleder
Rarity:
uncommon
Element:
iron
Attack Type:
Physical
Attack Range:
700
Attack CD:
3
Damage:
289-289
Status:
Approved

Description:

A burrow with Peons inside, which will try to break through every armor.
Piercing Shot
10% of this tower's attack damage cannot be reduced by armor resistances.

Level Bonus:
+0.4% damage ratio
Download

Toggle Triggers

On Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    local real curRatio=0.1+0.004*tower.getLevel()
    local real sDmg=Event.damage
    local real damageBase=Event.damage
    local Creep target=Event.getTarget()
    local real temp = AttackType.PHYSICAL.getDamageAgainst(target.getArmorType())
    
    if temp > 0. and temp < 1. then //ignoring armor type "resistance" not weakness :P
        set damageBase = damageBase / temp 
    endif
    
    set temp = (1 - target.getCurrentArmorDamageReduction())
    if temp > 0. then
        set damageBase = damageBase / temp 
    endif 
    
    if sDmg < damageBase then
        set Event.damage=damageBase*curRatio+sDmg*(1.-curRatio)
    endif
    //The engine calculates critical strike extra damage ***AFTER*** the onDamage event, so there is no need to care about it in this trigger.
endfunction