The Conduit v1
4000
ID:
399
Family ID:
Author:
Ashbringer
Rarity:
unique
Element:
storm
Attack Type:
Magic
Attack Range:
1200
Attack CD:
2
Damage:
1-1
Mana:
1000
Mana regen:
0
Status:
Approved

Description:

Charges itself up to disintegrate enemies and overcharge nearby lesser towers.
Specials:
5% spell crit chance (+0.5%/lvl)
x1.5 spell crit damage (+x0.05/lvl)
Absorb Energy:
Attacks hit up to 10 enemies, but do no damage. There is a 10% chance per hit to gather energy, restoring 50 mana to the tower and the target will lose 50 mana if it has mana.

Level Bonus:
+1 mana
+0.2% chance
Unleash
Unleashes built up energy, dealing [400 x wave] spell damage to a single enemy and increasing the spell crit damage of nearby towers within 350 range by x0.75 for 5 seconds.

Level Bonus:
+8 spell damage per wave
+x0.03 spell crit damage

AC_TYPE_OFFENSIVE_BUFF
 400, 1200.00 range, 0.50s cooldown
Conduit - Aura
Attack speed, trigger chances, spell damage, spell crit chance and spell crit damage bonuses on this tower are applied to Common and Uncommon Storm towers in 350 range at a rate of 50%.

Level Bonus:
+2% stats
Download

Toggle Triggers

Autocast

AUTOCAST_cooldown: 0.50 AUTOCAST_autoRange: 1200.00 AUTOCAST_manacost: 400 AUTOCAST_range: 1200.00 AUTOCAST_targetType: TARGET_TYPE_CREEPS AUTOCAST_numBuffsBeforeIdle: 1 caster_art: target_art: AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_BUFF AUTOCAST_buffType: 0 AUTOCAST_isExtended: false AUTOCAST_targetSelf: false
private function onAutocast takes Tower tower returns nothing
    local Iterate it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_TOWERS,tower,350)
    local Unit next
    local real cast_damage = (400 + (tower.getLevel() * 8)) * tower.getOwner().getTeam().getLevel()

    loop
        set next = it.next()
            call ashbringer_unleash_buff.apply(tower,next,tower.getLevel())
        exitwhen next == 0
    endloop
    
    call ashbringer_unleash_cast.targetCastFromCaster(tower,Event.getTarget(),1.0+tower.getLevel()*0.02,tower.calcSpellCritNoBonus())
    call tower.doSpellDamage(Event.getTarget(), cast_damage, tower.calcSpellCritNoBonus())
endfunction

Header

    globals
      BuffType ashbringer_conduit_aura
      Cast ashbringer_unleash_cast
      BuffType ashbringer_unleash_buff
    endglobals

    function ashbringer_conduit_update takes Buff b returns nothing
        local Tower tower = b.getBuffedUnit()
        local Tower caster = b.getCaster()
        local real tower_level = caster.getLevel()
        local real caster_level_factor = 0.5 + (tower_level * 0.02)
        call tower.modifyProperty(MOD_SPELL_DAMAGE_DEALT, -b.userReal)
        call tower.modifyProperty(MOD_SPELL_CRIT_CHANCE, -b.userReal2)
        call tower.modifyProperty(MOD_SPELL_CRIT_DAMAGE, -b.userReal3)
        call tower.modifyProperty(MOD_ATTACKSPEED, -(b.userInt/1000.0))
        call tower.modifyProperty(MOD_TRIGGER_CHANCES, -(b.userInt2/1000.0))
        set b.userReal = (caster.getProp_SpellDmgDealt() - 1.0)*caster_level_factor
        set b.userReal2 = (caster.getProp_SpellCritChance() - (0.05 + (tower_level * 0.005)))*caster_level_factor
        set b.userReal3 = (caster.getProp_SpellCritDamage() - (1.5 + (tower_level * 0.05)))*caster_level_factor
        set b.userInt = R2I((caster.getProp_Attackspeed() - (0.00 + (tower_level * 0.012)))*caster_level_factor*1000.0)
        set b.userInt2 = R2I((caster.getProp_TriggerChances()- 1.0)*caster_level_factor*1000.0)
        call tower.modifyProperty(MOD_SPELL_DAMAGE_DEALT, b.userReal)
        call tower.modifyProperty(MOD_SPELL_CRIT_CHANCE, b.userReal2)
        call tower.modifyProperty(MOD_SPELL_CRIT_DAMAGE, b.userReal3)
        call tower.modifyProperty(MOD_ATTACKSPEED, (b.userInt/1000.0))
        call tower.modifyProperty(MOD_TRIGGER_CHANCES, (b.userInt2/1000.0))
    endfunction

    function ashbringer_conduit_create takes Buff b returns nothing
        set b.userReal = 0
        set b.userReal2 = 0
        set b.userReal3 = 0
        set b.userInt = 0
        set b.userInt2 = 0
        call ashbringer_conduit_update(b)
    endfunction

    function ashbringer_conduit_cleanup takes Buff b returns nothing
        local Tower tower = b.getBuffedUnit()
        call tower.modifyProperty(MOD_SPELL_DAMAGE_DEALT, -b.userReal)
        call tower.modifyProperty(MOD_SPELL_CRIT_CHANCE, -b.userReal2)
        call tower.modifyProperty(MOD_SPELL_CRIT_DAMAGE, -b.userReal3)
        call tower.modifyProperty(MOD_ATTACKSPEED, -b.userInt/1000.0)
        call tower.modifyProperty(MOD_TRIGGER_CHANCES, -b.userInt2/1000.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
        local Modifier m = Modifier.create()
        
        set ashbringer_conduit_aura = BuffType.createAuraEffectType(true)
        set ashbringer_unleash_cast = Cast.create('@@1@@',"chainlightning",1.0)
        set ashbringer_unleash_buff=BuffType.create(3,0,false)
        
        call ashbringer_conduit_aura.setBuffIcon('@@2@@')
        call ashbringer_conduit_aura.addEventOnCreate(ashbringer_conduit_create)
        call ashbringer_conduit_aura.addEventOnCleanup(ashbringer_conduit_cleanup)
        call ashbringer_conduit_aura.addPeriodicEvent(ashbringer_conduit_update, 5)
        
        call m.addModification(MOD_SPELL_CRIT_DAMAGE, 0.75, 0.03)
        call ashbringer_unleash_buff.setBuffIcon('@@3@@')
        call ashbringer_unleash_buff.setBuffModifier(m)
        
        call ashbringer_unleash_cast.setSourceHeight(220.0)
    endfunction

On Damage

ONDAMAGE_chance: 0.1 ONDAMAGE_chanceLevelAdd: 0.002
function onDamage takes Tower tower returns nothing
    local real mana = 50.0 + (1.0 * tower.getLevel())
    set Event.damage = 0
    call tower.addMana(mana)
    call Event.getTarget().subtractMana(mana, true)
    call Lightning.createFromUnitToPoint("BLUE", Event.getTarget(), tower.getX(), tower.getY(), 180.00).setLifetime(0.5)
endfunction

Tower Aura

AURA_powerAdd: 0 AURA_auraEffect: ashbringer_conduit_aura AURA_levelAdd: 0 AURA_power: 1 AURA_targetType: TARGET_TYPE_TOWERS + TARGET_TYPE_ELEMENT_STORM + TARGET_TYPE_RARITY_UNCOMMON + TARGET_TYPE_RARITY_COMMON AURA_targetSelf: false AURA_level: 1 AURA_auraRange: 350