Fire Battery v1
500
|
ID: 351
Family ID:
Author: tolleder
Rarity: rare
Element: fire
Attack Type: Elemental
Attack Range: 800
Attack CD: 3
Damage: 822-822
Mana: 250
Mana regen: 2
Status: Approved
|
Specials:
+10 mana/lvl
Battery Overload
The tower attacks creeps in a range of 1200 every 0.2 seconds till all mana is gone. Each attack (or try to attack) costs 10 mana, deals 300 points damage and incinerates the target. Level Bonus: +12 damage AC_TYPE_OFFENSIVE_IMMEDIATE 100, 1200 range, 20.0s cooldown
Incinerate
This tower's attacks set the target on fire. A burning creep takes 5% more damage from Fire towers and receives 120 spelldamage every second for 9 seconds Level Bonus: +5 damage +0.3 seconds duration |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 20.0
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_IMMEDIATE
AUTOCAST_manacost: 100
AUTOCAST_range: 1200
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: false
AUTOCAST_targetType: 0
target_art:
AUTOCAST_autoRange: 800
private function onAutocast takes Tower tower returns nothing
local unit towerUnit=tower.getUnit()
local PeriodicEvent pE
call SetUnitState(towerUnit,UNIT_STATE_MANA,GetUnitState(towerUnit,UNIT_STATE_MANA)+100)
if tower.userInt!=0 then
set pE=tower.userInt
call pE.enable()
endif
set towerUnit = null
endfunction
Header globals
BuffType slowAndDamage
ProjectileType pT
endglobals
public function damagePeriodic takes Buff b returns nothing //Poisondamage
local Tower tower=b.getCaster()
call tower.doSpellDamage(b.getBuffedUnit(),b.getPower()*5+120,tower.calcSpellCritNoBonus())
endfunction
public function hit takes Projectile p, Unit creep returns nothing
local Tower tower=p.getCaster()
call tower.doSpellDamage(creep,tower.getLevel()*12+300,tower.calcSpellCritNoBonus())
call slowAndDamage.apply(tower,creep,tower.getLevel())
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 slowAndDamage=BuffType.create(9,0.3,false)
// new fire weakening
call m.addModification(MOD_DMG_FROM_FIRE, 5/100.0, 0)
call slowAndDamage.setBuffModifier(m)
// end new fire
call slowAndDamage.setBuffIcon('@@0@@')
call slowAndDamage.addPeriodicEvent(EventHandler.damagePeriodic,1.0)
call slowAndDamage.setStackingGroup("FireBattery")
set pT=ProjectileType.create("Abilities\\Weapons\\FireBallMissile\\FireBallMissile.mdl",10.0,1200.0)
call pT.enableHoming(ProjectileTargetEvent.hit,0.0)
endfunction
On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
call slowAndDamage.apply(tower,Event.getTarget(),tower.getLevel())
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt=0
call SetUnitState(tower.getUnit(),UNIT_STATE_MANA,0)
endfunction
Periodic
PERIODIC_period: 0.2
function periodic takes Tower tower returns nothing
local unit towerUnit=tower.getUnit()
local Iterate inRange
local real numResults=0.0
local Unit result
local Unit next
local Projectile p
local PeriodicEvent pE
if GetUnitState(towerUnit,UNIT_STATE_MANA)>10 then
//Random creep in range
set inRange=Iterate.overUnitsInRangeOfCaster(tower,TARGET_CREEPS,1200)
loop
set next=inRange.next()
exitwhen next==0
set numResults=numResults+1.0
if GetRandomReal(0.0,1.0)<=1.0/numResults then
set result=next
endif
endloop
if numResults>0.5 then
//if GetRandomReal(0.0,3.0)<=2.0 then
//if GetRandomReal(0.0,2.0)<=1.0 then
set p= Projectile.createFromPointToUnit(pT,tower,1.0,1.0,GetUnitX(towerUnit)+30.0,GetUnitY(towerUnit)+25.0,190.0,result,true,false,false)
//else
//set p= Projectile.createFromPointToUnit(pT,tower,1.0,1.0,GetUnitX(towerUnit)-32.0,GetUnitY(towerUnit)-2.0,147.0,result,true,false,false)
//else
//set p= Projectile.createFromPointToUnit(pT,tower,1.0,1.0,GetUnitX(towerUnit)-32.0,GetUnitY(towerUnit)-2.0,147.0,result,true,false,false)
//endif
call p.setScale(0.5)
endif
//Manacost
call SetUnitState(towerUnit,UNIT_STATE_MANA,GetUnitState(towerUnit,UNIT_STATE_MANA)-10)
else
set pE=Event.getCurrentPeriodicEvent()
set tower.userInt=pE
call pE.disable()
endif
set towerUnit = null
endfunction
|
Fire Storage v1
1200
|
ID: 352
Family ID:
Author: tolleder
Rarity: rare
Element: fire
Attack Type: Elemental
Attack Range: 800
Attack CD: 3
Damage: 1973-1973
Mana: 300
Mana regen: 2
Status: Approved
|
Description: A tower which can store fire for later use.
Specials:
+10 mana/lvl
Storage Overload
The tower attacks creeps in a range of 1200 every 0.2 seconds till all mana is gone. Each attack (or try to attack) costs 10 mana, deals 750 points damage and incinerates the target. Level Bonus: +30 damage AC_TYPE_OFFENSIVE_IMMEDIATE 100, 1200 range, 20.0s cooldown
Incinerate
This tower's attacks set the target on fire. A burning creep takes 10% more damage from Fire towers and receives 300 spelldamage every second for 9 seconds Level Bonus: +12 damage +0.3 seconds duration |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 20.0
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_IMMEDIATE
AUTOCAST_manacost: 100
AUTOCAST_range: 1200
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: false
AUTOCAST_targetType: 0
target_art:
AUTOCAST_autoRange: 800
private function onAutocast takes Tower tower returns nothing
local unit towerUnit=tower.getUnit()
local PeriodicEvent pE
call SetUnitState(towerUnit,UNIT_STATE_MANA,GetUnitState(towerUnit,UNIT_STATE_MANA)+100)
if tower.userInt!=0 then
set pE=tower.userInt
call pE.enable()
endif
set towerUnit = null
endfunction
Header globals
BuffType slowAndDamage
ProjectileType pT
endglobals
public function damagePeriodic takes Buff b returns nothing //Poisondamage
local Tower tower=b.getCaster()
call tower.doSpellDamage(b.getBuffedUnit(),b.getPower()*12+300,tower.calcSpellCritNoBonus())
endfunction
public function hit takes Projectile p, Unit creep returns nothing
local Tower tower=p.getCaster()
call tower.doSpellDamage(creep,tower.getLevel()*30+750,tower.calcSpellCritNoBonus())
call slowAndDamage.applyCustomPower(tower,creep,tower.getLevel()+26,tower.getLevel())
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 slowAndDamage=BuffType.create(9,0.3,false)
// new fire weakening
call m.addModification(MOD_DMG_FROM_FIRE, 10/100.0, 0)
call slowAndDamage.setBuffModifier(m)
// end new fire
call slowAndDamage.setBuffIcon('@@0@@')
call slowAndDamage.addPeriodicEvent(EventHandler.damagePeriodic,1.0)
call slowAndDamage.setStackingGroup("FireBattery")
set pT=ProjectileType.create("Abilities\\Weapons\\FireBallMissile\\FireBallMissile.mdl",10.0,1200.0)
call pT.enableHoming(ProjectileTargetEvent.hit,0.0)
endfunction
On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
call slowAndDamage.applyCustomPower(tower,Event.getTarget(),tower.getLevel()+26,tower.getLevel())
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt=0
call SetUnitState(tower.getUnit(),UNIT_STATE_MANA,0)
endfunction
Periodic
PERIODIC_period: 0.2
function periodic takes Tower tower returns nothing
local unit towerUnit=tower.getUnit()
local Iterate inRange
local real numResults=0.0
local Unit result
local Unit next
local Projectile p
local PeriodicEvent pE
if GetUnitState(towerUnit,UNIT_STATE_MANA)>10 then
//Random creep in range
set inRange=Iterate.overUnitsInRangeOfCaster(tower,TARGET_CREEPS,1200)
loop
set next=inRange.next()
exitwhen next==0
set numResults=numResults+1.0
if GetRandomReal(0.0,1.0)<=1.0/numResults then
set result=next
endif
endloop
if numResults>0.5 then
//if GetRandomReal(0.0,3.0)<=2.0 then
if GetRandomReal(0.0,2.0)<=1.0 then
set p= Projectile.createFromPointToUnit(pT,tower,1.0,1.0,GetUnitX(towerUnit)-30.0,GetUnitY(towerUnit)-17.0,205.0,result,true,false,false)
else
set p= Projectile.createFromPointToUnit(pT,tower,1.0,1.0,GetUnitX(towerUnit)+33.0,GetUnitY(towerUnit)+17.0,140.0,result,true,false,false)
endif
//else
//set p= Projectile.createFromPointToUnit(pT,tower,1.0,1.0,GetUnitX(towerUnit)-32.0,GetUnitY(towerUnit)-2.0,147.0,result,true,false,false)
//endif
call p.setScale(0.5)
endif
//Manacost
call SetUnitState(towerUnit,UNIT_STATE_MANA,GetUnitState(towerUnit,UNIT_STATE_MANA)-10)
else
set pE=Event.getCurrentPeriodicEvent()
set tower.userInt=pE
call pE.disable()
endif
set towerUnit = null
endfunction
|
Fire Accumulator v1
3000
|
ID: 353
Family ID:
Author: tolleder
Rarity: rare
Element: fire
Attack Type: Elemental
Attack Range: 800
Attack CD: 3
Damage: 4933-4933
Mana: 350
Mana regen: 2
Status: Approved
|
Description: A tower which can store fire for later use.
Specials:
+10 mana/lvl
Accumulator Overload
The tower attacks creeps in a range of 1200 every 0.2 seconds till all mana is gone. Each attack (or try to attack) costs 10 mana, deals 1800 points damage and incinerates the target. Level Bonus: +72 damage AC_TYPE_OFFENSIVE_IMMEDIATE 100, 1200 range, 20.0s cooldown
Incinerate
This tower's attacks set the target on fire. A burning creep takes 15% more damage from Fire towers and receives 800 spelldamage every second for 9 seconds Level Bonus: +32 damage +0.3 seconds duration |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 20.0
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_IMMEDIATE
AUTOCAST_manacost: 100
AUTOCAST_range: 1200
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: false
AUTOCAST_targetType: 0
target_art:
AUTOCAST_autoRange: 800
private function onAutocast takes Tower tower returns nothing
local unit towerUnit=tower.getUnit()
local PeriodicEvent pE
call SetUnitState(towerUnit,UNIT_STATE_MANA,GetUnitState(towerUnit,UNIT_STATE_MANA)+100)
if tower.userInt!=0 then
set pE=tower.userInt
call pE.enable()
endif
set towerUnit = null
endfunction
Header globals
BuffType slowAndDamage
ProjectileType pT
endglobals
public function damagePeriodic takes Buff b returns nothing //Poisondamage
local Tower tower=b.getCaster()
call tower.doSpellDamage(b.getBuffedUnit(),b.getPower()*32+800,tower.calcSpellCritNoBonus())
endfunction
public function hit takes Projectile p, Unit creep returns nothing
local Tower tower=p.getCaster()
call tower.doSpellDamage(creep,tower.getLevel()*72+1800,tower.calcSpellCritNoBonus())
call slowAndDamage.applyCustomPower(tower,creep,tower.getLevel()+52,tower.getLevel())
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 slowAndDamage=BuffType.create(9,0.3,false)
// new fire weakening
call m.addModification(MOD_DMG_FROM_FIRE, 15/100.0, 0)
call slowAndDamage.setBuffModifier(m)
// end new fire
call slowAndDamage.setBuffIcon('@@0@@')
call slowAndDamage.addPeriodicEvent(EventHandler.damagePeriodic,1.0)
call slowAndDamage.setStackingGroup("FireBattery")
set pT=ProjectileType.create("Abilities\\Weapons\\FireBallMissile\\FireBallMissile.mdl",10.0,1200.0)
call pT.enableHoming(ProjectileTargetEvent.hit,0.0)
endfunction
On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
call slowAndDamage.applyCustomPower(tower,Event.getTarget(),tower.getLevel()+52,tower.getLevel())
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt=0
call SetUnitState(tower.getUnit(),UNIT_STATE_MANA,0)
endfunction
Periodic
PERIODIC_period: 0.2
function periodic takes Tower tower returns nothing
local unit towerUnit=tower.getUnit()
local Iterate inRange
local real numResults=0.0
local Unit result
local Unit next
local Projectile p
local PeriodicEvent pE
if GetUnitState(towerUnit,UNIT_STATE_MANA)>10 then
//Random creep in range
set inRange=Iterate.overUnitsInRangeOfCaster(tower,TARGET_CREEPS,1200)
loop
set next=inRange.next()
exitwhen next==0
set numResults=numResults+1.0
if GetRandomReal(0.0,1.0)<=1.0/numResults then
set result=next
endif
endloop
if numResults>0.5 then
if GetRandomReal(0.0,3.0)<=2.0 then
if GetRandomReal(0.0,2.0)<=1.0 then
set p= Projectile.createFromPointToUnit(pT,tower,1.0,1.0,GetUnitX(towerUnit)-45.0,GetUnitY(towerUnit),217.0,result,true,false,false)
else
set p= Projectile.createFromPointToUnit(pT,tower,1.0,1.0,GetUnitX(towerUnit)+28.0,GetUnitY(towerUnit)+10.0,166.0,result,true,false,false)
endif
else
set p= Projectile.createFromPointToUnit(pT,tower,1.0,1.0,GetUnitX(towerUnit)+40.0,GetUnitY(towerUnit)-46.0,108.0,result,true,false,false)
endif
call p.setScale(0.5)
endif
//Manacost
call SetUnitState(towerUnit,UNIT_STATE_MANA,GetUnitState(towerUnit,UNIT_STATE_MANA)-10)
else
set pE=Event.getCurrentPeriodicEvent()
set tower.userInt=pE
call pE.disable()
endif
set towerUnit = null
endfunction
|
Description: