Harby v1
3100
|
ID: 267
Family ID:
Author: Glowackos
Rarity: unique
Element: darkness
Attack Type: Decay
Attack Range: 800
Attack CD: 1.4
Damage: 2785-2785
Mana: 450
Mana regen: 7.5
Status: Approved
|
Specials:
x1.45 spell crit damage (+x0.05/lvl) -55% debuff duration (-1%/lvl) +10 mana/lvl
Arcane Orb
Infuses Harby's attacks with arcane energy at the cost of 100 mana per attack. Deals [6 x Current Mana] as bonus spelldamage. This ability also passively grants 1 bonus maximum mana for each creep Harby kills. Level Bonus: +[0.1 x Current Mana] as bonus spelldamage
Grotesque Awakening
Whenever hit by a spell, the statue comes to life for 5 seconds, enabling it to attack. This ability is affected by buff duration.
Arcane Aura - Aura
Towers in 350 range have a 10% chance to replenish 10% of their total manapool when casting an ability that costs mana. Cannot retrigger on the same tower within 5 seconds. This effect will also proc off Harby's Arcane Orb attacks, without the retrigger restriction. Level Bonus: +0.4% chance +0.2% maximum mana replenished |
Download
Toggle Triggers Header globals
BuffType glow_arcaneAura
BuffType glow_awaken
ProjectileType glow_arcaneOrb
endglobals
function awakenOnCreate takes Buff b returns nothing
local unit u = b.getBuffedUnit().getUnit()
call SFXAtUnit("Abilities\\Spells\\Human\\Polymorph\\PolyMorphDoneGround.mdl", u)
call SFXAtUnit("Objects\\Spawnmodels\\Undead\\UndeadBlood\\ObsidianStatueCrumble2.mdl", u)
call AddUnitAnimationProperties(u, "stand alternate", true)
//Set the unit's height cause it looks dodgy after morphing
call SetUnitFlyHeight(u, 100, 2000)
call UnitRemoveAbility(u, '@@0@@')
set u = null
endfunction
function awakenOnCleanup takes Buff b returns nothing
local unit u = b.getBuffedUnit().getUnit()
call SFXAtUnit("Abilities\\Spells\\Human\\Polymorph\\PolyMorphDoneGround.mdl", u)
call AddUnitAnimationProperties(u, "stand alternate", false)
call SetUnitFlyHeight(u, 40, 2000)
call UnitAddAbility(u, '@@0@@')
set u = null
endfunction
function arcane_manaReplenish takes Tower t returns nothing
call Effect.createColored("Abilities\\Spells\\Undead\\ReplenishHealth\\ReplenishHealthCasterOverhead.mdl", t.getX(), t.getY(), t.getZ()+80, 0.0, 1.0, 100, 100, 255, 255).destroy()
call t.addManaPerc(0.1 + 0.002 * t.getLevel())
endfunction
function arcane_onCreate takes Buff b returns nothing
set b.userInt = 0 //Stores when the buff last procced.
endfunction
function arcane_onSpellCast takes Buff b returns nothing
local Tower t = b.getBuffedUnit()
//125 = 5 * 25 ticks = 5 seconds.
if (b.userInt + 125 < Game.getGameTime()) and Event.getAutocastType().getManacost() > 0.0 then
if t.calcChance(0.1 + 0.004 * t.getLevel()) then
call arcane_manaReplenish(t)
set b.userInt = Game.getGameTime()
endif
endif
endfunction
function arcane_orb_hit takes Projectile p, Unit target returns nothing
call p.doSpellDamage(target, p.userReal)
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 glow_arcaneAura = BuffType.createAuraEffectType(true)
call glow_arcaneAura.setBuffIcon('@@1@@')
call glow_arcaneAura.addEventOnCreate(EventHandler.arcane_onCreate)
call glow_arcaneAura.addEventOnSpellCast(EventHandler.arcane_onSpellCast)
set glow_awaken = BuffType.create(5, 0, true)
call glow_awaken.addEventOnCreate(EventHandler.awakenOnCreate)
call glow_awaken.addEventOnCleanup(EventHandler.awakenOnCleanup)
call glow_awaken.setBuffIcon('@@2@@')
set glow_arcaneOrb = ProjectileType.create("Abilities\\Weapons\\AvengerMissile\\AvengerMissile.mdl", 10, 1500)
call glow_arcaneOrb.enableHoming(ProjectileTargetEvent.arcane_orb_hit, 0.0)
endfunction
On Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
//Since the tower WILL have the mana most of the time (I assume..), may as well compute these values immediately.
local real dmg = (6 + 0.1 * tower.getLevel()) * GetUnitState(tower.getUnit(), UNIT_STATE_MANA)
local Creep creep = Event.getTarget()
local Projectile p
if tower.getBuffOfType(glow_awaken) != 0 then
// Throw out the attack projectile (tower's real attack does all the work but we hide its projectile model)
set p = Projectile.createFromUnitToUnit(glow_arcaneOrb,tower,1.0,tower.calcSpellCritNoBonus(),tower,creep,true,false,false)
if tower.subtractMana(100, false) == 100 then
if tower.calcChance(0.1 + 0.004 * tower.getLevel()) then
call arcane_manaReplenish(tower)
endif
call tower.getOwner().getTeam().displayFloatingTextX("+" + I2S(R2I(dmg)), tower, 255, 0, 255, 255, 0.05, 2, 3)
set p.userReal = dmg
// Swap out projectile model for arcane-orb-empowered attacks.
call p.setModel("Abilities\\Weapons\\IllidanMissile\\IllidanMissile.mdl")
else
set p.userReal = 0
endif
endif
endfunction
On Kill function onKill takes Tower tower returns nothing
call tower.modifyProperty(MOD_MANA, 1)
endfunction
On Spell Target function onSpellTarget takes Tower tower returns nothing
call glow_awaken.apply(tower, tower, 0)
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
call AddUnitAnimationProperties(tower.getUnit(), "stand alternate", false)
call tower.modifyProperty(MOD_MANA, tower.getKills())
endfunction
Tower Aura
AURA_powerAdd: 1
AURA_auraEffect: glow_arcaneAura
AURA_levelAdd: 1
AURA_power: 0
AURA_targetType: TARGET_TYPE_TOWERS
AURA_targetSelf: true
AURA_level: 0
AURA_auraRange: 350
|
Morphling v1
3100
|
ID: 319
Family ID:
Author: DaveMatthews
Rarity: unique
Element: nature
Attack Type: Essence
Attack Range: 900
Attack CD: 1.5
Damage: 3910-3910
Status: Approved
|
Description: His adaptive nature makes him very versatile.
Morph: Might
Activates "Morph: Might". As long as this buff is on this tower gains 2% base damage and loses 2% attack speed on every attack, up to a maximum of 50 times. Removes "Morph: Swiftness" and resets its bonus when activated. AC_TYPE_NOAC_IMMEDIATE 0, 0 range, 1s cooldown
Morph: Swiftness
Activates "Morph: Swiftness". As long as this buff is on this tower gains 2% attack speed and loses 2% base damage on every attack, up to a maximum of 50 times. Removes "Morph: Might" and resets its bonus when activated. AC_TYPE_NOAC_IMMEDIATE 0, 0 range, 1s cooldown
Adapt
Stops the effect of morphs, leaving the current buff on the tower. Using the spell again removes Adapt. AC_TYPE_NOAC_IMMEDIATE 0, 0 range, 1s cooldown
Evolve
Every time it casts Morphling Strike, this tower permanently gains 0.2% base damage and 0.1% attack speed if "Morph: Might" has at least 25 stacks, or 0.2% attack speed and 0.1% base damage if "Morph: Swiftness" has at least 25 stacks. Can evolve a maximum of 500 times.
Morphling Strike
Every time this tower damages a unit, it has a 20% chance to launch 3 projectiles to random creeps in 900 range, dealing 2000 spell damage to them. On impact, if "Morph: Might" has at least 25 stacks, the projectiles deal additional spell damage equal to 25% of the tower's damage per second for 5 seconds; if "Morph: Swiftness" has at least 25 stacks, they slow the targets by 20% and increase the damage they receive from nature by 15% for 8 seconds. Level Bonus: +60 damage +0.8% damage per second +0.4% slow +0.2% damage from nature +0.6% chance |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 1
AUTOCAST_numBuffsBeforeIdle: 1
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_NOAC_IMMEDIATE
AUTOCAST_manacost: 0
AUTOCAST_range: 0
AUTOCAST_buffType: dave_morph_damage
AUTOCAST_targetSelf: true
AUTOCAST_targetType: TARGET_TYPE_TOWERS
target_art:
AUTOCAST_autoRange: 0
private function onAutocast takes Tower tower returns nothing
local Buff b = tower.getBuffOfType(dave_morph_damage)
local integer bufflevel = b.getLevel()
if tower.getBuffOfType(dave_morph_damage)==0 then
if tower.getBuffOfType(dave_morph_speed)!=0 then
call tower.getBuffOfType(dave_morph_speed).removeBuff()
endif
call dave_morph_damage.apply(tower, tower, bufflevel)
endif
endfunction
Autocast
caster_art:
AUTOCAST_cooldown: 1
AUTOCAST_numBuffsBeforeIdle: 1
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_NOAC_IMMEDIATE
AUTOCAST_manacost: 0
AUTOCAST_range: 0
AUTOCAST_buffType: dave_morph_speed
AUTOCAST_targetSelf: true
AUTOCAST_targetType: TARGET_TYPE_TOWERS
target_art:
AUTOCAST_autoRange: 0
private function onAutocast takes Tower tower returns nothing
local Buff b = tower.getBuffOfType(dave_morph_speed)
local integer bufflevel = b.getLevel()
if tower.getBuffOfType(dave_morph_speed)==0 then
if tower.getBuffOfType(dave_morph_damage)!=0 then
call tower.getBuffOfType(dave_morph_damage).removeBuff()
endif
call dave_morph_speed.apply(tower, tower, bufflevel)
endif
endfunction
Autocast
caster_art:
AUTOCAST_cooldown: 1
AUTOCAST_numBuffsBeforeIdle: 1
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_NOAC_IMMEDIATE
AUTOCAST_manacost: 0
AUTOCAST_range: 0
AUTOCAST_buffType: dave_morph_adapt
AUTOCAST_targetSelf: true
AUTOCAST_targetType: TARGET_TYPE_TOWERS
target_art:
AUTOCAST_autoRange: 0
private function onAutocast takes Tower tower returns nothing
local Buff b = tower.getBuffOfType(dave_morph_adapt)
local integer bufflevel = b.getLevel()
if tower.getBuffOfType(dave_morph_adapt)==0 then
call dave_morph_adapt.apply(tower, tower, bufflevel)
elseif tower.getBuffOfType(dave_morph_adapt)!=0 then
call tower.getBuffOfType(dave_morph_adapt).removeBuff()
endif
endfunction
Header globals
BuffType dave_morph_damage
BuffType dave_morph_speed
BuffType dave_morph_slow
BuffType dave_morph_adapt
BuffType dave_morph_dot
ProjectileType dave_morph_strike_damage
ProjectileType dave_morph_strike_speed
MultiboardValues dave_absorb_MultiboardValue
endglobals
function morphSpeedHit takes Projectile p, Unit creep returns nothing
local Tower tower = p.getCaster()
local integer level= tower.getLevel()
call tower.doSpellDamage(creep,2000+(60*level), tower.calcSpellCritNoBonus())
call dave_morph_slow.apply(tower, creep, level)
endfunction
function morphDamageHit takes Projectile p, Unit creep returns nothing
local Tower tower = p.getCaster()
local integer level= tower.getLevel()
call tower.doSpellDamage(creep,2000+(60*level), tower.calcSpellCritNoBonus())
call dave_morph_dot.apply(tower, creep, level)
endfunction
function dot takes Buff b returns nothing
local Tower tower = b.getCaster()
local integer level= tower.getLevel()
call tower.doSpellDamage(b.getBuffedUnit(), tower.getCurrentAttackDamageWithBonus()*(0.25+0.008*level),tower.calcSpellCritNoBonus())
endfunction
private function init takes nothing returns nothing
local Modifier m = Modifier.create()
local Modifier n = Modifier.create()
local Modifier o = Modifier.create()
set dave_morph_damage = BuffType.create(-1,0,true)
call dave_morph_damage.setBuffModifier(m)
call m.addModification(MOD_DAMAGE_BASE_PERC,0.0,0.02)
call m.addModification(MOD_ATTACKSPEED,0.0,-0.02)
call dave_morph_damage.setBuffIcon( '@@1@@' )
set dave_morph_speed = BuffType.create(-1,0,true)
call dave_morph_speed.setBuffModifier(n)
call n.addModification(MOD_DAMAGE_BASE_PERC,0.0,-0.02)
call n.addModification(MOD_ATTACKSPEED,0.0,0.02)
call dave_morph_speed.setBuffIcon( '@@0@@' )
set dave_morph_adapt = BuffType.create(-1,0,true)
call dave_morph_adapt.setBuffIcon( '@@2@@' )
set dave_morph_dot = BuffType.create(5,0,false)
call dave_morph_dot.setBuffIcon( '@@4@@' )
call dave_morph_dot.addPeriodicEvent(EventHandler.dot,1)
set dave_morph_slow = BuffType.create(8,0.1,false)
call dave_morph_slow.setBuffModifier(o)
call o.addModification(MOD_MOVESPEED,-0.2,-0.004)
call o.addModification(MOD_DMG_FROM_NATURE,0.15,0.002)
call dave_morph_slow.setBuffIcon( '@@3@@' )
set dave_morph_strike_damage = ProjectileType.create("Abilities\\Weapons\\SpiritOfVengeanceMissile\\SpiritOfVengeanceMissile.mdl",4,800)
call dave_morph_strike_damage.enableHoming(ProjectileTargetEvent.morphDamageHit,0)
set dave_morph_strike_speed = ProjectileType.create("Abilities\\Weapons\\ChimaeraAcidMissile\\ChimaeraAcidMissile.mdl",4,800)
call dave_morph_strike_speed.enableHoming(ProjectileTargetEvent.morphSpeedHit,0)
set dave_absorb_MultiboardValue = MultiboardValues.create(2)
call dave_absorb_MultiboardValue.setKey(0,"Evolve")
call dave_absorb_MultiboardValue.setKey(1,"Morph level")
endfunction
On Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local Buff bd = tower.getBuffOfType(dave_morph_damage)
local Buff bs = tower.getBuffOfType(dave_morph_speed)
if tower.getBuffOfType(dave_morph_adapt)==0 then
if bd!=0 and bd.getLevel()<50 then
call dave_morph_damage.apply(tower, tower, bd.getLevel()+1)
elseif bs!=0 and bs.getLevel()<50 then
call dave_morph_speed.apply(tower, tower, bs.getLevel()+1)
endif
endif
endfunction
On Damage
ONDAMAGE_chance: 0.2
ONDAMAGE_chanceLevelAdd: 0.006
function onDamage takes Tower tower returns nothing
local integer level = tower.getLevel()
local Iterate i
local Projectile p
local integer count = 0
local Unit next
local Buff bd = tower.getBuffOfType(dave_morph_damage)
local Buff bs = tower.getBuffOfType(dave_morph_speed)
local ProjectileType pt = 0
local real scale = 1.0
if bd != 0 and bd.getLevel()>=25 then
set pt = dave_morph_strike_damage
set scale = 1.6
if tower.userInt < 500 then
call tower.modifyProperty(MOD_DAMAGE_BASE_PERC, 0.002)
call tower.modifyProperty(MOD_ATTACKSPEED, 0.001)
set tower.userInt = tower.userInt + 1
endif
elseif bs != 0 and bs.getLevel()>=25 then
set pt = dave_morph_strike_speed
if tower.userInt < 500 then
call tower.modifyProperty(MOD_ATTACKSPEED, 0.002)
call tower.modifyProperty(MOD_DAMAGE_BASE_PERC, 0.001)
set tower.userInt = tower.userInt + 1
endif
endif
if pt != 0 then
set i = Iterate.overUnitsInRangeOfCaster(tower,TARGET_CREEPS,900)
loop
set next=i.next()
set count=count+1
exitwhen next==0 or count==4
set p = Projectile.createFromUnitToUnit(pt,tower,1,1, tower, next, true, false, false)
call p.setScale(scale)
endloop
if next != 0 then
call i.destroy()
endif
endif
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt = 0
endfunction
On Tower Details
goldcost: 0
function onTowerDetails takes Tower tower returns MultiboardValues
local Buff d = tower.getBuffOfType(dave_morph_damage)
local integer bufflevelD = 0
local Buff s = tower.getBuffOfType(dave_morph_speed)
local integer bufflevelS = 0
if d != 0 then
set bufflevelD = d.getLevel()
call dave_absorb_MultiboardValue.setValue(1,I2S(bufflevelD))
endif
if s != 0 then
set bufflevelS = s.getLevel()
call dave_absorb_MultiboardValue.setValue(1,I2S(bufflevelS))
endif
call dave_absorb_MultiboardValue.setValue(0,I2S(tower.userInt))
return dave_absorb_MultiboardValue
endfunction
|
Tidewater Stream v1
3150
|
ID: 112
Family ID:
Author: cedi
Rarity: unique
Element: ice
Attack Type: Elemental
Attack Range: 820
Attack CD: 1.8
Damage: 3388-3388
Status: Approved
|
Description: Some people think the purling noise of a river is calming.
Spring Tide
Whenever this tower attacks it has a 15% chance to launch a wave. The wave travels 1200 units and has a 200 AoE. It deals 2200 spell damage to each creep it hits. Every 0.4 seconds the wave has a 35% chance to drag a stone with it. The stone travels 500 units, deals 2200 spell damage on collision and stuns for 0.65 seconds. Level Bonus: +88 spell damage +0.6% chance to launch a wave
Splash
Whenever this tower deals damage through attacks it has a 20% chance to deal 4000 spell damage in 175 AoE around the attacked unit. Also increases the spell damage the hit units take by 12.5% for 6 seconds. Level Bonus: +160 spell damage +0.5% more spell damage taken
Calming Noises - Aura
Increases the spell crit chance of towers in 250 range by 10%. Level Bonus: +0.4% spell crit chance |
Download
Toggle Triggers Header globals
BuffType cedi_brookcalm
BuffType cedi_brooksplash
ProjectileType water
ProjectileType stone
endglobals
function hitwater takes Projectile P, Unit U returns nothing
call DestroyEffect( AddSpecialEffectTarget( "Abilities\\Spells\\Other\\CrushingWave\\CrushingWaveDamage.mdl", U.getUnit(), "chest" ) )
call P.getCaster().doSpellDamage( U, 2200.0 + P.getCaster().getLevel() * 88.0, P.getCaster().calcSpellCritNoBonus() )
endfunction
function periodicwater takes Projectile P returns nothing
local Tower C = P.getCaster()
local real r = P.direction + GetRandomReal( -30, 30 )
if C.calcChance( 0.35 ) then
set P = Projectile.create( stone, C, 1.0, C.calcSpellCritNoBonus(), P.x + GetRandomReal( -30.0, 30.0 ), P.y + GetRandomReal( -30.0, 30.0 ), 0.00, r )
call DestroyEffect( AddSpecialEffect( "Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdl", P.x, P.y ) )
endif
endfunction
function hitstone takes Projectile P, Unit U returns nothing
call P.getCaster().doSpellDamage( U, 2200.0 + P.getCaster().getLevel() * 88.0, P.getCaster().calcSpellCritNoBonus() )
call cb_stun.applyOnlyTimed( P.getCaster(), U, 0.65 )
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()
call m.addModification( MOD_SPELL_CRIT_CHANCE, 0.1, 0.004 )
set cedi_brookcalm = BuffType.createAuraEffectType( true )
call cedi_brookcalm.setBuffIcon( '@@0@@' )
call cedi_brookcalm.setBuffModifier( m )
set m = Modifier.create()
call m.addModification( MOD_SPELL_DAMAGE_RECEIVED, 0.125, 0.005 )
set cedi_brooksplash = BuffType.create( 6.0, 0, false )
call cedi_brooksplash.setBuffIcon( '@@1@@' )
call cedi_brooksplash.setBuffModifier( m )
set water = ProjectileType.createRanged( "Doodads\\Terrain\\CliffDoodad\\Waterfall\\Waterfall.mdl", 1200.0, 700.0 )
call water.enableCollision( hitwater, 200.0, TARGET_TYPE_CREEPS, false )
call water.enablePeriodic( periodicwater, 0.4 )
call water.disableExplodeOnExpiration()
set stone = ProjectileType.createRanged( "Abilities\\Weapons\\RockBoltMissile\\RockBoltMissile.mdl", 500.0, 800.0 )
call stone.enableCollision( hitstone, 64.0, TARGET_TYPE_CREEPS, true )
endfunction
On Attack
ONATTACK_chance: 0.15
ONATTACK_chanceLevelAdd: 0.006
function onAttack takes Tower tower returns nothing
local unit t = Event.getTarget().getUnit()
local real r = bj_RADTODEG * Atan2(GetUnitY( t ) - GetUnitY(tower.getUnit()), GetUnitX( t ) - GetUnitX(tower.getUnit()))
local Projectile P = Projectile.createFromUnit( water, tower, tower, r, 1.0, tower.calcSpellCritNoBonus() )
call P.setScale( 0.8 )
set t = null
endfunction
On Damage
ONDAMAGE_chance: 0.2
ONDAMAGE_chanceLevelAdd: 0.004
function onDamage takes Tower tower returns nothing
local Iterate I = Iterate.overUnitsInRangeOfUnit( tower, TARGET_TYPE_CREEPS, Event.getTarget(), 175.0 )
local Unit U = Event.getTarget()
local unit u = U.getUnit()
local Effect E = Effect.createScaled( "Objects\\Spawnmodels\\Naga\\NagaDeath\\NagaDeath.mdl", GetUnitX( u ), GetUnitY( u ), GetUnitFlyHeight( u ), 0.00, 0.6 )
local integer lvl = tower.getLevel()
call E.setLifetime( 3.0 )
call tower.doSpellDamageAoEUnit( U, 175.0, 4000.0 + lvl * 160.0, tower.calcSpellCritNoBonus(), 0.0 )
loop
set U = I.next()
exitwhen U == 0
call cedi_brooksplash.apply( tower, U, lvl )
endloop
set u = null
endfunction
Tower Aura
AURA_auraEffect: cedi_brookcalm
AURA_power: 1
AURA_level: 1
AURA_auraRange: 250
AURA_targetType: TARGET_TYPE_TOWERS
AURA_levelAdd: 1
AURA_powerAdd: 1
AURA_targetSelf: true
|
Ancient Solar Emitter v1
3200
|
ID: 72
Family ID:
Author: geX
Rarity: rare
Element: astral
Attack Type: Elemental
Attack Range: 1100
Attack CD: 1.4
Damage: 2153-2153
Status: Approved
|
Description: Fills the air with pure sunlight weakening all enemies in its vicinity.
Specials:
Splash attack: 50 AoE: 100% damage 350 AoE: 40% damage
Sunshine - Aura
Reduces the armor of enemies in 1100 range by 15 and increases the vulnerability to damage from Astral, Fire, Iron, and Nature towers by 15%. Level Bonus: +0.5 armor reduction +0.5% vulnerability |
Download
Toggle Triggers Header globals
//@import
BuffType gexSunAura
endglobals
private function init takes nothing returns nothing
endfunction
Tower Aura
AURA_auraEffect: gexSunAura
AURA_power: 150
AURA_level: 150
AURA_auraRange: 1100
AURA_targetType: TARGET_TYPE_CREEPS
AURA_levelAdd: 5
AURA_powerAdd: 5
AURA_targetSelf: false
|
Spell Harvester v1
3200
|
ID: 116
Family ID:
Author: cedi
Rarity: rare
Element: storm
Attack Type: Energy
Attack Range: 950
Attack CD: 2
Damage: 2161-2161
Status: Approved
|
Description: A field which is able to gather energy from spells.
Magical Barrage
Whenever this tower attacks it has a 20% chance to launch a magical missile. Whenever a tower in 650 range casts a spell, the amount of missiles on attack is increased by 1 for a duration equal to the casting tower's ability's cooldown. The Spell Harvester can shoot up to 20 missiles per attack. Each missile deals 4000 spell damage. Each additional missile has 7.5% higher crit chance and 15% higher crit damage than the previous one. Level Bonus: +0.8% chance +160 spell damage +0.3% spell crit chance +0.6% spell crit damage +2 max missiles every 5 levels |
Download
Toggle Triggers Header globals
//@import
ProjectileType cedi_spellCPT
//@import
BuffType cedi_spellGathering
//@import
BuffType cedi_spellInc
//@import
MultiboardValues cedi_spellCollectorMBValues
endglobals
function Launch takes nothing returns nothing
local timer t = GetExpiredTimer()
local Tower tower = GetTimerData( t )
local real chance = 0.075 + 0.003 * tower.getLevel()
local real crit = 0.15 + 0.006 * tower.getLevel()
local Projectile P
local Unit T = tower.userInt3
if T == 0 then
call ReleaseTimer( t )
set t = null
return
endif
if tower.userInt2 >= tower.userReal then
call ReleaseTimer( t )
set t = null
return
endif
set P = Projectile.createBezierInterpolationFromUnitToUnit( cedi_spellCPT, tower, 1.0, tower.calcSpellCritNoBonus(), tower, T, GetRandomReal( 0.25, 0.45 ), GetRandomReal( -0.3, 0.3 ), 0.0, true )
set P.userReal = chance * tower.userInt2
set P.userReal2 = crit * tower.userInt2
set P.z = 75.0
set tower.userInt2 = tower.userInt2 + 1
set t = 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
endfunction
On Attack
ONATTACK_chance: 0.2
ONATTACK_chanceLevelAdd: 0.008
function onAttack takes Tower tower returns nothing
//local real chance = 0.075 + 0.003 * tower.getLevel()
//local real crit = 0.15 + 0.006 * tower.getLevel()
//local integer i = 0
local Buff B = tower.getBuffOfType( cedi_spellInc )
local integer max = 1
//local Projectile P
local Unit T = Event.getTarget()
local real r
local timer t = NewTimer()
if B != 0 then
set max = IMinBJ(B.getLevel() + 1,20+tower.getLevel()/5*2)
endif
set r = tower.getCurrentAttackspeed() / max
if r > 0.2 then
set r = 0.2
endif
set tower.userReal = max
set tower.userInt2 = 0 //i
set tower.userInt3 = T
call SetTimerData( t, tower )
call TimerStart( t, r, true, function Launch )
//loop
// exitwhen i >= max
// exitwhen T == 0
// set P = Projectile.createFromUnitToUnit( cedi_spellCPT, tower, 1.0, tower.calcSpellCritNoBonus(), tower, T, true, false, false )
// set P.userReal = chance * i
// set P.userReal2 = crit * i
// set P.z = 50.0
// set i = i + 1
// call TriggerSleepAction( 0.1 )
//endloop
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt = 2 //second member
endfunction
On Tower Details
goldcost: 0
function onTowerDetails takes Tower tower returns MultiboardValues
local Buff B = tower.getBuffOfType(cedi_spellInc)
local integer lvl = 0
if B != 0 then
set lvl = IMinBJ(B.getLevel() + 1,20+tower.getLevel()/5*2)
endif
call cedi_spellCollectorMBValues.setValue(0, I2S(lvl))
return cedi_spellCollectorMBValues
endfunction
Tower Aura
AURA_auraEffect: cedi_spellGathering
AURA_power: 0
AURA_level: 0
AURA_auraRange: 650.0
AURA_targetType: TARGET_TYPE_TOWERS
AURA_levelAdd: 2
AURA_powerAdd: 2
AURA_targetSelf: true
|
Ancient Lunar Emitter v1
3200
|
ID: 297
Family ID:
Author: geX
Rarity: rare
Element: darkness
Attack Type: Elemental
Attack Range: 1100
Attack CD: 1.4
Damage: 2153-2153
Status: Approved
|
Description: Shines moonlight on the enemies in its vicinity weakening their resistances.
Specials:
Splash attack: 50 AoE: 100% damage 350 AoE: 40% damage
Moonlight - Aura
Reduces the spell resistance of enemies in 1100 range by 22.5% and increases the vulnerability to damage from Astral, Darkness, Ice, and Storm towers by 15%. Level Bonus: +0.75% spell resistance reduction +0.5% vulnerability |
Download
Toggle Triggers Header globals
//@import
BuffType gexMoonAura
endglobals
private function init takes nothing returns nothing
endfunction
Tower Aura
AURA_auraEffect: gexMoonAura
AURA_power: 150
AURA_level: 150
AURA_auraRange: 1100
AURA_targetType: TARGET_TYPE_CREEPS
AURA_levelAdd: 5
AURA_powerAdd: 5
AURA_targetSelf: false
|
Mana-Overwhelmed Drake v1
3200
|
ID: 371
Family ID:
Author: SirCoqaLot.
Rarity: rare
Element: astral
Attack Type: Elemental
Attack Range: 950
Attack CD: 3
Damage: 2855-2955
Mana: 1600
Mana regen: 80
Status: Approved
|
Description: Playful Faerie-Dragon that uses mana to its advantage.
Specials:
+6.4 mana regen/lvl
Unstable Energies
This tower has a 28% chance on damage to release a powerful energy blast, dealing [current mana x 12.5] Elemental damage to the target, but consuming 75% of its own current mana. Level Bonus: +0.48% chance -1% current mana consumed
Mana Distortion Field - Aura
Towers in 200 range burn 5 mana on attack, costing the drake 35 mana. The mana burned and spent is attackspeed and range adjusted and the tower deals 125 spelldamage per mana point burned. Level Bonus: +10 spelldamage per mana point burned |
Download
Toggle Triggers Header globals
//@import
BuffType sir_drake_aura
endglobals
//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
endfunction
On Damage
ONDAMAGE_chance: 0.28
ONDAMAGE_chanceLevelAdd: 0.0048
function onDamage takes Tower tower returns nothing
local unit towerunit = tower.getUnit()
call tower.doAttackDamage(Event.getTarget(),12.5 * GetUnitState(towerunit,UNIT_STATE_MANA),tower.calcAttackMulticrit(0,0,0)) //deal the damage
call tower.subtractManaPerc(0.75-0.01*tower.getLevel(),true)//drain the mana
call SFXAtUnit("Abilities\\Spells\\Items\\AIma\\AImaTarget.mdl",Event.getTarget().getUnit())// add some fancy effect
set towerunit = null
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userReal = 35
endfunction
Tower Aura
AURA_powerAdd: 10
AURA_auraEffect: sir_drake_aura
AURA_levelAdd: 0
AURA_power: 125
AURA_targetType: TARGET_TYPE_TOWERS
AURA_targetSelf: false
AURA_level: 500
AURA_auraRange: 200
|
Description: