Grand Bomb Turret v1
2000
|
ID: 218
Family ID:
Author: DaveMatthews
Rarity: rare
Element: iron
Attack Type: Physical
Attack Range: 900
Attack CD: 2.6
Damage: 5113-5113
Status: Approved
|
Concussive Bombs
Equips the tower with concussive bombs. Each attack slows all the creeps in a 300 area around the target by 25% for 4 seconds. Level Bonus: +0.6% slow AC_TYPE_NOAC_IMMEDIATE 0, 0 range, 5s cooldown
Acid Bombs
Equips the tower with acid bombs. Each attack reduces the armor of all the creeps in a 300 area around the target by 15% for 4 seconds. Level Bonus: +0.6% armor reduction AC_TYPE_NOAC_IMMEDIATE 0, 0 range, 5s cooldown
Smoke Bombs
Equips the tower with smoke bombs. Each attack silences all the creeps in a 300 area around the target for 1.5 seconds. Level Bonus: +0.06 seconds duration AC_TYPE_NOAC_IMMEDIATE 0, 0 range, 5s cooldown |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 5
AUTOCAST_numBuffsBeforeIdle: 1
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_NOAC_IMMEDIATE
AUTOCAST_manacost: 0
AUTOCAST_range: 0
AUTOCAST_buffType: dave_concussive
AUTOCAST_targetSelf: true
AUTOCAST_targetType: TARGET_TYPE_TOWERS
target_art:
AUTOCAST_autoRange: 0
private function onAutocast takes Tower tower returns nothing
if tower.getBuffOfType(dave_concussive)==0 then
call dave_concussive.apply(tower, tower, tower.getLevel())
endif
if tower.getBuffOfType(dave_acid)!=0 then
call tower.getBuffOfType(dave_acid).removeBuff()
endif
if tower.getBuffOfType(dave_smoke)!=0 then
call tower.getBuffOfType(dave_smoke).removeBuff()
endif
endfunction
Autocast
caster_art:
AUTOCAST_cooldown: 5
AUTOCAST_numBuffsBeforeIdle: 1
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_NOAC_IMMEDIATE
AUTOCAST_manacost: 0
AUTOCAST_range: 0
AUTOCAST_buffType: dave_acid
AUTOCAST_targetSelf: true
AUTOCAST_targetType: TARGET_TYPE_TOWERS
target_art:
AUTOCAST_autoRange: 0
private function onAutocast takes Tower tower returns nothing
if tower.getBuffOfType(dave_acid)==0 then
call dave_acid.apply(tower, tower, tower.getLevel())
endif
if tower.getBuffOfType(dave_concussive)!=0 then
call tower.getBuffOfType(dave_concussive).removeBuff()
endif
if tower.getBuffOfType(dave_smoke)!=0 then
call tower.getBuffOfType(dave_smoke).removeBuff()
endif
endfunction
Autocast
caster_art:
AUTOCAST_cooldown: 5
AUTOCAST_numBuffsBeforeIdle: 1
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_NOAC_IMMEDIATE
AUTOCAST_manacost: 0
AUTOCAST_range: 0
AUTOCAST_buffType: dave_smoke
AUTOCAST_targetSelf: true
AUTOCAST_targetType: TARGET_TYPE_TOWERS
target_art:
AUTOCAST_autoRange: 0
private function onAutocast takes Tower tower returns nothing
if tower.getBuffOfType(dave_smoke)==0 then
call dave_smoke.apply(tower, tower, tower.getLevel())
endif
if tower.getBuffOfType(dave_acid)!=0 then
call tower.getBuffOfType(dave_acid).removeBuff()
endif
if tower.getBuffOfType(dave_concussive)!=0 then
call tower.getBuffOfType(dave_concussive).removeBuff()
endif
endfunction
Header globals
//@import
BuffType dave_concussive
//@import
BuffType dave_acid
//@import
BuffType dave_smoke
//@import
BuffType dave_concussive_buff
//@import
BuffType dave_acid_buff
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: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
local integer level = tower.getLevel()
local Unit creep = Event.getTarget()
local Unit u
local Iterate it
if tower.getBuffOfType(dave_concussive)!=0 then
set it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_CREEPS,creep,300)
loop
set u = it.next()
exitwhen u == 0
call dave_concussive_buff.apply(tower,u,level)
endloop
call Effect.createScaled("Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl", GetUnitX(creep.getUnit()), GetUnitY(creep.getUnit()), 0, 0, 1.0).setLifetime(0.2)
elseif tower.getBuffOfType(dave_acid)!=0 then
set it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_CREEPS,creep,300)
loop
set u = it.next()
exitwhen u == 0
call dave_acid_buff.apply(tower, u, level)
endloop
call Effect.createScaled("Abilities\\Weapons\\ChimaeraAcidMissile\\ChimaeraAcidMissile.mdl", GetUnitX(creep.getUnit()), GetUnitY(creep.getUnit()), 0, 0, 1.3).setLifetime(0.2)
elseif tower.getBuffOfType(dave_smoke)!=0 then
set it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_CREEPS,creep,300)
loop
set u = it.next()
exitwhen u == 0
call cb_silence.applyOnlyTimed(tower, u, 1.5+(0.06*level))
endloop
call Effect.createScaled("Abilities\\Spells\\Human\\CloudOfFog\\CloudOfFog.mdl", GetUnitX(creep.getUnit()), GetUnitY(creep.getUnit()), 0, 0, 0.8).setLifetime(0.5)
endif
endfunction
|
Geothermal Refinery v1
2000
|
ID: 224
Family ID:
Author: Velex
Rarity: rare
Element: fire
Attack Type: Elemental
Attack Range: 700
Attack CD: 0.5
Damage: 848-848
Status: Approved
|
Description: Aura tower with a damage bonus aura.
Thermal Boost - Aura
Increases damage of towers in 200 range by 30%. Level Bonus: +0.8% damage |
Download
Toggle Triggers Header globals
//@import
BuffType velex_dmg_aura
endglobals
private function init takes nothing returns nothing
endfunction
Tower Aura
AURA_powerAdd: 8
AURA_auraEffect: velex_dmg_aura
AURA_levelAdd: 8
AURA_power: 300
AURA_targetType: TARGET_TYPE_TOWERS
AURA_targetSelf: true
AURA_level: 300
AURA_auraRange: 200
|
Green Lightning Storm v1
2000
|
ID: 264
Family ID:
Author: drol
Rarity: rare
Element: storm
Attack Type: Energy
Attack Range: 1200
Attack CD: 2
Damage: 1183-1782
Mana: 65
Mana regen: 0
Status: Approved
|
Description: This tower gains mana by attacking and can use it to gain an attackspeed boost.
Specials:
+20% dmg to magical
Lightning Surge
Increases the attackspeed of this tower by 200% for the next 5 attacks. The surge fades after 8 seconds. Level Bonus: +2% attackspeed +1 attack per 5 levels AC_TYPE_OFFENSIVE_IMMEDIATE 60, 1200 range, 6s cooldown
Mana Feed
Attacks restore 4 mana to the tower and increase spell crit chance by 10%. Hint: Mana regeneration increases mana gained. Level Bonus: +0.2% spell crit chance
Lightning Burst
Grants a 12.5% chance to deal 35 times current mana as spell damage on attack. Resets the bonus spell crit of 'Mana Feed'. Level Bonus: +0.5% chance |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 6
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_IMMEDIATE
AUTOCAST_manacost: 60
AUTOCAST_range: 1200
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: false
AUTOCAST_targetType: 0
target_art:
AUTOCAST_autoRange: 1200
private function onAutocast takes Tower tower returns nothing
set tower.userInt = 5 + tower.getLevel() / 5
call drol_surge.apply(tower,tower,tower.getLevel()+50)
endfunction
Header globals
//@import
BuffType drol_surge
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 Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local unit towerUnit = tower.getUnit()
local real mana = GetUnitState(towerUnit, UNIT_STATE_MANA)
call SetUnitState(towerUnit , UNIT_STATE_MANA, mana + 4 * (1. + tower.getProp_ManaRegPercBonus()))
call tower.modifyProperty(MOD_SPELL_CRIT_CHANCE, 0.1+(tower.getLevel()*0.002))
set tower.userReal = tower.userReal + 0.1 + (tower.getLevel()*0.002)
set towerUnit = null
endfunction
On Damage
ONDAMAGE_chance: 0.125
ONDAMAGE_chanceLevelAdd: 0.005
function onDamage takes Tower tower returns nothing
local Effect targetEffect
local Creep creep = Event.getTarget()
if not creep.isImmune() then
set targetEffect = Effect.createScaled("Abilities\\Spells\\Human\\ManaFlare\\ManaFlareBoltImpact.mdl", GetUnitX(creep.getUnit()), GetUnitY(creep.getUnit()), 0, 0, 1.8)
call targetEffect.setLifetime(1.0)
call tower.doSpellDamage(creep, GetUnitState(tower.getUnit(), UNIT_STATE_MANA) * 35,tower.calcSpellCritNoBonus())
call tower.modifyProperty(MOD_SPELL_CRIT_CHANCE, -(tower.userReal))
set tower.userReal = 0.0
endif
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userReal = 0.0
set tower.userInt = 0
endfunction
|
Freezing Sea Turtle v1
2000
|
ID: 283
Family ID:
Author: i_mOck_death
Rarity: rare
Element: ice
Attack Type: Energy
Attack Range: 900
Attack CD: 0.8
Damage: 1-1
Mana: 3200
Mana regen: 0
Status: Approved
|
Description: Become one with water. Become a turtle.
Specials:
+128 mana/lvl
Splash
Every attack the turtle restores 128 mana. Mana regeneration will increase mana restored. Mana degeneration will not decrease mana restored below 128. Level Bonus: +5.12 mana restored
Aqua Breath
This tower deals Energy damage equal to its mana.
Cold Blooded
Every second this tower loses 1.75% of its max mana.
|
Download
Toggle Triggers On Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local unit towerUnit = tower.getUnit()
local real mana = GetUnitState(towerUnit, UNIT_STATE_MANA)
if tower.getProp_ManaRegPercBonus() > 0 then
call SetUnitState(towerUnit , UNIT_STATE_MANA, mana + (128+tower.getLevel()*5.12) * (1. + tower.getProp_ManaRegPercBonus()))
else
call SetUnitState(towerUnit , UNIT_STATE_MANA, mana + (128+tower.getLevel()))
endif
set towerUnit = null
endfunction
On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
local Unit creep = Event.getTarget()
call tower.doAttackDamage(creep, GetUnitState(tower.getUnit(), UNIT_STATE_MANA),tower.calcAttackMulticrit(0.0,0.0,0))
endfunction
Periodic
PERIODIC_period: 1
function periodic takes Tower tower returns nothing
call tower.subtractMana(GetUnitState(tower.getUnit(), UNIT_STATE_MAX_MANA)*.0175, false)
endfunction
|
Infested Mutating Acid Factory v1
2000
|
ID: 337
Family ID:
Author: cedi
Rarity: common
Element: iron
Attack Type: Decay
Attack Range: 800
Attack CD: 1
Damage: 879-899
Status: Approved
|
Description: Careful, corrosive.
Specials:
Bounce attack:
3 targets
-15% damage per bounce
Acid Coating
Decreases the armor of damaged units by 9.6 for 3 seconds. Level Bonus: +0.384 armor reduction +0.12 seconds |
Download
Toggle Triggers Header globals
//@import
BuffType cedi_acidarmor
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: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
call cedi_acidarmor.applyCustomTimed( tower, Event.getTarget(), 9600 + tower.getLevel() * 384, 3.0 + 0.12 * tower.getLevel() )
endfunction
|
Huntress v1
2000
|
ID: 339
Family ID:
Author: cedi
Rarity: rare
Element: nature
Attack Type: Physical
Attack Range: 800
Attack CD: 1.8
Damage: 1730-1730
Status: Approved
|
Description: After having to forfeit her belief in Elune she seeked support from the dark and forbidden arts.
Specials:
Bounce attack:
4 targets
-25% damage per bounce
+2.4% attackspeed/lvl
Shadow Glaive
Whenever this tower attacks it has a 20% chance to gain 200% attackspeed until the next attack. The next attack will also crit for sure and deal 50% more crit damage. Level Bonus: +2% crit damage +8% attack speed +0.8% chance
Star Glaive
Whenever this tower damages a creep there is a 25% chance to deal additional 35% of the attack's damage as spell damage. Level Bonus: +0.4% chance +1% attack damage as spell damage |
Download
Toggle Triggers Header globals
//@import
BuffType cedi_shadowgleve
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 Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local Buff B = tower.getBuffOfType( cedi_shadowgleve )
if B != 0 then
call tower.addModifiedAttackCrit( 0.00, 1.50 + tower.getLevel() / 50.0 )
call B.removeBuff()
endif
if tower.calcChance( 0.2 + tower.getLevel() * 0.008 ) then
call cedi_shadowgleve.apply( tower, tower, tower.getLevel() )
endif
endfunction
On Damage
ONDAMAGE_chance: 0.25
ONDAMAGE_chanceLevelAdd: 0.004
function onDamage takes Tower tower returns nothing
local real r = Event.damage * ( 0.35 + 0.01 * tower.getLevel() ) //( 1600.00 + tower.getLevel() * 64.0 ) +
call tower.doSpellDamage( Event.getTarget(), r, tower.calcSpellCritNoBonus() )
//call cb_stun.applyOnlyTimed( tower, Event.getTarget(), 0.35 )
call SFXOnUnit( "Abilities\\Spells\\NightElf\\Starfall\\StarfallTarget.mdl", Event.getTarget().getUnit(), "origin" )
endfunction
|
Meteor Totem v1
2000
|
ID: 575
Family ID:
Author: SirCoqaLot.
Rarity: unique
Element: fire
Attack Type: Elemental
Attack Range: 850
Attack CD: 3.8
Damage: 1966-2966
Status: Approved
|
Description: A powerful Totem that causes other towers to release meteors that deal spell damage.
Specials:
Splash attack:
325 AoE: 50% damage
Attraction
This tower buffs 4 towers in 500 range and gives them a 35% attackspeed adjusted chance on attack to release a meteor dealing 200 spell damage, or a 100% chance to release a meteor on spell cast dealing 500 spell damage. The Meteors fly towards a random target in 1000 range and deal damage in 220 AoE around the main target. The buff lasts until a meteor is released. Level Bonus: +1 tower buffed every 5 levels +8 spell damage on attack +20 spell damage on cast AC_TYPE_ALWAYS_BUFF 0, 500 range, 4s cooldown
Torture
Targets damaged by this tower are debuffed for 2.5 seconds. Whenever a debuffed creep is dealt at least 500 attackdamage it receives an additional 8% of that damage as spell damage. This ability cannot crit. Level Bonus: +0.05 seconds duration +0.1% damage as spell damage |
Download
Toggle Triggers Autocast
AUTOCAST_cooldown: 4
AUTOCAST_autoRange: 500
AUTOCAST_manacost: 0
AUTOCAST_range: 500
AUTOCAST_targetType: 0
AUTOCAST_numBuffsBeforeIdle: 0
caster_art:
target_art:
AUTOCAST_autocastType: AC_TYPE_ALWAYS_BUFF
AUTOCAST_buffType: 0
AUTOCAST_isExtended: false
AUTOCAST_targetSelf: true
private function onAutocast takes Tower tower returns nothing
local Unit u
local Iterate it = Iterate.overUnitsInRangeOfCaster(tower,TARGET_TOWERS,500) //iterating through towers in 500 range apllying the buff but not to itself
local integer number = 4 + R2I(tower.getLevel()/5)
loop
set u = it.nextRandom()
exitwhen u == 0 or number == 0
if u != tower then
set sir_totem_buff.applyAdvanced(tower,u,0,0,100).userInt = 0
set number = number - 1 // substracting 1
endif
endloop
if u != 0 then
call it.destroy()
endif
endfunction
Header globals
BuffType sir_totem_buff
BuffType sir_totem_debuff
ProjectileType sir_meteor_projectile
endglobals
function sir_totem_event takes Buff b returns nothing // doing meteor stuff
local Tower tower = b.getCaster()
local Tower buffed = b.getBuffedUnit()
local Iterate it = Iterate.overUnitsInRangeOfCaster(buffed,TARGET_CREEPS,1000)
local Unit result = it.nextRandom()
local integer level = tower.getLevel()
//searching a target in 1k range around tower
if result != 0 then // if the ability has found a creep in range
if b.userInt == 1 then
set Projectile.createBezierInterpolationFromPointToUnit(sir_meteor_projectile,buffed,1,1,buffed.getX(),buffed.getY(),buffed.getZ()+1200,result,0.0,0,0.0,true).userInt = 200 + 8 * level // on atk
else
set Projectile.createBezierInterpolationFromPointToUnit(sir_meteor_projectile,buffed,1,1,buffed.getX(),buffed.getY(),buffed.getZ()+1200,result,0.0,0,0.0,true).userInt = 500 + 20 * level// on cast
endif
call it.destroy()
endif
call b.removeBuff() // purging the buff
endfunction
function sir_meteor_hit takes Projectile p, Unit u returns nothing
local Tower tower = p.getCaster()
call tower.doSpellDamageAoE(p.x,p.y,220,p.userInt,tower.calcSpellCritNoBonus(),0)
//dealing the damage calculated before
call SFXAtPoint("Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl",p.x,p.y)
endfunction
function sir_totem_onatk takes Buff b returns nothing // doing stuff for meteor on attack
local Tower buffed = b.getBuffedUnit()
if buffed.calcChance(buffed.getBaseAttackspeed()*0.35) then
set b.userInt = 1
call sir_totem_event(b)
endif
endfunction
function sir_totem_attack takes Buff b returns nothing // doing stuff when the tower itself is attacking
local Tower caster = b.getCaster()
local real damage = Event.damage * (0.08 + caster.getLevel()*0.001)
local Creep target = b.getBuffedUnit()
if Event.damage >= 500 and Event.isSpellDamage() == false then
call caster.doSpellDamage(target,damage,1)
call caster.getOwner().displaySmallFloatingText(I2S(R2I(damage*caster.getProp_SpellDmgDealt())),target,255,150,150,20)
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_totem_buff = BuffType.create(0,0,true)
call sir_totem_buff.addEventOnAttack(sir_totem_onatk,1,0)
call sir_totem_buff.addEventOnSpellCast(sir_totem_event)
call sir_totem_buff.setBuffIcon('@@0@@')
set sir_totem_debuff = BuffType.create(0,0,false)
call sir_totem_debuff.setBuffIcon('@@1@@')
call sir_totem_debuff.addEventOnDamaged(sir_totem_attack,1,0)
set sir_meteor_projectile = ProjectileType.create("Abilities\\Weapons\\LordofFlameMissile\\LordofFlameMissile.mdl",10,950)
call sir_meteor_projectile.setEventOnInterpolationFinished(sir_meteor_hit)
endfunction
On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
call sir_totem_debuff.applyAdvanced(tower,Event.getTarget(),0,0,2.5+tower.getLevel()*0.05)// apllys the buff dealing x% additional damage
endfunction
|
Description: