Eredar Warlock v1
2800
|
ID: 132
Family ID:
Author: SirCoqaLot.
Rarity: unique
Element: darkness
Attack Type: Essence
Attack Range: 890
Attack CD: 3
Damage: 1753-1752
Status: Approved
|
Siphon Essence
Casts a buff on a nearby tower, if that tower tries to attack in the next 5 seconds it will be stunned for 2.5 seconds and this tower will deal [stunned tower's DPS x 3] as essence damage to the target of the buffed tower. Level Bonus: -0.02 seconds stun duration AC_TYPE_ALWAYS_BUFF 0, 400 range, 2.5s cooldown
Shadowbolt Wave
Every autocast of this tower has a 20% chance to release 10 shadowbolts. Every shadowbolt flies towards a random target in 1000 range and deals 1050 spell damage. This Spell has a 40% chance to trigger if the last autocast released a shadowboltwave. Level Bonus: +21 spell damage |
Download
Toggle Triggers Autocast
AUTOCAST_cooldown: 2.5
AUTOCAST_autoRange: 400
AUTOCAST_manacost: 0
AUTOCAST_range: 400
AUTOCAST_targetType: TARGET_TYPE_TOWERS
AUTOCAST_numBuffsBeforeIdle: 1
caster_art:
target_art:
AUTOCAST_autocastType: AC_TYPE_ALWAYS_BUFF
AUTOCAST_buffType: 0
AUTOCAST_isExtended: true
AUTOCAST_targetSelf: false
private function onAutocast takes Tower tower returns nothing
local Tower target = Event.getTarget()
call sir_eredar_buff.apply(tower,target,1)
call rollForShadowWave(tower)
endfunction
Header globals
//@export
ProjectileType sir_eredar_attackProj
//@export
ProjectileType sir_eredar_waveProj
//@export
BuffType sir_eredar_buff
endglobals
//@export
function rollForShadowWave takes Tower t returns nothing
local Projectile p
local integer counter = 0
local integer projCount
local real angle
local real x
local real y
local real z
local Iterate it
if (t.userInt == 0 and t.calcChance(0.20)) or (t.userInt == 1 and t.calcChance(0.40)) then
set t.userInt = 1
// Check whether there's anything to shoot at before creating any projectiles.
set it = Iterate.overUnitsInRangeOfCaster(t, TARGET_CREEPS, 1000)
if it.count() == 0 then
return
endif
call it.destroy()
set projCount = t.userInt2
set angle = 0
set x = t.getX()
set y = t.getY()
set z = t.getZ()
loop
exitwhen projCount == 0
set p = Projectile.createFromUnitToPoint(sir_eredar_waveProj, t, 1, 1, t, x+300*Cos(angle), y+300*Sin(angle), z, false, false)
set angle = angle + 36 * bj_DEGTORAD
set projCount = projCount - 1
endloop
else
set t.userInt = 0
endif
endfunction
public function sir_eredar_launch takes Projectile p returns nothing
local Tower t = p.getCaster()
local Iterate it
if t != 0 then
set it = Iterate.overUnitsInRangeOfCaster(t, TARGET_CREEPS, 1000)
if it.count() != 0 then
set p.explode = false // projectile will only explode if there are no targets around.
call Projectile.createFromPointToUnit(sir_eredar_attackProj, t, 1, 1, p.x, p.y, p.z, it.nextRandom(), true, false, false)
if it.count() != 0 then
call it.destroy()
endif
endif
endif
endfunction
public function sir_eredar_hit takes Projectile p, Unit creep returns nothing
local Tower tower = p.getCaster()
call tower.doSpellDamage(creep, tower.userReal * (1+tower.getLevel()*0.02), tower.calcSpellCritNoBonus())
endfunction
public function sir_towerstun takes Buff b returns nothing
local Tower eredar = b.getCaster()
local Tower attacker = b.getBuffedUnit()
local Unit target = Event.getTarget()
local real dmg = attacker.getCurrentAttackDamageWithBonus()/attacker.getCurrentAttackspeed() * 3
call cb_stun.applyOnlyTimed(eredar,attacker,2.5-eredar.getLevel()*0.02)
call eredar.doAttackDamage(target,dmg,eredar.calcSpellCritNoBonus())
call Effect.createSimple("Abilities\\Spells\\Undead\\Impale\\ImpaleHitTarget.mdl",attacker.getX(),attacker.getY()).destroy()
call eredar.getOwner().displayFloatingTextX(I2S(R2I(dmg)), target, 255, 0, 150, 255, 0.05, 0.0, 2.0)
call Effect.createSimple("Abilities\\Spells\\Undead\\Impale\\ImpaleHitTarget.mdl",target.getX(),target.getY()).destroy()
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 sir_eredar_buff = BuffType.create(5,0,true)
call sir_eredar_buff.setBuffIcon('@@0@@')
set sir_eredar_waveProj = ProjectileType.createRanged("Abilities\\Spells\\Other\\BlackArrow\\BlackArrowMissile.mdl", 300, 600)
call sir_eredar_waveProj.setEventOnExpiration(ProjectileEvent.sir_eredar_launch)
set sir_eredar_attackProj = ProjectileType.create("Abilities\\Spells\\Other\\BlackArrow\\BlackArrowMissile.mdl", 4, 1000)
call sir_eredar_attackProj.enableHoming(ProjectileTargetEvent.sir_eredar_hit,0)
call sir_eredar_buff.addEventOnAttack(sir_towerstun,1,0)
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt = 0 // stores whether last autocast triggered shadowbolts
set tower.userInt2 = 10 // stores num shadowbolts to release
set tower.userReal = 1050 // stores base shadowbolt damage
endfunction
|
Eredar Diabolist v1
4600
|
ID: 133
Family ID:
Author: SirCoqaLot.
Rarity: unique
Element: darkness
Attack Type: Essence
Attack Range: 890
Attack CD: 3
Damage: 2880-2879
Status: Approved
|
Description: Daemonic entity that will stun allied towers and temporarily steal their damage for itself and will threaten nearby units by occasionalyl releasing shadowboltwaves. Also suppresses lifeforce killing too weak enemies instantly.
Siphon Essence
Casts a buff on a nearby tower, if that tower tries to attack in the next 5 seconds it will be stunned for 2.5 seconds and this tower will deal [stunned tower's DPS x 3] as essence damage to the target of the buffed tower. Level Bonus: -0.02 seconds stun duration AC_TYPE_ALWAYS_BUFF 0, 400 range, 1.5s cooldown
Shadowbolt Wave
Every autocast of this tower has a 20% chance to release 12 shadowbolts. Every shadowbolt flies towards a random target in 1000 range and deals 1700 spell damage. This Spell has a 40% chance to trigger if the last autocast released a shadowboltwave. Level Bonus: +34 spell damage
Slow Decay - Aura
Non Boss units in 750 range around the Eredar Diabolist with less then 5.5% of their healthpoints will be killed. Level Bonus: +0.06% healthpoints needed for instantkill |
Download
Toggle Triggers Autocast
AUTOCAST_cooldown: 1.5
AUTOCAST_autoRange: 400
AUTOCAST_manacost: 0
AUTOCAST_range: 400
AUTOCAST_targetType: TARGET_TYPE_TOWERS
AUTOCAST_numBuffsBeforeIdle: 1
caster_art:
target_art:
AUTOCAST_autocastType: AC_TYPE_ALWAYS_BUFF
AUTOCAST_buffType: 0
AUTOCAST_isExtended: true
AUTOCAST_targetSelf: false
private function onAutocast takes Tower tower returns nothing
local Tower target = Event.getTarget()
call sir_eredar_buff.apply(tower,target,1)
call rollForShadowWave(tower)
endfunction
Header globals
//@import
ProjectileType sir_eredar_attackProj
//@import
ProjectileType sir_eredar_waveProj
//@import
BuffType sir_eredar_buff
BuffType sir_eredar_aura
endglobals
//@import
function rollForShadowWave takes Tower t returns nothing
endfunction
public function sir_creepkillaura takes Buff b returns nothing
if b.getBuffedUnit().getLifePercent() <= 0.055+b.getCaster().getLevel()*0.0006 and b.getBuffedUnit().getSize() < SIZE_BOSS then
call b.getCaster().killInstantly(b.getBuffedUnit())
call SFXAtUnit("Abilities\\Spells\\Undead\\DeathCoil\\DeathCoilSpecialArt.mdl",b.getBuffedUnit().getUnit())
endif
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 sir_eredar_aura = BuffType.createAuraEffectType(false)
call sir_eredar_aura.setBuffIcon('@@0@@')
call sir_eredar_aura.addPeriodicEvent(sir_creepkillaura,1.0)
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt = 0 // stores whether last autocast triggered shadowbolts
set tower.userInt2 = 12 // stores num shadowbolts to release
set tower.userReal = 1700 // stores base shadowbolt damage
endfunction
Tower Aura
AURA_powerAdd: 0
AURA_auraEffect: sir_eredar_aura
AURA_levelAdd: 0
AURA_power: 0
AURA_targetType: TARGET_TYPE_CREEPS
AURA_targetSelf: false
AURA_level: 0
AURA_auraRange: 750
|
Description: