Ball Lightning Accelerator v1
2200
|
ID: 123
Family ID:
Author: cedi
Rarity: unique
Element: iron
Attack Type: Magic
Attack Range: 1000
Attack CD: 0.8
Damage: 1-1
Abil. Factor: 0.00
Status: Approved
|
Specials:
+50 mana/lvl +1 mana regen/lvl
Energy Absorb
Decreases the attackspeed of all towers in 1000 range by 10%. Increases the mana regeneration of the Accelerator by 2 mana per second for each weakened tower. Both effects last 8 seconds Level Bonus: -0.1% attackspeed weakening +0.04 mana per second
Energetic Weapon
The Accelerator attacks with energetic missiles, which deal 500 plus 3 times the current mana as spell damage to all units in 250 range of the missile. Additionally, the missile slows all units by 1% for each 4000 damage it deals to a creep for 1.5 seconds. Cannot slow by more than 20%. Each attack consumes 20% of this tower's current mana. Level Bonus: +25 spell damage +5% mana converted to damage +0.04 seconds slow duration |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 40.00
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_IMMEDIATE
AUTOCAST_manacost: 0
AUTOCAST_range: 1000.0
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: false
AUTOCAST_targetType: 0
target_art:
AUTOCAST_autoRange: 1000.0
private function onAutocast takes Tower tower returns nothing
local integer numTowers = 0
local integer lvl = tower.getLevel()
local Unit u
local Iterate it = Iterate.overUnitsInRangeOfCaster(tower, TARGET_TOWERS, 1000.0)
loop
set u = it.next()
exitwhen u == 0
if u != tower then
set numTowers = numTowers + 1
call tomy_EnergyAbsorptionTargetBT.apply(tower, u, lvl)
endif
endloop
if numTowers > 0 then
call tomy_EnergyAbsorptionCasterBT.apply(tower, tower, (50 + lvl) * numTowers)
endif
endfunction
Header globals
//@export
ProjectileType tomy_EnergeticWeaponPT
//@export
BuffType tomy_EnergyAbsorptionTargetBT
//@export
BuffType tomy_EnergyAbsorptionCasterBT
//@export
BuffType tomy_SlowBT
endglobals
function EnergeticWeaponCollision takes Projectile p, Unit target returns nothing
local Unit caster = p.getCaster()
local real slow = ( p.userReal / 4000.00)
local unit u = target.getUnit()
local lightning lightningEffect = AddLightningEx("FORK", false, p.x + 50.0 * Cos(p.direction* bj_DEGTORAD), p.y + 50.0 * Sin(p.direction* bj_DEGTORAD), p.z + 60.0, GetUnitX(u), GetUnitY(u), GetUnitFlyHeight(u))
if (slow > 20) then
set slow = 20
endif
call p.doSpellDamage(target, p.userReal)
call tomy_SlowBT.applyCustomTimed( caster, target, R2I(slow * 10), 1.50 + 0.04 * caster.getLevel() )
call SFXAtUnit("Abilities\\Spells\\Orc\\Purge\\PurgeBuffTarget.mdl", u)
call TriggerSleepAction(0.20)
call DestroyLightning(lightningEffect)
set u = null
set lightningEffect = null
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()
// ======= Energy Absorption Target =======
call m.addModification( MOD_ATTACKSPEED, -0.1, 0.001 )
set tomy_EnergyAbsorptionTargetBT = BuffType.create(8.00, 0.00, false)
call tomy_EnergyAbsorptionTargetBT.setBuffModifier( m )
call tomy_EnergyAbsorptionTargetBT.setBuffIcon( '@@0@@' )
// ======= Energy Absorption Caster =======
set m = Modifier.create()
call m.addModification(MOD_MANA_REGEN, 0.00, 0.04)
set tomy_EnergyAbsorptionCasterBT = BuffType.create(8.00, 0.00, true)
call tomy_EnergyAbsorptionCasterBT.setBuffModifier( m )
call tomy_EnergyAbsorptionCasterBT.setBuffIcon( '@@2@@' )
// ======= Energetic Weapon =======
set tomy_EnergeticWeaponPT = ProjectileType.createRanged("Abilities\\Weapons\\FarseerMissile\\FarseerMissile.mdl", 1000.0, 650.0)
call tomy_EnergeticWeaponPT.enableCollision( EnergeticWeaponCollision, 250.00, TARGET_CREEPS, false )
// ======= Slow =======
set m = Modifier.create()
call m.addModification( MOD_MOVESPEED, -0.00, -0.001 )
set tomy_SlowBT = BuffType.create( 1.5, 0.04, false )
call tomy_SlowBT.setBuffIcon( '@@1@@' )
call tomy_SlowBT.setBuffModifier( m )
endfunction
On Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local unit u = tower.getUnit()
local unit t = Event.getTarget().getUnit()
local Projectile p
local real angle = Atan2(GetUnitY( t ) - GetUnitY( u ), GetUnitX( t ) - GetUnitX( u ))
local real mana = GetUnitState(u, UNIT_STATE_MANA)
set p = Projectile.create(tomy_EnergeticWeaponPT, tower, 1.00, tower.calcSpellCritNoBonus(), GetUnitX( u ) + Cos( angle ) * 110.00, GetUnitY( u ) + Sin( angle ) * 110.00, 40.00, angle * bj_RADTODEG )
set p.userReal = 500.00 * (1.00 + tower.getLevel() * 0.05) + mana * (3.00 + tower.getLevel() * 0.05 )
set p.z = 10.0
call p.setScale( 2.00 )
call SetUnitState( u, UNIT_STATE_MANA, mana * 0.80 )
set u = null
set t = null
endfunction
|
Description:
Latest Upload Comment: