Scales v1
3500
|
ID: 210
Family ID:
Author: cedi
Rarity: unique
Element: storm
Attack Type: Energy
Attack Range: 1500
Attack CD: 1.5
Damage: 843-851
Mana: 1100
Mana regen: 10
Status: Approved
|
Specials:
+20% dmg to air (+0.8%/lvl)
Lightmare
Summons a storm cloud which attacks units in 1500 range. Every 0.33 seconds the cloud attacks up to 3 targets with forked lightning. Each lightning deals 1300 spell damage. Lightmare lasts 10 seconds and does not benefit from buff duration. Level Bonus: +52 spell damage AC_TYPE_OFFENSIVE_IMMEDIATE 1000, 1500.0 range, 10.5s cooldown
I Scale
This tower gains 1.66% spell damage, spell crit damage and 0.125% spell crit chance for each level the player survives.
Electrify
Whenever this tower damages a creep, it has a 20% chance to electrify it for 5 seconds. Each second, all creeps in 225 range of the electrified unit take 900 spell damage. Level Bonus: +0.8% chance +36 spell damage per second
Overcharge
Whenever this tower deals damage with its attacks or its other innate abilities it has a 25% chance to deal 900 spell damage to the damaged unit. Overcharge can trigger itself, but the chance to do so is decreased by 5% for each time it retriggers. Level Bonus: +36 spell damage +1% chance |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 10.5
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_IMMEDIATE
AUTOCAST_manacost: 1000
AUTOCAST_range: 1500.0
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: true
AUTOCAST_targetType: 0
target_art:
AUTOCAST_autoRange: 1500.00
private function onAutocast takes Tower tower returns nothing
local Effect E = Effect.createScaled( "Abilities\\Spells\\Human\\CloudOfFog\\CloudOfFog.mdl", tower.getX(), tower.getY(), 300.00, 0.00, 0.60 )
local integer UID = tower.getUID()
call E.setLifetime( 10.0 )
set tower.userInt2 = 1
call TriggerSleepAction( 10.0 )
if UID == tower.getUID() then
set tower.userInt2 = 0
endif
endfunction
Header globals
Cast TUNDER
BuffType ELEC
MultiboardValues MB
endglobals
function overchargeDamage takes Tower tower, Creep targ, integer level returns nothing
local unit u = targ.getUnit()
local integer i = 0
loop
exitwhen GetWidgetLife( u ) <= 0.405
if tower.calcChance( ( 0.25 + level / 100.00 ) - i * 0.05 ) then
call DestroyEffect( AddSpecialEffectTarget( "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl", u, "origin" ) )
call tower.doSpellDamage( targ, 900.0 + level * 36.0, tower.calcSpellCritNoBonus() )
else
exitwhen true
endif
set i = i + 1
endloop
set u = null
endfunction
function overchargeA takes SpellDummy D returns nothing
local Tower tower = D.getCaster()
call overchargeDamage(tower,Event.getTarget(),tower.getLevel())
endfunction
function elec takes Buff B returns nothing
local Tower tower = B.getCaster()
local Unit targ = B.getBuffedUnit()
local Iterate I = Iterate.overUnitsInRangeOfUnit( tower, TARGET_TYPE_CREEPS, targ, 225.0 )
local real dmg = 900.0 + 36.0 * tower.getLevel()
local Unit U
loop
set U = I.next()
exitwhen U == 0
if U != targ then
call tower.doSpellDamage( U, dmg, tower.calcSpellCritNoBonus() )
call overchargeDamage(tower,U,tower.getLevel())
endif
endloop
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
set TUNDER = Cast.create( '@@0@@', "forkedlightning", 2.0 )
call TUNDER.setSourceHeight( 300.00 )
call TUNDER.setDamageEvent( overchargeA )
set ELEC = BuffType.create( 5.0, 0.00, false )
call ELEC.setBuffIcon( '@@2@@' )
call ELEC.addPeriodicEvent( elec, 1.0 )
set MB = MultiboardValues.create( 3 )
call MB.setKey( 0, "Spell Damage Bonus" )
call MB.setKey( 1, "Spell Crit Damage Bonus" )
call MB.setKey( 2, "Spell Crit Chance Bonus" )
endfunction
On Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local integer i = tower.getOwner().getTeam().getLevel()
local integer i2 = i
if i > tower.userInt then
set i = i - tower.userInt
set tower.userInt3 = tower.userInt3 + i
call tower.modifyProperty( MOD_SPELL_DAMAGE_DEALT, i / 60.00 )
call tower.modifyProperty( MOD_SPELL_CRIT_DAMAGE, i / 60.00 )
call tower.modifyProperty( MOD_SPELL_CRIT_CHANCE, i / 800.00 )
set tower.userInt = i2
endif
endfunction
On Damage
ONDAMAGE_chance: 0.2
ONDAMAGE_chanceLevelAdd: 0.008
function onDamage takes Tower tower returns nothing
call ELEC.apply( tower, Event.getTarget(), tower.getLevel() )
endfunction
On Damage
ONDAMAGE_chance: 1.00
ONDAMAGE_chanceLevelAdd: 0.00
function onDamage takes Tower tower returns nothing
call overchargeDamage(tower,Event.getTarget(),tower.getLevel())
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt = tower.getOwner().getTeam().getLevel()
set tower.userInt2 = 0
set tower.userInt3 = 0
endfunction
On Tower Details
goldcost: 0
function onTowerDetails takes Tower tower returns MultiboardValues
call MB.setValue( 0, formatPercent( tower.userInt3 * 1.66/100,2 ) )
call MB.setValue( 1, formatPercent( tower.userInt3 * 1.66/100,2 ) )
call MB.setValue( 2, formatPercent( tower.userInt3 * 0.125/100,2 ) )
return MB
endfunction
Periodic
PERIODIC_period: 0.33
function periodic takes Tower tower returns nothing
local Iterate I
local Unit U
if tower.userInt2 == 1 then
set I = Iterate.overUnitsInRangeOfCaster( tower, TARGET_TYPE_CREEPS, 1500.00 )
set U = I.next()
if U != 0 then
call TUNDER.targetCastFromCaster( tower, U, 1300.00 + tower.getLevel() * 52.0, tower.calcSpellCritNoBonus() )
call I.destroy()
endif
endif
endfunction
|
Description: