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
Abil. Factor:
0.72
Status:
Approved

Description:

Summoner of storms and rain. Harpies are known for their brutality and mercilessness.

Latest Upload Comment:

Restored from 1.10
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
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