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

Description:

Charges itself up to disintegrate enemies and overcharge nearby lesser towers.

Latest Upload Comment:

Restored from 1.10
Specials:
5% spell crit chance (+0.5%/lvl)
x1.5 spell crit damage (+x0.05/lvl)
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
Conduit
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