Tiny Storm Lantern v1
250
|
ID: 380
Family ID:
Author: Boekie
Rarity: uncommon
Element: storm
Attack Type: Energy
Attack Range: 1000
Attack CD: 1.3
Damage: 207-207
Status: Approved
|
Burst Lightning
Has a 20% chance on attack to fire 2 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
ProjectileType ball
endglobals
public function hit takes Projectile p, Unit creep returns nothing
local Tower tower = p.getCaster()
call tower.doAttackDamage(creep,tower.getCurrentAttackDamageWithBonus(), tower.calcAttackMulticrit(0.0,0.0,0))
endfunction
//@export
function newAttack takes Tower tower, integer numShots, Creep creep returns nothing
local integer UID = creep.getUID()
local Iterate it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_CREEPS,creep,300)
local Creep next
call TriggerSleepAction(0.2)
set next = it.nextRandom()
loop
if next == 0 then
if creep.getUID() != UID then
return
endif
call Projectile.createFromUnitToUnit(ball,tower,1.0,0,tower,creep,true,false,false).setScale(0.50)
else
call Projectile.createFromUnitToUnit(ball,tower,1.0,0,tower,next,true,false,false).setScale(0.50)
set next = it.nextRandom()
endif
set numShots = numShots - 1
exitwhen numShots == 0
call TriggerSleepAction(0.2)
endloop
if next != 0 then
call it.destroy()
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 ball = ProjectileType.create("Abilities\\Spells\\Orc\\Purge\\PurgeBuffTarget.mdl",4,1000)
call ball.enableHoming(ProjectileTargetEvent.hit,0)
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 = 2
local integer twrLevel = tower.getLevel()
if twrLevel == 25 then
set numShots = 4
elseif twrLevel >= 15 then
set numShots = 3
endif
call newAttack(tower,numShots,creep)
endfunction
|
Glaring Solar Orb v1
250
|
ID: 389
Family ID:
Author: MasterCassim
Rarity: common
Element: astral
Attack Type: Energy
Attack Range: 850
Attack CD: 1.3
Damage: 242-242
Status: Approved
|
Description: The blazing light of the sun makes its targets glow, especially undead ones.
Specials:
Splash attack: 125 AoE: 45% damage 225 AoE: 20% damage +15% dmg to undead
Afterglow
The Orb has a 5% chance to reduce armor of units it damages by 3 for 5 seconds. This chance is doubled for bosses. Level Bonus: +0.6% chance +0.25 seconds duration |
Download
Toggle Triggers Header globals
//@import
BuffType cassimArmor
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
function onDamage takes Tower tower returns nothing
local integer lvl = tower.getLevel()
local Creep creep = Event.getTarget()
local real sizeFactor = 1.0
if creep.getSize() == SIZE_BOSS then
set sizeFactor = 2.0
endif
if(tower.calcChance((0.05+lvl*0.006)*sizeFactor)) then
call cassimArmor.applyCustomTimed(tower,creep,3,5+lvl*0.25)
endif
endfunction
|
Militia Watchtower v1
250
|
ID: 417
Family ID:
Author: ShyGnome
Rarity: uncommon
Element: iron
Attack Type: Physical
Attack Range: 850
Attack CD: 0.7
Damage: 71-71
Status: Approved
|
Description: Militia guardians rain axes at the heads of the enemies. However, they are not very accurate, and afraid of undead and large creeps.
Specials:
-20% dmg to bosses (+0.6%/lvl) -20% dmg to undead (+0.4%/lvl) +20% dmg to nature (+0.4%/lvl)
Hail of Axes
Militia guardians throw axes to up to 3 enemies at once, but each attack has 33% chance to miss. If there are less creeps than attacks, the remaining axes will hit the main target. Level Bonus: -1% chance to miss +1 target at levels 15 and 25 |
Download
Toggle Triggers Header globals
//@export
ProjectileType MilitiaAxe
endglobals
function MilitiaAxeHit takes Projectile p, Unit target returns nothing
local Tower tower = p.getCaster()
if tower.calcBadChance(0.33-0.01*tower.getLevel()) then
call tower.getOwner().displayFloatingTextX("Miss",tower,255, 0, 0,255,0.05,0.0,2.0)
else
call tower.doAttackDamage(target,tower.getCurrentAttackDamageWithBonus(),tower.calcAttackCritNoBonus())
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 MilitiaAxe = ProjectileType.createInterpolate("Abilities\\Weapons\\Axe\\AxeMissile.mdl",800)
call MilitiaAxe.setEventOnInterpolationFinished(MilitiaAxeHit)
endfunction
On Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local integer attacks = 2
local boolean add = false
local Unit maintarget = Event.getTarget()
local Unit target
local Iterate it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_TYPE_CREEPS,maintarget,450)
local real sidearc = 0.20
local boolean itDestroyed = false
if tower.getLevel() >= 15 then
set attacks = attacks + 1
endif
if tower.getLevel() >= 25 then
set attacks = attacks + 1
endif
loop
exitwhen attacks == 0 // Exit when all attacks are fired
// If the Iterate is not destroyed, get the next target
if not itDestroyed then
set target = it.next()
// If there are no more targets
if target == 0 then
set itDestroyed = true // Iterate is destroyed (auto destroy)
set target = maintarget // target is the maintarget now
endif
endif
// If there are no more units, shoot at the maintarget (itDestroyed). If there are units then don't shoot at the maintarget
if itDestroyed or target != maintarget then
call Projectile.createBezierInterpolationFromUnitToUnit(MilitiaAxe,tower,0,0,tower,target,0,sidearc,0,true).setScale(0.40)
set attacks = attacks - 1
set sidearc = -sidearc
if add then
set sidearc = sidearc + 0.20
endif
set add = not add
endif
endloop
// If the Iterate is not destroyed yet, destroy it
if not itDestroyed then
call it.destroy()
endif
endfunction
On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
if tower.calcBadChance(0.33-0.01*tower.getLevel()) then
set Event.damage = 0
call tower.getOwner().displayFloatingTextX("Miss",tower,255, 0, 0,255,0.05,0.0,2.0)
endif
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt = 1 // Save the family member (1 = first member)
set tower.userInt2 = 0 // Used to save the buff (double linked list)
endfunction
|
Restored Cage v1
250
|
ID: 581
Family ID:
Author: Chronos
Rarity: common
Element: darkness
Attack Type: Decay
Attack Range: 800
Attack CD: 1.5
Damage: 299-304
Status: Approved
|
Description: Common darkness tower, adept at eliminating magical, nature and undead foes.
Banish
Magic, undead and nature creeps damaged by this tower suffer an additional 45% of that damage as spelldamage. Level Bonus: +1.3% damage |
Download
Toggle Triggers On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
local Unit creep = Event.getTarget()
if creep.getCategory() <= CATEGORY_NATURE then
call tower.doSpellDamage(creep, Event.damage * (0.45 + (0.013 * tower.getLevel())), tower.calcSpellCritNoBonus())
call SFXAtUnit("Abilities\\Spells\\NightElf\\ManaBurn\\ManaBurnTarget.mdl", creep.getUnit())
endif
endfunction
|
Embershell Turtle Nestling v1
260
|
ID: 533
Family ID:
Author: Velex
Rarity: uncommon
Element: fire
Attack Type: Decay
Attack Range: 800
Attack CD: 0.25
Damage: 182-181
Mana: 12
Mana regen: 1
Status: Approved
|
Description: Embershell Turtles are volatile creatures who tend to sporadically attack just about everything. Luckily, they tend to run out of steam rather quickly.
Specials:
+0.6 mana/lvl
Overheat
Each attack costs 1 mana, which is regenerated at a rate of 1 mana per second. |
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 (mana < 1) then
call tower.orderStop()
else
call SetUnitState(towerUnit , UNIT_STATE_MANA, mana-1)
endif
set towerUnit = null
endfunction
|
Blooming Chasm v1
275
|
ID: 681
Family ID:
Author: SirCoqaLot.
Rarity: uncommon
Element: nature
Attack Type: Essence
Attack Range: 950
Attack CD: 1.4
Damage: 289-289
Status: Approved
|
Description: Basic tower that has a small chance to root creeps it attacks.
Entangle
Has a 12.5% chance to entangle the attacked target for 2.25 seconds. Entangled targets are immobile and suffer 660 damage per second. Cannot entangle air or boss units. Level Bonus: +0.2% chance to entangle +33 damage per second |
Download
Toggle Triggers Header globals
//@import
BuffType chasm_entangle
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.125
ONDAMAGE_chanceLevelAdd: 0.002
function onDamage takes Tower tower returns nothing
local Creep target = Event.getTarget()
if target.getSize() < SIZE_BOSS and target.getSize() != SIZE_AIR then
call chasm_entangle.apply(tower, target, 1)
call target.reorder()
endif
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt = 660 //base entagle dps
endfunction
|
Digging Hole v1
280
|
ID: 126
Family ID:
Author: drol
Rarity: common
Element: iron
Attack Type: Decay
Attack Range: 900
Attack CD: 1.85
Damage: 508-542
Status: Approved
|
Description: Sometimes even the most fruitless places still have some treasure left.
Specials:
+20% bounty collected (+0.6%/lvl) |
Download
|
Description: