Young Northern Troll v1
900
ID:
249
Family ID:
Author:
DaveMatthews
Rarity:
rare
Element:
ice
Attack Type:
Elemental
Attack Range:
800
Attack CD:
2
Damage:
1933-1933
Status:
Approved

Description:

Wanders in the cold northern lands, looking for preys.
Specials:
+10% dmg to orcs (+0.2%/lvl)
+10% dmg to humanoids (+0.2%/lvl)
Ice Smashing Axe
On attack this tower has a 15% chance to throw a giant axe. The axe shatters all the buffs from its target and deals 20% of the tower's attack damage as elemental damage for each buff purged. If more than 5 buffs are removed the enemy is also stunned for 1.5 seconds (0.75 on bosses). The axe is so heavy that its wielder's attack speed is slowed by 30% for 3 seconds after throwing it. 

Level Bonus:
+0.4% damage per buff 
-0.4% attack speed reduction
Ice Coated Axes
This tower deals 0.6% bonus damage for every 1% movement speed the target is missing. 

Level Bonus:
+0.02% damage
Download

Toggle Triggers

Header

    globals
        //@export
        BuffType dave_fatigue
        //@export
        ProjectileType dave_axe
    endglobals
    
    function axeHit takes Projectile p, Unit creep returns nothing
        local Tower tower = p.getCaster()
        local integer level= tower.getLevel()
        local integer buffs = 0
        local real damage = tower.getCurrentAttackDamageWithBonus()
        loop
            exitwhen not (creep.purgeBuff(true) or creep.purgeBuff(false))
            set buffs = buffs + 1
        endloop
         
        if buffs != 0 then
            call tower.doAttackDamage(creep,damage*(p.userReal*buffs),tower.calcAttackMulticrit(0,0,0))
            if buffs > 5 then
                if creep.getSize() != SIZE_BOSS then
                    call cb_stun.applyOnlyTimed(tower,creep,1.5)
                else
                    call cb_stun.applyOnlyTimed(tower,creep,0.75)
               endif
            endif
        endif
         
        call SFXAtUnit("Abilities\\Weapons\\FrostWyrmMissile\\FrostWyrmMissile.mdl",creep.getUnit())
    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 dave_fatigue = BuffType.create(3.0,0.0,false)
        call dave_fatigue.setBuffModifier(m)
        call dave_fatigue.setBuffIcon( '@@0@@' )
        call m.addModification(MOD_ATTACKSPEED,-0.3,0.004)
      
        set dave_axe = ProjectileType.create("Abilities\\Weapons\\RexxarMissile\\RexxarMissile.mdl",4,900)
        call dave_axe.setEventOnInterpolationFinished(ProjectileTargetEvent.axeHit)
    endfunction

On Attack

ONATTACK_chance: 0.15 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
    local Projectile p
    local Unit creep = Event.getTarget()
    local integer level = tower.getLevel()

    set p = Projectile.createLinearInterpolationFromUnitToUnit(dave_axe, tower,1,1, tower, creep, 0.2, true)
    set p.userReal = 0.2+0.004*level
    call p.setScale(1.5)
    call dave_fatigue.apply(tower,tower,level)
endfunction

On Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    local Creep creep = Event.getTarget()
    local integer level= tower.getLevel()
    local real speed = creep.getBaseMovespeed()
    local real currentSpeed = creep.getCurrentMovespeed()
    local real slow
    local real damage
    if currentSpeed < speed then
        set slow = (speed - currentSpeed) / speed
        set damage = Event.damage*slow*(0.6+0.02*level)
        set Event.damage = Event.damage+damage
        call tower.getOwner().displaySmallFloatingText("+"+I2S(R2I(damage)),creep,100,100,255,0)
    endif
endfunction
Adult Northern Troll v1
1900
ID:
250
Family ID:
Author:
DaveMatthews
Rarity:
rare
Element:
ice
Attack Type:
Elemental
Attack Range:
800
Attack CD:
2
Damage:
3697-3697
Status:
Approved

Description:

Wanders in the cold northern lands, looking for preys.
Specials:
+15% dmg to orcs (+0.3%/lvl)
+15% dmg to humanoids (+0.3%/lvl)
Ice Smashing Axe
On attack this tower has a 15% chance to throw a giant axe. The axe shatters all the buffs from its target and deals 25% of the tower's attack damage as elemental damage for each buff purged. If more than 5 buffs are removed the enemy is also stunned for 1.5 seconds (0.75 on bosses). The axe is so heavy that its wielder's attack speed is slowed by 30% for 3 seconds after throwing it. 

Level Bonus:
+0.5% damage per buff 
-0.4% attack speed reduction
Ice Coated Axes
This tower deals 0.65% bonus damage for every 1% movement speed the target is missing. 

Level Bonus:
+0.025% damage
Download

Toggle Triggers

Header

    globals
        //@import
        BuffType dave_fatigue
        //@import
        ProjectileType dave_axe
    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.15 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
    local Projectile p
    local Unit creep = Event.getTarget()
    local integer level = tower.getLevel()

    set p = Projectile.createLinearInterpolationFromUnitToUnit(dave_axe, tower,1,1, tower, creep, 0.2, true)
    set p.userReal = 0.25+0.005*level
    call p.setScale(1.5)
    call dave_fatigue.apply(tower,tower,level)
endfunction

On Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    local Creep creep = Event.getTarget()
    local integer level= tower.getLevel()
    local real speed = creep.getBaseMovespeed()
    local real currentSpeed = creep.getCurrentMovespeed()
    local real slow
    local real damage
    if currentSpeed < speed then
        set slow = (speed - currentSpeed) / speed
        set damage = Event.damage*slow*(0.65+0.025*level)
        set Event.damage = Event.damage+damage
        call tower.getOwner().displaySmallFloatingText("+"+I2S(R2I(damage)),creep,100,100,255,0)
    endif
endfunction
Elder Northern Troll v1
3000
ID:
251
Family ID:
Author:
DaveMatthews
Rarity:
rare
Element:
ice
Attack Type:
Elemental
Attack Range:
800
Attack CD:
2
Damage:
5459-5459
Status:
Approved

Description:

Wanders in the cold northern lands, looking for preys.
Specials:
+20% dmg to orcs (+0.4%/lvl)
+20% dmg to humanoids (+0.4%/lvl)
Ice Smashing Axe
On attack this tower has a 15% chance to throw a giant axe. The axe shatters all the buffs from its target and deals 30% of the tower's attack damage as elemental damage for each buff purged. If more than 5 buffs are removed the enemy is also stunned for 1.5 seconds (0.75 on bosses). The axe is so heavy that its wielder's attack speed is slowed by 30% for 3 seconds after throwing it. 

Level Bonus:
+0.6% damage per buff 
-0.4% attack speed reduction
Ice Coated Axes
This tower deals 0.7% bonus damage for every 1% movement speed the target is missing. 

Level Bonus:
+0.03% damage
Download

Toggle Triggers

Header

    globals
        //@import
        BuffType dave_fatigue
        //@import
        ProjectileType dave_axe
    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.15 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
    local Projectile p
    local Unit creep = Event.getTarget()
    local integer level = tower.getLevel()

    set p = Projectile.createLinearInterpolationFromUnitToUnit(dave_axe, tower,1,1, tower, creep, 0.2, true)
    set p.userReal = 0.3+0.006*level
    call p.setScale(1.5)
    call dave_fatigue.apply(tower,tower,level)
endfunction

On Damage

ONDAMAGE_chance: 1.0 ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
    local Creep creep = Event.getTarget()
    local integer level= tower.getLevel()
    local real speed = creep.getBaseMovespeed()
    local real currentSpeed = creep.getCurrentMovespeed()
    local real slow
    local real damage
    if currentSpeed < speed then
        set slow = (speed - currentSpeed) / speed
        set damage = Event.damage*slow*(0.7+0.03*level)
        set Event.damage = Event.damage+damage
        call tower.getOwner().displaySmallFloatingText("+"+I2S(R2I(damage)),creep,100,100,255,0)
    endif
endfunction