Vulshok, the Berserker v1
2400
|
ID: 140
Family ID:
Author: Boekie
Rarity: unique
Element: fire
Attack Type: Physical
Attack Range: 1000
Attack CD: 0.64
Damage: 900-900
Status: Approved
|
Specials:
x2 crit damage +3% attackspeed/lvl
Ultimate Fighter
Vulshok uses his great power to specialize his attacks: - Every 3rd attack adds a critical hit - Every 7th attack deals 3000 bonus attackdamage - Every 12th attack splashes all damage over 200 AoE - Every 15th attack adds 0.5% attack damage permanently Level Bonus: +200 attackdamage on 7th attack
Maim
When Vulshok damages a creep it gets maimed. The creep is slowed by 10% for 5 seconds and every second it gets slowed by an extra 5%. This buff lasts for 5 seconds and cannot be refreshed. Level Bonus: +0.5% slow +0.1% extra slow per second |
Download
Toggle Triggers Header globals
MultiboardValues boekie_vulshok_multiboard
BuffType boekie_vulshok_slow
endglobals
function boekie_vulshok_slowPeriodic takes Buff b returns nothing
call b.setPower(b.getPower() + 50 + b.getLevel()/5)
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()
set boekie_vulshok_multiboard = MultiboardValues.create(4)
call boekie_vulshok_multiboard.setKey(0,"Attacks to crit")
call boekie_vulshok_multiboard.setKey(1,"Attacks to damage")
call boekie_vulshok_multiboard.setKey(2,"Attacks to splash")
call boekie_vulshok_multiboard.setKey(3,"Attacks to grow")
call m.addModification(MOD_MOVESPEED,-0.10,-0.001)
set boekie_vulshok_slow = BuffType.create(5,0.0,false)
call boekie_vulshok_slow.setBuffModifier(m)
call boekie_vulshok_slow.setBuffIcon('@@0@@')
call boekie_vulshok_slow.addPeriodicEvent(EventHandler.boekie_vulshok_slowPeriodic,1)
endfunction
On Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local Unit target = Event.getTarget()
local integer crit = 0
set tower.userInt = tower.userInt + 1
//Crit (every 3rd)
if ModuloInteger(tower.userInt,3) == 0 then
call tower.addAttackCrit()
set crit = 1 //So the triggered attackdamage can crit too!
endif
//Bonus damage (every 7th)
if ModuloInteger(tower.userInt,7) == 0 then
//Splashed bonus damage (every 84th)
if ModuloInteger(tower.userInt,12) == 0 then
call tower.doAttackDamageAoEUnit(target,200,3000.0+(tower.getLevel()*200.0),tower.calcAttackMulticrit(0.0,0.0,crit),0.0)
call Effect.createScaled("Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl", target.getX(), target.getY(), 0.0, 0, 1.5).destroy()
else
call tower.doAttackDamage(target,3000.0+(tower.getLevel()*200.0),tower.calcAttackMulticrit(0.0,0.0,crit))
call Effect.createScaled("Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl", target.getX(), target.getY(), 0.0, 0, 0.2).destroy()
endif
endif
//Splash (every 12th)
if ModuloInteger(tower.userInt,12) == 0 then
set tower.userInt2 = 1
endif
//Growth (every 15th)
if ModuloInteger(tower.userInt,15) == 0 then
call tower.modifyProperty(MOD_DAMAGE_ADD_PERC, 0.005)
//Rare text has increased chance to show with increased triggerchances. ;]
if tower.calcChance(0.005) then
call tower.getOwner().displayFloatingText("I WILL BATHE IN YOUR BLOOD!",tower,255,100,100)
elseif tower.calcChance(0.1) then
call tower.getOwner().displayFloatingText("FEAR ME!",tower,255,100,100)
elseif tower.calcChance(0.4) then
call tower.getOwner().displayFloatingText("GRRR!",tower,255,100,100)
else
call tower.getOwner().displayFloatingText("ROAR!",tower,255,100,100)
endif
//Increase model size.
set tower.userInt3 = tower.userInt3 + 1
call tower.setScale(0.9 + 0.001 * tower.userInt3)
endif
if tower.userInt >= 420 then
set tower.userInt = 0
endif
endfunction
On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
local Iterate it
local Creep creep = Event.getTarget()
if tower.userInt2 == 1 then
call tower.doAttackDamageAoEUnit(creep,200,tower.getCurrentAttackDamageWithBonus(),tower.calcAttackMulticrit(0.0,0.0,1),0.0) //+1 multicrit count for the guaranteed crit every three attacks.
set Event.damage = 0 //Cancel the regular attack
//Apply slow to all creeps hit.
set it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_CREEPS,creep,200)
loop
set creep = it.next()
exitwhen creep == 0
if creep.getBuffOfType(boekie_vulshok_slow) == 0 then
call boekie_vulshok_slow.apply(tower, creep, tower.getLevel()*5)
endif
endloop
set tower.userInt2 = 0
else
if creep.getBuffOfType(boekie_vulshok_slow) == 0 then
call boekie_vulshok_slow.apply(tower, creep, tower.getLevel()*5)
endif
endif
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
//Abilities
set tower.userInt = 0
//Splash on next attack
set tower.userInt2 = 0
//Number of growths
set tower.userInt3 = 0
endfunction
On Tower Details function onTowerDetails takes Tower tower returns MultiboardValues
call boekie_vulshok_multiboard.setValue(0,I2S(3-ModuloInteger(tower.userInt,3)))
call boekie_vulshok_multiboard.setValue(1,I2S(7-ModuloInteger(tower.userInt,7)))
call boekie_vulshok_multiboard.setValue(2,I2S(12-ModuloInteger(tower.userInt,12)))
call boekie_vulshok_multiboard.setValue(3,I2S(15-ModuloInteger(tower.userInt,15)))
return boekie_vulshok_multiboard
endfunction
|
Witch Queen v1
2400
|
ID: 185
Family ID:
Author: cedi
Rarity: uncommon
Element: darkness
Attack Type: Essence
Attack Range: 1100
Attack CD: 1.6
Damage: 2153-2153
Mana: 30
Mana regen: 1.5
Status: Approved
|
Description: What's the thing around my ankle? Ohh that, that are the hands of one of my minions.
Specials:
+1 mana/lvl +0.1 mana regen/lvl
Love Potion
The witch throws a bottle of love potion on the target, slowing it by 42% and increasing its item drop chance by 33.6%. The potion lasts 7 seconds. Level Bonus: +0.375% slow +0.3% Item drop chance AC_TYPE_OFFENSIVE_BUFF 25, 1100.00 range, 3.00s cooldown
Soul Split
When the witch attacks, it has a 42% chance to deal 2000 spell damage to its target, increasing the witch's attackspeed by 25% and decreasing the chance to trigger this spell by 8%. These effects last 15 seconds and stack. If the target is under the influence of a Love Potion, the attackspeed bonus, the damage and the duration of this spell are doubled. Level Bonus: +80 spell damage |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 3.00
AUTOCAST_numBuffsBeforeIdle: 1
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_BUFF
AUTOCAST_manacost: 25
AUTOCAST_range: 1100.00
AUTOCAST_buffType: cedi_LovePotion
AUTOCAST_targetSelf: false
AUTOCAST_targetType: TARGET_TYPE_CREEPS
target_art:
AUTOCAST_autoRange: 1100.00
private function onAutocast takes Tower tower returns nothing
set Projectile.createFromUnitToUnit( cedi_LoveMissile, tower, 1.00, tower.calcSpellCritNoBonus(), tower, Event.getTarget(), true, false, false ).userInt = 336 + tower.getLevel() * 3
endfunction
Header globals
//@import
BuffType cedi_LovePotion
//@import
BuffType cedi_SoulBuff
//@import
ProjectileType cedi_LoveMissile
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 real multipler = 1.00
local integer UID = tower.getUID()
if ( tower.calcChance( tower.userReal / 100.00 ) ) then
if Event.getTarget().getBuffOfType( cedi_LovePotion ) != 0 then
set multipler = 2.00
call tower.getOwner().displayFloatingTextX( "Double", tower, 255, 0, 0, 255, 64.00, 1.00, 2.00 )
endif
call SFXAtUnit("Objects\\Spawnmodels\\Undead\\UndeadDissipate\\UndeadDissipate.mdl", tower.getUnit())
call tower.doSpellDamage( Event.getTarget(), (2000 + 80 * tower.getLevel() ) * multipler, tower.calcSpellCritNoBonus() )
call cedi_SoulBuff.applyCustomTimed( tower, tower, 1, 15 * multipler )
set tower.userReal = tower.userReal - 8.00 //* multipler
call tower.modifyProperty( MOD_ATTACKSPEED, 0.25 * multipler )
call TriggerSleepAction( 15.00 * multipler )
if tower.getUID() == UID then
call tower.modifyProperty( MOD_ATTACKSPEED, -0.25 * multipler )
set tower.userReal = tower.userReal + 8.00 //* multipler
endif
endif
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userReal = 42.00
endfunction
|
Icy Spires v1
2400
|
ID: 323
Family ID:
Author: SirCoqaLot.
Rarity: rare
Element: ice
Attack Type: Elemental
Attack Range: 1100
Attack CD: 1.4
Damage: 2402-2402
Status: Approved
|
Description: Advanced frost tower that will freeze attacked creeps, stunning them and reducing their health regeneration.
Cold
This tower has a 25% chance on attack to freeze the attacked creep and reduce its health regeneration by 30%. The freeze lasts for 1.2 seconds and cannot be reapplied on already frozen units. Chance to proc, health regeneration reduction and freeze duration are halved for bosses. Does not affect immune creeps. Level Bonus: +0.5% chance +0.05 seconds duration -0.8% hp regen |
Download
Toggle Triggers Header globals
//@import
BuffType sirFrost
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.25
ONDAMAGE_chanceLevelAdd: 0.005
function onDamage takes Tower tower returns nothing
local Creep creep = Event.getTarget()
local integer lvl = tower.getLevel()
local real scalar = 1.0
if creep.getSize() >= SIZE_BOSS then
set scalar = 0.5
endif
if GetRandomReal(0,1) < scalar and not creep.isImmune() and creep.getBuffOfType(sirFrost) == 0 then
call sirFrost.applyCustomTimed(tower,creep,R2I(lvl * scalar),(1.2+lvl*0.05) * scalar )
call SFXAtUnit("Abilities\\Spells\\Undead\\FreezingBreath\\FreezingBreathTargetArt.mdl",creep.getUnit())
endif
// call SFXAtUnit("Abilities\\Spells\\Undead\\FreezingBreath\\FreezingBreathTargetArt.mdl",creep.getUnit())
endfunction
|
Human Sacrifice v1
2400
|
ID: 336
Family ID:
Author: DaveMatthews
Rarity: rare
Element: darkness
Attack Type: Decay
Attack Range: 850
Attack CD: 1
Damage: 2099-2099
Mana: 100
Mana regen: 2.5
Status: Approved
|
Description: Sacrifices itself to boost nearby towers.
Specials:
+0.2 mana regen/lvl
Sacrifice
This tower loses 100% of its damage to boost the dps of a tower in 500 range by 45% of its total damage for 6 seconds. This buff has no effect on towers of the same family. Level Bonus: +0.6% bonus damage AC_TYPE_OFFENSIVE_BUFF 90, 500 range, 6s cooldown
Blood Spill
On attack, this tower has a 15% chance to lose 100% attack speed and boost the attack speed of all towers in 200 range by 75%, equally divided among them, for 6 seconds. Every time it casts Blood Spill, the tower gains 0.5 experience for every other tower affected. Cannot retrigger when the buff is already active. Level Bonus: +1% attack speed +0.4% chance |
Download
Toggle Triggers Autocast
AUTOCAST_cooldown: 6
AUTOCAST_autoRange: 500
AUTOCAST_manacost: 90
AUTOCAST_range: 500
AUTOCAST_targetType: TARGET_TYPE_TOWERS
AUTOCAST_numBuffsBeforeIdle: 1
caster_art: Abilities\Spells\Undead\CarrionSwarm\CarrionSwarmDamage.mdl
target_art: Abilities\Spells\Undead\DeathPact\DeathPactCaster.mdl
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_BUFF
AUTOCAST_buffType: dave_sacrifice_target
AUTOCAST_isExtended: false
AUTOCAST_targetSelf: false
private function onAutocast takes Tower tower returns nothing
local Tower target = Event.getTarget()
local Buff b
if target.getFamily() != tower.getFamily() then
if target.getBuffOfType(dave_sacrifice_target) != 0 then
call dave_sacrifice_target.apply(tower, target, 0)
else
set b = dave_sacrifice_target.apply(tower, target, 0)
set b.userReal = tower.getCurrentAttackDamageWithBonus()*(0.45+(0.006*tower.getLevel()))
call target.modifyProperty(MOD_DPS_ADD, b.userReal)
endif
call dave_sacrifice_altar.apply(tower, tower, tower.getLevel())
endif
endfunction
Header globals
//@import
BuffType dave_sacrifice_target
//@import
BuffType dave_sacrifice_altar
//@import
BuffType dave_blood_target
//@import
BuffType dave_blood_altar
endglobals
private function init takes nothing returns nothing
endfunction
On Attack
ONATTACK_chance: 0.15
ONATTACK_chanceLevelAdd: 0.004
function onAttack takes Tower tower returns nothing
local integer numTowers
local integer level = tower.getLevel()
local Tower u
local Buff b
local Iterate it = Iterate.overUnitsInRangeOfCaster(tower, TARGET_TOWERS, 200)
set b = tower.getBuffOfType(dave_blood_altar)
set numTowers = it.count() - 1
if b == 0 then
call SFXAtUnit("Objects\\Spawnmodels\\Human\\HumanBlood\\HumanBloodKnight.mdl", tower.getUnit())
loop
set u = it.next()
exitwhen u == 0
if u != tower then
call dave_blood_target.apply(tower, u, (75 + level)/numTowers)
endif
endloop
if numTowers > 0 then
call dave_blood_altar.apply(tower, tower, level)
call tower.addExp(0.5 * numTowers)
endif
else
call it.destroy()
endif
endfunction
|
Supercollider v1
2400
|
ID: 403
Family ID:
Author: the_red_terror
Rarity: rare
Element: iron
Attack Type: Energy
Attack Range: 900
Attack CD: 1
Damage: 1413-1413
Status: Approved
|
Description: Gains a lot of speed and damage on each attack, while losing the bonus on kill.
Energy Acceleration
Every attack increases attack speed and damage by 4%. Level Bonus: +0.1% attack speed and damage
Errant Tachyons
On kill, this tower is stunned for 2 seconds and the bonus from Energy Acceleration is lost.
|
Download
Toggle Triggers Header globals
MultiboardValues Red_Terror_Values
endglobals
//Do not remove or rename this function!
//Put your initialization tasks here, this function will be called on map init
//@import
function redterror_energy_rotation takes Tower tower returns nothing
endfunction
private function init takes nothing returns nothing
set Red_Terror_Values = MultiboardValues.create(1)
call Red_Terror_Values.setKey(0, "Acceleration")
endfunction
On Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local integer lvl = tower.getLevel()
call tower.modifyProperty(MOD_DAMAGE_ADD_PERC,0.04+(lvl*0.001))
call tower.modifyProperty(MOD_ATTACKSPEED,0.04+(lvl*0.001))
set tower.userReal = tower.userReal+(0.04+(lvl*0.001))
call redterror_energy_rotation(tower)
endfunction
On Kill function onKill takes Tower tower returns nothing
local integer lvl = tower.getLevel()
call SFXAtUnit("Abilities\\Spells\\Orc\\FeralSpirit\\feralspiritdone.mdl",Event.getTarget().getUnit())
call tower.modifyProperty(MOD_DAMAGE_ADD_PERC,-(tower.userReal))
call tower.modifyProperty(MOD_ATTACKSPEED,-(tower.userReal))
call cb_stun.applyOnlyTimed(tower,tower,2)
set tower.userReal = 0
call redterror_energy_rotation(tower)
//different SFX?
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
local Effect e = Effect.createAnimatedScaled("Abilities\\Spells\\Orc\\SpiritLink\\SpiritLinkTarget.mdl",tower.getX(), tower.getY(), 8.0, 0.0, 1.50)
set tower.userInt2 = e
set tower.userReal = 0
call redterror_energy_rotation(tower)
endfunction
On Tower Destruction function onDestruct takes Tower tower returns nothing
local Effect e = tower.userInt2
call e.destroy()
endfunction
On Tower Details
goldcost: 0
function onTowerDetails takes Tower tower returns MultiboardValues
call Red_Terror_Values.setValue(0, R2SW((tower.userReal*100),1,1))
return Red_Terror_Values
endfunction
|
Totally Frozen Troll v1
2400
|
ID: 479
Family ID:
Author: cedi
Rarity: uncommon
Element: ice
Attack Type: Elemental
Attack Range: 900
Attack CD: 1.5
Damage: 1362-1362
Mana: 100
Mana regen: 2.5
Status: Approved
|
Description: His father said to him: Stay cool. And he did.
Specials:
-50% dmg to undead +25% dmg to orcs +25% dmg to humanoids
Blizzard
Summons 8 waves of icy spikes which fall down to earth. Each wave deals 1000 damage in an AoE of 500. Each time a unit is damaged by this spell there is a chance of 45% to slow the unit by 14% for 5.5 seconds and a chance of 25% to stun the unit for 1 seconds. Level Bonus: +50 damage +0.01% slow +1% chance for slow +0.1% chance for stun AC_TYPE_OFFENSIVE_UNIT 95, 900 range, 10s cooldown |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 10
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_UNIT
AUTOCAST_manacost: 95
AUTOCAST_range: 900
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: true
AUTOCAST_targetType: 0
target_art:
AUTOCAST_autoRange: 900
private function onAutocast takes Tower tower returns nothing
local unit u = Event.getTarget().getUnit()
call Troll_blizzard.pointCastFromCasterOnPoint( tower, GetUnitX( u ), GetUnitY( u ), 1.00 + I2R( tower.getLevel() ) * 0.05, tower.calcSpellCritNoBonus() )
set u = null
endfunction
Header globals
BuffType Troll_blizzardslow
Cast Troll_blizzard
endglobals
function OnBlizzard takes DummyUnit U returns nothing
if U.getCaster().calcChance( 0.45 + I2R( U.getCaster().getLevel() ) * 0.01 ) then
call Troll_blizzardslow.applyOnlyTimed( U.getCaster(), Event.getTarget(), 5.50 )
endif
if U.getCaster().calcChance( 0.25 + I2R( U.getCaster().getLevel() ) * 0.001 ) then
call cb_stun.applyOnlyTimed( U.getCaster(), Event.getTarget(), 1.00 )
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
local Modifier mod2 = Modifier.create()
set Troll_blizzardslow = BuffType.create(0.0,0.0,false)
call mod2.addModification(MOD_MOVESPEED,-0.14,-0.001)
call Troll_blizzardslow.setBuffModifier(mod2)
call Troll_blizzardslow.setBuffIcon('@@4@@')
set Troll_blizzard = Cast.create( '@@0@@', "blizzard", 9.00 )
call Troll_blizzard.setDamageEvent( EventHandler.OnBlizzard )
call Troll_blizzardslow.setStackingGroup("cedi_troll_blizzard")
endfunction
|
Luxurious Fire Pit v1
2400
|
ID: 560
Family ID:
Author: Boekie
Rarity: common
Element: fire
Attack Type: Decay
Attack Range: 800
Attack CD: 0.9
Damage: 1692-1692
Status: Approved
|
Description: A fire pit that has the ability to unleash some powerful flames.
Specials:
2x multicrit
Hot Coals
Whenever this tower kills a creep it gains 35% bonus crit chance for 11.5 seconds. Level Bonus: +0.05 sec duration +0.3% crit chance |
Download
Toggle Triggers Header globals
//@import
BuffType boekie_coals_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 Kill function onKill takes Tower tower returns nothing
local integer lvl = tower.getLevel()
call boekie_coals_buff.applyCustomTimed(tower,tower,200+(lvl*3),11.5+0.05*lvl)
endfunction
|
Description: