Harpy Witch v1
1350
ID:
145
Family ID:
Author:
drol
Rarity:
rare
Element:
storm
Attack Type:
Energy
Attack Range:
1000
Attack CD:
2.4
Damage:
1832-1994
Mana:
30
Mana regen:
2
Status:
Approved

Description:

Summoner of storms and rain. Harpies are known for their brutality and mercilessness.
Specials:
Bounce attack:
   2 targets
   -25% damage per bounce
Sparks
Increases the spell damage for a tower in 500 range by 15% and it's spell critical strike chance by 10%. Lasts 7.5 seconds.

Level Bonus:
+0.2% spell damage
+0.1% spell critical strike chance
+0.3 seconds duration

AC_TYPE_OFFENSIVE_BUFF
 22, 500 range, 2s cooldown
Twister
Attacks have a 8% chance to summon 2 tornados towards two random creeps in attack range of the harpy. Upon hit each tornado deals this tower's attack damage to the target and makes it suffer 10% additional damage from Storm towers for 5 seconds.

Level Bonus:
+0.3% chance
+0.4% additional damage taken
Download

Toggle Triggers

Autocast

AUTOCAST_cooldown: 2 AUTOCAST_autoRange: 500 AUTOCAST_manacost: 22 AUTOCAST_range: 500 AUTOCAST_targetType: TARGET_TYPE_TOWERS AUTOCAST_numBuffsBeforeIdle: 1 caster_art: target_art: Abilities\Spells\Other\Monsoon\MonsoonBoltTarget.mdl AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_BUFF AUTOCAST_buffType: drol_harpy AUTOCAST_isExtended: false AUTOCAST_targetSelf: false
private function onAutocast takes Tower tower returns nothing
    call drol_harpy.apply(tower, Event.getTarget(), tower.getLevel())
endfunction

Header

    globals
    
        //@export
        BuffType drol_harpy
        //@export
        BuffType drol_harpyDebuff
        //@export
        ProjectileType drol_harpyMissile 
    
    endglobals
    
    //On Hit function
    private function drol_harpyHit takes Projectile p, Unit creep returns nothing  
        local Tower tower = p.getCaster()
        call tower.doAttackDamage(creep,tower.getCurrentAttackDamageWithBonus(), tower.calcAttackMulticrit(0,0,0))  
        call drol_harpyDebuff.apply(tower, creep, tower.userInt)
    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()
        local Modifier n = Modifier.create()
        
        set drol_harpy = BuffType.create(7.5, 0.3, true)
        set drol_harpyDebuff = BuffType.create(5., 0., false)
        
        call m.addModification(MOD_SPELL_CRIT_CHANCE, 0.1, 0.001)
        call m.addModification(MOD_SPELL_DAMAGE_DEALT, 0.15, 0.002)
        call n.addModification(MOD_DMG_FROM_STORM, 0.10, 0.001)
        
        call drol_harpy.setBuffModifier(m)
        call drol_harpyDebuff.setBuffModifier(n)
        call drol_harpy.setBuffIcon('@@0@@')
        call drol_harpyDebuff.setBuffIcon('@@1@@')
        
        set drol_harpyMissile = ProjectileType.create("Abilities\\Spells\\Other\\Tornado\\TornadoElementalSmall.mdl",4,1000)  
        call drol_harpyMissile.enableHoming(ProjectileTargetEvent.drol_harpyHit, 0)  
    
    endfunction

On Attack

ONATTACK_chance: 0.08 ONATTACK_chanceLevelAdd: 0.003
function onAttack takes Tower tower returns nothing
    local Iterate i = Iterate.overUnitsInRangeOfCaster(tower, TARGET_CREEPS, 1000)  
    local integer k = 2
    local Unit u
    local Projectile p
    
    set tower.userInt = tower.getLevel() * 4
    
    loop
        set u = i.next()
        exitwhen u == 0 or k == 0
        set p = Projectile.createFromUnitToUnit(drol_harpyMissile, tower, 1, 0, tower, u, true, false, false) 
        call p.setScale(0.70)
        set k = k - 1
    endloop
    if u != 0 then
        call i.destroy()
    endif
    set i = 0
        
endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
    set tower.userInt = 0
endfunction
Harpy Queen v1
2700
ID:
146
Family ID:
Author:
drol
Rarity:
rare
Element:
storm
Attack Type:
Energy
Attack Range:
1000
Attack CD:
2.4
Damage:
3107-3269
Mana:
30
Mana regen:
2
Status:
Approved

Description:

Summoner of storms and rain. Harpies are known for their brutality and mercilessness.
Specials:
Bounce attack:
   2 targets
   -25% damage per bounce
Sparks
Increases the spell damage for a tower in 500 range by 20% and it's spell critical strike chance by 12.5%. Lasts 7.5 seconds.

Level Bonus:
+0.4% spell damage
+0.2% spell critical strike chance
+0.3 seconds duration

AC_TYPE_OFFENSIVE_BUFF
 22, 500 range, 2s cooldown
Twister
Attacks have a 12% chance to summon 3 tornados towards two random creeps in attack range of the harpy. Upon hit each tornado deals this tower's attack damage to the target and makes it suffer 18% additional damage from Storm towers for 5 seconds.

Level Bonus:
+0.5% chance
+0.7% additional damage taken
Download

Toggle Triggers

Autocast

caster_art: AUTOCAST_cooldown: 2 AUTOCAST_numBuffsBeforeIdle: 1 AUTOCAST_isExtended: false AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_BUFF AUTOCAST_manacost: 22 AUTOCAST_range: 500 AUTOCAST_buffType: drol_harpy AUTOCAST_targetSelf: false AUTOCAST_targetType: TARGET_TYPE_TOWERS target_art: Abilities\Spells\Other\Monsoon\MonsoonBoltTarget.mdl AUTOCAST_autoRange: 500
private function onAutocast takes Tower tower returns nothing
    call drol_harpy.applyCustomTimed(tower, Event.getTarget(), tower.getLevel() * 2 + 25, 7.5 + 0.3 * tower.getLevel())
endfunction

Header

    globals
    
        //@import
        BuffType drol_harpy
        //@import
        BuffType drol_harpyDebuff
        //@import
        ProjectileType drol_harpyMissile 
    
    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.12 ONATTACK_chanceLevelAdd: 0.005
function onAttack takes Tower tower returns nothing
    local Iterate i = Iterate.overUnitsInRangeOfCaster(tower, TARGET_CREEPS, 1000)  
    local integer k = 3
    local Unit u
    local Projectile p
    
    set tower.userInt = 20 + tower.getLevel() * 7
    
    loop
        set u = i.next()
        exitwhen u == 0 or k == 0
        set p = Projectile.createFromUnitToUnit(drol_harpyMissile, tower, 1, 0, tower, u, true, false, false) 
        call p.setScale(0.70)
        set k = k - 1
    endloop
    if u != 0 then
        call i.destroy()
    endif
    set i = 0
        
endfunction

On Tower Creation

function onCreate takes Tower tower returns nothing
    set tower.userInt = 0
endfunction