Broken Circle of Wind v1
50
|
ID: 312
Family ID:
Author: SternBogen / Natac & girlfriend
Rarity: uncommon
Element: storm
Attack Type: Physical
Attack Range: 1100
Attack CD: 1.4
Damage: 54-56
Status: Approved
|
Specials:
+70% dmg to air (+2%/lvl)
Wind of Death
On attack this tower has a 20% chance to catch a ground, non-boss unit in a cyclone for 0.5 seconds, dealing 20 physical damage to all units in 300 AoE when it falls back down. Falling champions deal 25% more damage. Level Bonus: +2 damage +0.3% chance to catch |
Download
Toggle Triggers Header globals
//@export
BuffType sternbogen_broken_wind
endglobals
// Creep got buffed -> move creep up
function cyclone_creep_up takes Buff b returns nothing
local Creep c = b.getBuffedUnit()
// (start) cyclone animation
set b.userInt = Effect.createAnimated("Abilities\\Spells\\NightElf\\Cyclone\\CycloneTarget.mdl", c.getX(), c.getY(), 0.0, 0.0)
call Effect(b.userInt).noDeathAnimation()
// move creep up
call c.adjustHeight(300, 1000)
endfunction
// turn the creep (cyclone) -> Periodic event
function cyclone_creep_turn takes Buff b returns nothing
local unit real_unit = b.getBuffedUnit().getUnit()
call SetUnitFacing(real_unit, GetUnitFacing(real_unit) + 150.0)
set real_unit = null
endfunction
// move creep down and do damage
function cyclone_creep_down takes Buff b returns nothing
local Tower t = b.getCaster()
local Creep c = b.getBuffedUnit()
local real ratio = 1
// set units back (down)
call c.adjustHeight(-300, 2500)
// remove the cyclone
call Effect(b.userInt).destroy()
// effects
call Effect.createSimpleAtUnit("Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl", c).destroy()
call Effect.createSimpleAtUnit("Abilities\\Weapons\\Bolt\\BoltImpact.mdl", c).destroy()
// do damage
if c.getSize() == SIZE_CHAMPION then
set ratio = 1.25
endif
call t.doAttackDamageAoEUnit(c, ratio * 300.0, b.userReal3, t.calcAttackMulticrit(0,0,0), 0.0)
endfunction
private function init takes nothing returns nothing
set sternbogen_broken_wind = BuffType.createDuplicate(cb_stun, 1.0, 0, false)
call sternbogen_broken_wind.setBuffIcon('@@0@@')
// on creation on buff ON the creep -> lift unit up
call sternbogen_broken_wind.addEventOnCreate(cyclone_creep_up)
// during buffed: periodic -> rotate creep
call sternbogen_broken_wind.addPeriodicEvent(cyclone_creep_turn, 0.1)
// buff ends -> unit down, damage or if creep gets killed while lift up
call sternbogen_broken_wind.addEventOnCleanup(cyclone_creep_down)
endfunction
On Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local Creep target = Event.getTarget()
local real damage = 20 + 2 * tower.getLevel()
local Buff b
if (target.getSize() == SIZE_MASS or target.getSize() == SIZE_NORMAL or target.getSize() == SIZE_CHAMPION) then
if(tower.calcChance(0.20 + (0.003 * tower.getLevel()))) then
set b = target.getBuffOfType(sternbogen_broken_wind)
if b != 0 then
set damage = RMaxBJ(b.userReal3, damage)
endif
set b = sternbogen_broken_wind.applyCustomTimed(tower, target, tower.getLevel(), 0.5)
if b != 0 then
set b.userReal3 = damage
endif
endif
endif
endfunction
|
Wooden Trap v1
50
|
ID: 325
Family ID:
Author: Boekie
Rarity: uncommon
Element: iron
Attack Type: Physical
Attack Range: 950
Attack CD: 1.3
Damage: 38-38
Status: Approved
|
Description: This trap is used to capture beasts but it works on other stuff too.
Activate Trap
Every 15 seconds this tower traps 3 creeps in 950 range, dealing 70 spelldamage and stunning them for 0.5 seconds. Level Bonus: +3 spelldamage -0.2 seconds cooldown |
Download
Toggle Triggers Header globals
endglobals
//@export
function trap takes Tower tower, real cooldown, real baseDamage, real damageAdd, real stunDuration, integer maxTargets returns nothing
local integer lvl = tower.getLevel()
local Iterate it = Iterate.overUnitsInRangeOfCaster(tower,TARGET_CREEPS,950)
local Unit next = it.nextRandom()
local integer numTargets = 0
loop
exitwhen next == 0
set numTargets = numTargets + 1
call cb_stun.applyOnlyTimed(tower, next, stunDuration)
call tower.doSpellDamage(next,baseDamage+lvl*damageAdd,tower.calcSpellCritNoBonus())
call SFXAtUnit("Abilities\\Spells\\Orc\\ReinforcedTrollBurrow\\ReinforcedTrollBurrowTarget.mdl",next.getUnit())
exitwhen numTargets >= maxTargets
set next = it.nextRandom()
endloop
if next != 0 then
call it.destroy()
endif
if numTargets > 0 then
call Event.getCurrentPeriodicEvent().enableAdvanced(cooldown - lvl*0.2, false) //Trapping successful; go into cooldown.
else
call Event.getCurrentPeriodicEvent().enableAdvanced(2, false) //Nothing trapped; go into a shorter cooldown.
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
endfunction
Periodic
PERIODIC_period: 2
function periodic takes Tower tower returns nothing
call trap(tower, 15, 70, 3, 0.5, 3)
endfunction
|
Ruined Monolith v1
50
|
ID: 638
Family ID:
Author: drol
Rarity: common
Element: storm
Attack Type: Physical
Attack Range: 1050
Attack CD: 1.5
Damage: 47-51
Status: Approved
|
Description: Covered with ancient runes from rituals practiced ages ago.
Specials:
Bounce attack:
3 targets
-50% damage per bounce
+10% dmg to air (+1%/lvl)
|
Download
|
Felweed v1
55
|
ID: 405
Family ID:
Author: SirCoqaLot.
Rarity: common
Element: fire
Attack Type: Decay
Attack Range: 750
Attack CD: 1
Damage: 49-49
Status: Approved
|
Description: Basic Tower that sometimes deals more damage.
Fireblossom
Every 7th attack deals 10% bonus damage. Every 8th attack deals 20% bonus damage. Every 9th attack deals 30% bonus damage. Every 10th attack deals 40% bonus damage. Level Bonus: +0.2% bonus damage every 7th attack. +0.4% bonus damage every 8th attack. +0.6% bonus damage every 9th attack. +0.8% bonus damage every 10th attack. |
Download
Toggle Triggers On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
local real damage = Event.damage
local integer level = tower.getLevel()
set tower.userInt = tower.userInt +1
set tower.userInt2 = tower.userInt2 +1
set tower.userInt3 = tower.userInt3 +1
set tower.userReal = tower.userReal +1
if tower.userInt >= 7 then
set Event.damage = Event.damage * (1.1 + level * 0.002)
set tower.userInt = 0
endif
if tower.userInt2 >= 8 then
set Event.damage = Event.damage * (1.2 + level * 0.004)
set tower.userInt2 = 0
endif
if tower.userInt3 >= 9 then
set Event.damage = Event.damage * (1.3 + level * 0.006)
set tower.userInt3 = 0
endif
if tower.userReal >= 10 then
set Event.damage = Event.damage * (1.4 +level * 0.008)
set tower.userReal = 0
endif
if Event.damage > damage then
call tower.getOwner().displaySmallFloatingText(I2S(R2I(Event.damage)),tower,255,150,150,0)
endif
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt = 0
set tower.userInt2 = 0
set tower.userInt3 = 0
set tower.userReal = 0
endfunction
|
Small Pocket Rocket v1
55
|
ID: 544
Family ID:
Author: Boekie
Rarity: common
Element: iron
Attack Type: Decay
Attack Range: 700
Attack CD: 1.65
Damage: 75-96
Status: Approved
|
Description: This tower attacks with rockets that deal splash damage and deal extra damage to mass.
Specials:
Splash attack: 125 AoE: 55% damage +20% dmg to masses (+2%/lvl) |
Download
|
Lunar Sentinel v1
60
|
ID: 5
Family ID:
Author: SirCoqaLot.
Rarity: uncommon
Element: astral
Attack Type: Energy
Attack Range: 1200
Attack CD: 2
Damage: 17-37
Status: Approved
|
Description: The spirit of a watcher left to look over the ruins.
Lunar Grace
Smites a target creep dealing 50 spelldamage to it. There is a 12.5% chance to empower the smite with lunar energy dealing 50 additional spell damage, stunning the target for 0.3 seconds and making it receive 12% more damage from spells for 2.5 seconds. Level Bonus: +2 inital and chanced spell damage +0.5% chance +20 initial damage at level 15 +3% spell damage received at level 15 +0.1 seconds stun at level 25 AC_TYPE_OFFENSIVE_UNIT 0, 1200 range, 2s cooldown |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 2
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: true
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_UNIT
AUTOCAST_manacost: 0
AUTOCAST_range: 1200
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: false
AUTOCAST_targetType: 0
target_art: Abilities\Spells\Items\AIil\AIilTarget.mdl
AUTOCAST_autoRange: 1200
private function onAutocast takes Tower tower returns nothing
local integer level = tower.getLevel()
local Unit target = Event.getTarget()
if level < 15 then
call tower.doSpellDamage(target,50+level*2,tower.calcSpellCritNoBonus())
else
call tower.doSpellDamage(target,70+level*2,tower.calcSpellCritNoBonus())
endif
if tower.calcChance(0.125 + level * 0.005) == true then
call tower.doSpellDamage(target,50 + level * 2,tower.calcSpellCritNoBonus())
if level < 25 then
call cb_stun.applyOnlyTimed(tower,target,0.3)
else
call cb_stun.applyOnlyTimed(tower,target,0.4)
endif
if level < 15 then
call sir_moonp_buff.applyAdvanced(tower,target,0,120,2.5)
else
call sir_moonp_buff.applyAdvanced(tower,target,0,150,2.5)
endif
endif
endfunction
Header globals
//@export
BuffType sir_moonp_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
local Modifier m = Modifier.create()
set sir_moonp_buff = BuffType.create(0,0,false)
call m.addModification(MOD_SPELL_DAMAGE_RECEIVED,0,0.001)
call sir_moonp_buff.setBuffIcon('@@0@@')
call sir_moonp_buff.setBuffModifier(m)
call sir_moonp_buff.setStackingGroup("sir_moonp_buff")
endfunction
|
Abandoned Pit v1
60
|
ID: 125
Family ID:
Author: drol
Rarity: common
Element: iron
Attack Type: Decay
Attack Range: 900
Attack CD: 1.85
Damage: 107-118
Status: Approved
|
Description: Sometimes even the most fruitless places still have some treasure left.
Specials:
+20% bounty collected (+0.5%/lvl) |
Download
|
Description: