Soul Vault v1
2800
|
ID: 453
Family ID:
Author: SirCoqaLot.
Rarity: unique
Element: darkness
Attack Type: Decay
Attack Range: 775
Attack CD: 3
Damage: 6155-9155
Status: Approved
|
Acid Skull
This tower has a 25% chance to throw an Acid Skull onto the target, dealing 1800 damage to the main target and 1440 damage to targets in 225 range and reducing their armor by 5 over 4.5 seconds. Level Bonus: +5% damage +0.4% chance
Soulsteal
This tower has a 12.5% chance to lock its target's soul. A unit without a soul will recieve 50% more spell damage. Level Bonus: +0.1% chance +2% more spell damage taken
Vault's Presence - Aura
Unit's in 775 range have their armor reduced by 25%. Level Bonus: +0.2% armor reduction |
Download
Toggle Triggers Header globals
BuffType sir_armor_aura
BuffType sir_soul_devour
BuffType sir_acid_skull
Cast AcidSkull
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
local Modifier armor = Modifier.create()
local Modifier devour = Modifier.create()
local Modifier acid = Modifier.create()
set sir_armor_aura = BuffType.createAuraEffectType(false) // Aura
call armor.addModification(MOD_ARMOR_PERC,0.0,-0.001)
call sir_armor_aura.setBuffModifier(armor)
call sir_armor_aura.setStackingGroup("armor_reduction_aura")
call sir_armor_aura.setBuffIcon('@@1@@')
set sir_acid_skull = BuffType.create(0,0,false) // Acid Skull
call acid.addModification(MOD_ARMOR,0.0,-1)
call sir_acid_skull.setBuffModifier(acid)
call sir_acid_skull.setStackingGroup("acid_skull")
set sir_soul_devour = BuffType.create(1000,0,false) // Devour
call devour.addModification(MOD_SPELL_DAMAGE_RECEIVED,0.0,0.001)
call sir_soul_devour.setBuffModifier(devour)
call sir_soul_devour.setBuffIcon('@@2@@')
set AcidSkull = Cast.create('@@0@@',"acidbomb",10.0)
endfunction
On Attack
ONATTACK_chance: 0.25
ONATTACK_chanceLevelAdd: 0.004
function onAttack takes Tower tower returns nothing
local integer lvl = tower.getLevel()
local Creep target = Event.getTarget()
local Unit u
local Iterate iterator = Iterate.overUnitsInRangeOfUnit(tower,TARGET_TYPE_CREEPS,target,225)
loop
set u = iterator.next()
exitwhen u == 0
call sir_acid_skull.applyCustomTimed(tower,u,5,4.5)
endloop
call sir_acid_skull.applyCustomTimed(tower,target,5,4.5)
call AcidSkull.targetCastFromCaster(tower,target,1.0+lvl*0.05,tower.calcSpellCritNoBonus())
endfunction
On Damage
ONDAMAGE_chance: 0.125
ONDAMAGE_chanceLevelAdd: 0.001
function onDamage takes Tower tower returns nothing
local integer lvl = tower.getLevel()
local integer devour = R2I((0.5 + lvl * 0.02)*1000)
call sir_soul_devour.apply(tower,Event.getTarget(),devour)
endfunction
Tower Aura
AURA_auraEffect: sir_armor_aura
AURA_power: 250
AURA_level: 250
AURA_auraRange: 775
AURA_targetType: TARGET_TYPE_CREEPS
AURA_levelAdd: 2
AURA_powerAdd: 2
AURA_targetSelf: false
|
Electrified Storm Lantern v1
2800
|
ID: 553
Family ID:
Author: Boekie
Rarity: uncommon
Element: storm
Attack Type: Energy
Attack Range: 1000
Attack CD: 1.3
Damage: 1525-1525
Status: Approved
|
Description: This tower is able to release a burst attack.
Burst Lightning
Has a 20% chance on attack to fire 5 extra projectiles at random creeps in 300 range around the main target. Each extra projectile deals the same amount of damage as a normal attack. Level Bonus: +1% chance +1 extra projectile at levels 15 and 25 |
Download
Toggle Triggers Header globals
endglobals
//@import
function newAttack takes Tower tower, integer numShots, Creep creep returns nothing
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.20
ONATTACK_chanceLevelAdd: 0.01
function onAttack takes Tower tower returns nothing
local Creep creep = Event.getTarget()
local integer numShots = 5
local integer twrLevel = tower.getLevel()
if twrLevel == 25 then
set numShots = 7
elseif twrLevel >= 15 then
set numShots = 6
endif
call newAttack(tower,numShots,creep)
endfunction
|
Gold Machine v1
2800
|
ID: 557
Family ID:
Author: Boekie
Rarity: rare
Element: iron
Attack Type: Physical
Attack Range: 1200
Attack CD: 2.5
Damage: 4867-4867
Mana: 30
Mana regen: 2
Status: Approved
|
Description: This machine is used to make money.
Golden Influence
This tower adds a buff to a tower in 400 range that lasts 12 seconds. The buff increases bounty gain by 60%. Everytime this spell is cast you gain 7 gold. Level Bonus: +0.4 seconds duration +0.6% bounty gain AC_TYPE_OFFENSIVE_BUFF 20, 400 range, 4s cooldown
Multiply Gold
This tower increases the gold income of the player by 10%.
|
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 4
AUTOCAST_numBuffsBeforeIdle: 3
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_BUFF
AUTOCAST_manacost: 20
AUTOCAST_range: 400
AUTOCAST_buffType: boekie_goldBuff
AUTOCAST_targetSelf: true
AUTOCAST_targetType: TARGET_TYPE_TOWERS
target_art: Abilities\Spells\Items\ResourceItems\ResourceEffectTarget.mdl
AUTOCAST_autoRange: 400
private function onAutocast takes Tower tower returns nothing
local integer level = tower.getLevel()
call boekie_goldBuff.applyCustomTimed(tower,Event.getTarget(),200+(level*6),12+(level*0.4))
call tower.getOwner().giveGold( 7,tower.getUnit(), true, true)
endfunction
Header globals
//@import
BuffType boekie_goldBuff
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 Tower Creation function onCreate takes Tower tower returns nothing
call tower.getOwner().modifyIncomeRate(0.10)
endfunction
On Tower Destruction function onDestruct takes Tower tower returns nothing
call tower.getOwner().modifyIncomeRate(-0.10)
endfunction
|
Dreadlord v1
2800
|
ID: 648
Family ID:
Author: poussix
Rarity: unique
Element: darkness
Attack Type: Decay
Attack Range: 900
Attack CD: 1
Damage: 1086-1086
Mana: 1000
Mana regen: 10
Status: Approved
|
Description: Vampire with strong unholy powers.
Specials:
+5% mana/lvl +5% mana regen/lvl
Dreadlord ' s Awakening
When activated, Dreadlord empowers himself with darkness for 10 seconds, increasing own attack speed by 50% and mana regeneration by 20 per second. Level Bonus: +2% attack speed +0.8 mana per second AC_TYPE_OFFENSIVE_IMMEDIATE 0, 0 range, 80s cooldown
Dreadlord Slash
Dreadlord deals 100% of his max mana in spell damage on attack. Costs 80 mana on each attack. Level Bonus: +4% spell damage
Bloodsucker
The Dreadlord is hungry. For every kill he gains 0.5% attack speed and 10 maximum mana. The mana bonus caps at 2000. Both bonuses are permanent. |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 80
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_IMMEDIATE
AUTOCAST_manacost: 0
AUTOCAST_range: 0
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: true
AUTOCAST_targetType: 0
target_art:
AUTOCAST_autoRange: 900
private function onAutocast takes Tower tower returns nothing
call poussix_Dnight.applyCustomTimed(tower,tower,1,10.0)
call poussix_cast.immediateCastFromCaster(tower,1,3)
endfunction
Header globals
BuffType poussix_Dnight
Cast poussix_cast
MultiboardValues Dreadlord_Bonus
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
local Modifier m = Modifier.create()
set poussix_Dnight = BuffType.create(10,0,true)
call m.addModification(MOD_ATTACKSPEED, 0.5 , 0.02)
call m.addModification(MOD_MANA_REGEN, 20 , 0.8)
call poussix_Dnight.setBuffModifier(m)
call poussix_Dnight.setBuffIcon('@@2@@')
call poussix_Dnight.setStackingGroup("poussix_bloodsucker")
set poussix_cast = Cast.create('@@0@@',"frenzy",1.0)
set Dreadlord_Bonus = MultiboardValues.create(2)
call Dreadlord_Bonus.setKey(0,"Attackspeed Bonus")
call Dreadlord_Bonus.setKey(1,"Mana Bonus")
endfunction
On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
local Unit creep = Event.getTarget()
local unit c = creep.getUnit()
local unit towerUnit = tower.getUnit()
local real totalDamage=(1+0.04*tower.getLevel()) * GetUnitState(towerUnit, UNIT_STATE_MAX_MANA)
local real Manna = GetUnitState(towerUnit, UNIT_STATE_MANA)
if (Manna >= 80) then
call tower.doSpellDamage(creep,totalDamage,tower.calcSpellCritNoBonus())
call SetUnitState(towerUnit , UNIT_STATE_MANA, Manna-80)
call Effect.createScaled("Abilities\\Spells\\Orc\\Devour\\DevourEffectArt.mdl", GetUnitX(c), GetUnitY(c), 30, 0, 1.5).destroy()
endif
set towerUnit = null
set c = null
endfunction
On Kill function onKill takes Tower tower returns nothing
call tower.modifyProperty(MOD_ATTACKSPEED, 0.005)
set tower.userReal2 = tower.userReal2 + 0.005
if tower.userReal <= 2 then
set tower.userReal = tower.userReal + 0.01
call tower.modifyProperty(MOD_MANA, 10)
endif
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userReal = 0.0
set tower.userReal2 = 0.0
endfunction
On Tower Details function onTowerDetails takes Tower tower returns MultiboardValues
call Dreadlord_Bonus.setValue(0, formatPercent(tower.userReal2, 1))
call Dreadlord_Bonus.setValue(1, I2S(R2I(tower.userReal*1000)))
return Dreadlord_Bonus
endfunction
|
Almighty Elemental Ghost v1
2850
|
ID: 137
Family ID:
Author: Der_kleine_Tomy
Rarity: uncommon
Element: fire
Attack Type: Essence
Attack Range: 950
Attack CD: 2
Damage: 4715-4715
Status: Approved
|
Description: A mysterious Ghost, which deals different damage types.
Specials:
+0.9% trigger chances/lvl
Elemental Wrath
The Elemental Ghost has a 25% chance to unleash it's wrath on attack, increasing its trigger chance by 15% for 5 seconds. Cannot retrigger during Elemental Wrath. Level Bonus: +0.1 seconds duration +0.9% trigger chance increase
Mimic
The Ghost's attacks are varied, and its damage type will either be good or bad against its target. Trigger chance adjusts the good/bad attacks to be better. |
Download
Toggle Triggers Header globals
//@import
BuffType tomy_ElementalWrath
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: 0.25
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
if tower.getBuffOfType(tomy_ElementalWrath) == 0 then
call tomy_ElementalWrath.applyCustomTimed(tower, tower, 150 + tower.getLevel() * 9, 5.0 + 0.1 * tower.getLevel())
endif
endfunction
On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
local Creep target = Event.getTarget()
local boolean immune = target.isImmune()
local boolean sif = target.getArmorType() == ARMOR_SIF
local boolean zod = target.getArmorType() == ARMOR_ZOD
local integer level = tower.getLevel()
local real damageadd
local real posDamageTypes = 3
if immune then
set posDamageTypes = 2
endif
if GetRandomInt(1, 100) > 50 then
if sif or zod then
set damageadd = 1.00
elseif tower.calcChance(1.00/posDamageTypes) then
set damageadd = 1.80
elseif not immune and tower.calcChance(1.00/(posDamageTypes - 1)) then
set damageadd = 1.50
else
set damageadd = 1.20
endif
else
if zod then
set damageadd = 0.90
elseif sif then
if not immune or (immune and tower.calcChance(0.50)) then
set damageadd = 0.40
else
set damageadd = 0.00
endif
elseif tower.calcChance(1.00/(6.00-posDamageTypes)) then
set damageadd = 1.00
elseif tower.calcChance(1.00/(6.00-(posDamageTypes + 1))) then
set damageadd = 0.90
elseif not immune or (immune and tower.calcChance(1.00/(6.00-(posDamageTypes + 2)))) then
set damageadd = 0.60
else
set damageadd = 0.00
endif
endif
set Event.damage = Event.damage * damageadd
if damageadd > 1.00 then
call tower.getOwner().displaySmallFloatingText(formatFloat(damageadd,2), tower, 0, 255, 0, 40)
elseif damageadd < 1.00 then
call tower.getOwner().displaySmallFloatingText(formatFloat(damageadd,2), tower, 255, 0, 0, 40)
else
call tower.getOwner().displaySmallFloatingText(formatFloat(damageadd,2), tower, 255, 255, 255, 40)
endif
endfunction
|
Infernal Bat v1
2850
|
ID: 261
Family ID:
Author: DaveMatthews
Rarity: rare
Element: darkness
Attack Type: Decay
Attack Range: 900
Attack CD: 1.2
Damage: 2701-2701
Mana: 50
Mana regen: 1.5
Status: Approved
|
Description: Like a bat out of hell I'll be gone when the morning comes!
Engulfing Darkness
This tower engulfs itself in darkness, gaining power as if it's night for 5 seconds.
AC_TYPE_OFFENSIVE_BUFF 45, 0 range, 6s cooldown
Bat Swarm
This tower has a 15% chance on attack to release a swarm of bats, dealing 2700 spell damage at nighttime or 900 spell damage at daytime to all enemies in a cone. The cone grows from a 100 AoE radius at the start to a 300 AoE radius at the end. Level Bonus: +0.2% chance +90 damage during night +30 damage during day
Creature of the Night
This tower deals 150% damage during nighttime and 50% damage during daytime. Level Bonus: +0.8% damage during night +0.4% damage during day |
Download
Toggle Triggers Autocast
caster_art: Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl
AUTOCAST_cooldown: 6
AUTOCAST_numBuffsBeforeIdle: 1
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_BUFF
AUTOCAST_manacost: 45
AUTOCAST_range: 0
AUTOCAST_buffType: dave_darkness
AUTOCAST_targetSelf: true
AUTOCAST_targetType: TARGET_TYPE_TOWERS
target_art:
AUTOCAST_autoRange: 0
private function onAutocast takes Tower tower returns nothing
call dave_darkness.apply(tower,tower,tower.getLevel())
endfunction
Header globals
//@import
BuffType dave_darkness
//@import
Cast dave_bats
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: 0.15
ONATTACK_chanceLevelAdd: 0.002
function onAttack takes Tower tower returns nothing
local real time = GetFloatGameState(GAME_STATE_TIME_OF_DAY)
local integer level = tower.getLevel()
if time >= 18.00 or time < 6.00 or tower.getBuffOfType(dave_darkness)!=0 then
call dave_bats.targetCastFromCaster(tower, Event.getTarget(), 2700+(90*level), tower.calcSpellCritNoBonus())
else
call dave_bats.targetCastFromCaster(tower, Event.getTarget(), 900+(30*level), tower.calcSpellCritNoBonus())
endif
endfunction
On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
local real time = GetFloatGameState(GAME_STATE_TIME_OF_DAY)
local integer level = tower.getLevel()
if time >= 18.00 or time < 6.00 or tower.getBuffOfType(dave_darkness)!=0 then
set Event.damage = Event.damage*(1.5+0.008*level)
else
set Event.damage = Event.damage*(0.5+0.004*level)
endif
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
call AddUnitAnimationProperties(tower.getUnit(), "stand alternate", false)
endfunction
|
Gnoll Storm Caster v1
2850
|
ID: 327
Family ID:
Author: cedi
Rarity: rare
Element: storm
Attack Type: Energy
Attack Range: 1200
Attack CD: 0.75
Damage: 334-334
Mana: 20
Mana regen: 1
Status: Approved
|
Description: Gnollssss!
Thunder Shock
Deals [4350 + (1305 x amount of player towers)] spell damage to a target creep. This ability has a 25% chance to recast itself when cast. Maximum of 1 extra cast. Level Bonus: +174 base spelldamage +52.2 spelldamage per player tower +1 extra cast at levels 15 and 25 AC_TYPE_OFFENSIVE_UNIT 12, 1200.00 range, 3.0s cooldown |
Download
Toggle Triggers Autocast
AUTOCAST_cooldown: 3.0
AUTOCAST_autoRange: 1200.00
AUTOCAST_manacost: 12
AUTOCAST_range: 1200.00
AUTOCAST_targetType: TARGET_TYPE_CREEPS
AUTOCAST_numBuffsBeforeIdle: 1
caster_art: Abilities\Spells\Orc\Purge\PurgeBuffTarget.mdl
target_art: Abilities\Spells\Other\Monsoon\MonsoonBoltTarget.mdl
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_UNIT
AUTOCAST_buffType: 0
AUTOCAST_isExtended: false
AUTOCAST_targetSelf: true
private function onAutocast takes Tower tower returns nothing
local Unit U = Event.getTarget()
local integer lvl = tower.getLevel()
local integer i = tower.userInt
local Iterate I
local boolean b
call tower.doSpellDamage( U, 4350.00 + 174.00 * lvl + ( 1305.00 + 52.2 * lvl ) * tower.getOwner().getNumTowers(), tower.calcSpellCritNoBonus() )
if tower.calcChance( 0.25 ) then
call tower.getOwner().displaySmallFloatingText( "MULTICAST!", tower, 0, 255, 0, 0.00 )
loop
exitwhen i <= 0
set I = Iterate.overUnitsInRangeOfCaster( tower, TARGET_CREEPS, 1200.00 )
set b = true
loop
if i <= 0 then
//enough hits
call I.destroy()
exitwhen true
endif
set U = I.next()
if U == 0 and b then
//no units near
return
endif
set b = false
exitwhen U == 0
call SFXAtUnit( "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl", U.getUnit() )
call tower.doSpellDamage( U, 4350.00 + 174.00 * lvl + ( 1305.00 + 52.2 * lvl ) * tower.getOwner().getNumTowers(), tower.calcSpellCritNoBonus() )
set i = i - 1
endloop
endloop
endif
endfunction
Header globals
MultiboardValues MBV
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
set MBV = MultiboardValues.create( 1 )
call MBV.setKey( 0, "Thunder Shock Dmg" )
endfunction
On Level Up function onLevelUp takes Tower tower returns nothing
local integer lvl = tower.getLevel()
if lvl < 15 then
set tower.userInt = 1
elseif lvl >= 15 and lvl < 25 then
set tower.userInt = 2
elseif lvl == 25 then
set tower.userInt = 3
endif
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
local integer lvl = tower.getLevel()
if lvl < 15 then
set tower.userInt = 1
elseif lvl >= 15 and lvl < 25 then
set tower.userInt = 2
elseif lvl == 25 then
set tower.userInt = 3
endif
endfunction
On Tower Details function onTowerDetails takes Tower tower returns MultiboardValues
local real r = 4350.00 + 174.00 * tower.getLevel() + ( 1305.00 + 52.2 * tower.getLevel() ) * tower.getOwner().getNumTowers()
call MBV.setValue( 0, R2S( r ) )
return MBV
endfunction
|
Description: