Snow Stalker v1
700
|
ID: 104
Family ID:
Author: drol
Rarity: uncommon
Element: ice
Attack Type: Magic
Attack Range: 850
Attack CD: 1.3
Damage: 541-620
Mana: 12
Mana regen: 1
Status: Approved
|
Specials:
+4% mana regen/lvl
Ice Claw
Ravages a target creep in 850 range, causing it to suffer 200 spell damage per second and be slowed by 30%. Effect lasts 5 seconds. Level Bonus: +8 spell damage per second +0.2 second duration AC_TYPE_OFFENSIVE_UNIT 10, 850 range, 2s cooldown
Frenzy
Each time Ice Claw is cast, attackspeed is increased by 0.5% permanently. This has a maximum of 125% attack speed increase. |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 2
AUTOCAST_numBuffsBeforeIdle: 1
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_UNIT
AUTOCAST_manacost: 10
AUTOCAST_range: 850
AUTOCAST_buffType: drol_tundraStalker
AUTOCAST_targetSelf: false
AUTOCAST_targetType: TARGET_TYPE_CREEPS
target_art:
AUTOCAST_autoRange: 850
private function onAutocast takes Tower tower returns nothing
if tower.userReal < 1.25 then
set tower.userReal = tower.userReal + 0.005
call tower.modifyProperty(MOD_ATTACKSPEED, 0.005)
endif
call SFXAtUnit("Abilities\\Spells\\Other\\FrostBolt\\FrostBoltMissile.mdl", Event.getTarget().getUnit())
call SetUnitVertexColor( Event.getTarget().getUnit(), 100, 100, 255, 255 )
set drol_tundraStalker.applyCustomTimed(tower, Event.getTarget(), 2, 5. + 0.2 * tower.getLevel()).userReal = 200. + 8. * tower.getLevel()
endfunction
Header globals
//@import
BuffType drol_tundraStalker
//@import
MultiboardValues drol_tundraStalkerValues
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
local Tower preceding = Event.getPrecedingTower()
if preceding.getFamily() == tower.getFamily() then
set tower.userReal = preceding.userReal
call tower.modifyProperty(MOD_ATTACKSPEED, preceding.userReal )
else
set tower.userReal = 0.
endif
endfunction
On Tower Details
goldcost: 0
function onTowerDetails takes Tower tower returns MultiboardValues
call drol_tundraStalkerValues.setValue(0, I2S(R2I(tower.userReal * 100)) + "%")
return drol_tundraStalkerValues
endfunction
|
Little Phoenix v1
700
|
ID: 147
Family ID:
Author: Der_kleine_Tomy
Rarity: rare
Element: fire
Attack Type: Elemental
Attack Range: 850
Attack CD: 2.5
Damage: 832-832
Status: Approved
|
Description: A little phoenix which can burn more than 1 target with its attacks.
Specials:
+20% dmg to nature (+1%/lvl)
Eruption
When Phoenixfire expires, it erupts and deals 100 elemental damage per armor point the creep is missing in 200 range around its target. Additionally the target regains only 70% of its armor. Creeps further away recieve less damage. This ability can be cast to make Phoenixfire expire immediately. Level Bonus: -1% armor regain AC_TYPE_NOAC_IMMEDIATE 0, 0.0 range, 1.0s cooldown
Phoenixfire
The Little Phoenix attacks up to 2 targets at once. If there are less creeps than attacks, the remaining attacks will hit the main target. The armor of attacked creeps melts, reducing it by 0.5 for 5 seconds. This buff is stackable. Level Bonus: +0.01 armor reduction +1 target at level 15 |
Download
Toggle Triggers Autocast
AUTOCAST_cooldown: 1.0
AUTOCAST_autoRange: 0.0
AUTOCAST_manacost: 0
AUTOCAST_range: 0.0
AUTOCAST_targetType: 0
AUTOCAST_numBuffsBeforeIdle: 0
caster_art:
target_art:
AUTOCAST_autocastType: AC_TYPE_NOAC_IMMEDIATE
AUTOCAST_buffType: 0
AUTOCAST_isExtended: false
AUTOCAST_targetSelf: true
private function onAutocast takes Tower tower returns nothing
local Buff b
local Iterate it = Iterate.overUnitsInRangeOfCaster(tower, TARGET_TYPE_CREEPS, 3000.0)
local Unit u
loop
set u = it.next()
exitwhen u == 0
set b = u.getBuffOfType(tomy_PhoenixFireBuff)
if b != 0 then
call b.removeBuff()
endif
endloop
endfunction
Header globals
//@export
ProjectileType tomy_PhoenixPT
//@export
BuffType tomy_PhoenixFireBuff
boolean purged = false
endglobals
function tomy_PhoenixAttackHit takes Projectile p, Unit target returns nothing
local Tower tower = p.getCaster()
local Buff b = target.getBuffOfType(tomy_PhoenixFireBuff)
local integer familyMember = tower.userInt
local integer level = tower.getLevel()
local real armorLoss
if familyMember == 1 then
set armorLoss = 0.50 + 0.01 * level
elseif familyMember == 2 then
set armorLoss = 0.60 + 0.015 * level
elseif familyMember == 3 then
set armorLoss = 0.70 + 0.020 * level
endif
if b != 0 then
call tomy_PhoenixFireBuff.apply(tower, target, b.getPower() + R2I(armorLoss * 100.0))
else
call tomy_PhoenixFireBuff.apply(tower, target, R2I(armorLoss * 100.0))
endif
call tower.doAttackDamage(target,tower.getCurrentAttackDamageWithBonus(),tower.calcAttackMulticrit(0,0,0))
endfunction
function tomy_PhoenixFireBuffPurged takes Buff b returns nothing
set purged = true
endfunction
function tomy_PhoenixFireBuffExpired takes Buff b returns nothing
local integer power = b.getPower()
local Unit target = b.getBuffedUnit()
local Tower tower = b.getCaster()
local integer level = tower.getLevel()
local integer familyMember = tower.userInt
local real damagePerPower // 100 power = -1.00 armor
local real armorRegainFactor
local real damageMultiplier = tower.getCurrentAttackDamageWithBonus() / tower.getBaseDamage()
if familyMember == 1 then
set damagePerPower = 1.0
set armorRegainFactor = 0.70 - 0.01 * level
elseif familyMember == 2 then
set damagePerPower = 2.6
set armorRegainFactor = 0.60 - 0.015 * level
elseif familyMember == 3 then
set damagePerPower = 4.4
set armorRegainFactor = 0.50 - 0.020 * level
endif
if not purged then
set damagePerPower = damagePerPower * damageMultiplier
call tower.doAttackDamageAoEUnit(target, 200.0 , power * damagePerPower, tower.calcAttackMulticrit(0,0,0),0.5)
call SFXAtUnit("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl", target.getUnit())
endif
call target.modifyProperty(MOD_ARMOR, -power / 100.0 * (1 - armorRegainFactor))
set purged = false
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()
call m.addModification(MOD_ARMOR,0,-0.01)
set tomy_PhoenixPT = ProjectileType.createInterpolate("Abilities\\Weapons\\PhoenixMissile\\Phoenix_Missile.mdl",800)
call tomy_PhoenixPT.setEventOnInterpolationFinished(ProjectileTargetEvent.tomy_PhoenixAttackHit)
set tomy_PhoenixFireBuff = BuffType.create(5.0,0,false)
call tomy_PhoenixFireBuff.setBuffIcon('@@0@@')
call tomy_PhoenixFireBuff.setBuffModifier(m)
call tomy_PhoenixFireBuff.addEventOnCleanup(EventHandler.tomy_PhoenixFireBuffExpired)
call tomy_PhoenixFireBuff.setEventOnPurge(EventHandler.tomy_PhoenixFireBuffPurged)
endfunction
On Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local integer attacks = 1
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
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(tomy_PhoenixPT,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
local Unit target = Event.getTarget()
local Buff b = target.getBuffOfType(tomy_PhoenixFireBuff)
local integer level = tower.getLevel()
local real armorLoss = 0.50 + 0.01 * level
if b != 0 then
call tomy_PhoenixFireBuff.apply(tower, target, b.getPower() + R2I(armorLoss * 100.0))
else
call tomy_PhoenixFireBuff.apply(tower, target, R2I(armorLoss * 100.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)
call AddUnitAnimationProperties(tower.getUnit(), "stand alternate", false)
endfunction
|
Burning Torch v1
700
|
ID: 228
Family ID:
Author: Boekie
Rarity: common
Element: fire
Attack Type: Elemental
Attack Range: 900
Attack CD: 0.9
Damage: 484-484
Mana: 35
Mana regen: 2
Status: Approved
|
Description: This tower uses magical flames to strike multiple targets.
Fire Blast
Releases a blast of fire that strikes all targets in 200 AoE around the main target for 600 damage. Level Bonus: +30 damage. AC_TYPE_OFFENSIVE_UNIT 20, 900 range, 1s cooldown |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 1
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_UNIT
AUTOCAST_manacost: 20
AUTOCAST_range: 900
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: false
AUTOCAST_targetType: 0
target_art:
AUTOCAST_autoRange: 900
private function onAutocast takes Tower tower returns nothing
call SFXAtUnit("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl",Event.getTarget().getUnit())
call tower.doSpellDamageAoEUnit(Event.getTarget(), 200, 600 + tower.getLevel() * 60, tower.calcSpellCritNoBonus(), 0.0)
endfunction
|
Lightning Rod v1
700
|
ID: 233
Family ID:
Author: Boekie
Rarity: common
Element: storm
Attack Type: Energy
Attack Range: 1200
Attack CD: 1.2
Damage: 548-567
Mana: 35
Mana regen: 2
Status: Approved
|
Description: A storm tower that releases a magic lighting bolt.
Release Lightning
This tower releases a lightning bolt that strikes the target for 700 damage. Level Bonus: +35 damage. AC_TYPE_OFFENSIVE_UNIT 20, 1200 range, 1s cooldown |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 1
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: false
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_UNIT
AUTOCAST_manacost: 20
AUTOCAST_range: 1200
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: false
AUTOCAST_targetType: 0
target_art:
AUTOCAST_autoRange: 1200
private function onAutocast takes Tower tower returns nothing
local Unit creep = Event.getTarget()
call tower.doSpellDamage(creep,700.0+(tower.getLevel()*35.0),tower.calcSpellCritNoBonus())
call SFXOnUnit("Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl",creep.getUnit(),"origin")
endfunction
|
Magnataur Destroyer v1
700
|
ID: 237
Family ID:
Author: drol/mOck
Rarity: uncommon
Element: ice
Attack Type: Elemental
Attack Range: 900
Attack CD: 1.7
Damage: 1111-1122
Status: Approved
|
Description: Roaming on the Frozen Wastes, the Magnataur Destroyer seeks new challenges to beat.
Frozen Spears
Has a 12% chance to deal 50% more damage and stun the target for 0.5 seconds. Level Bonus: +3% damage +0.01 seconds |
Download
Toggle Triggers On Damage
ONDAMAGE_chance: .12
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
local Unit creep = Event.getTarget()
local real level = tower.getLevel()
if Event.isMainTarget() == true then
set Event.damage = Event.damage*(1.5+(.03*level))
call SFXAtUnit("Objects\\Spawnmodels\\Critters\\Albatross\\CritterBloodAlbatross.mdl", creep.getUnit())
call cb_stun.applyOnlyTimed(tower, creep, 0.5+tower.getLevel()*0.01)
call tower.getOwner().displaySmallFloatingText(I2S(R2I(Event.damage)),tower,255,150,150,0)
endif
endfunction
|
Furbolg v1
700
|
ID: 240
Family ID:
Author: geX
Rarity: uncommon
Element: nature
Attack Type: Physical
Attack Range: 900
Attack CD: 2
Damage: 685-1385
Status: Approved
|
Description: A friendly creature as long as you don't make it angry. Unfortunately it gets angry pretty fast.
Specials:
+20% dmg to orcs
Rampage
Has a 14% chance on attack to go into a rampage for 4.0 seconds. While in rampage, it has +150% attackspeed, +25% critical strike chance and +75% critical strike damage. Cannot retrigger while in rampage! Level Bonus: +0.08 sec duration +2% attackspeed +1 multicrit at lvl 15 and 25 |
Download
Toggle Triggers Header globals
//@export
BuffType gex_rage_buff
//@export
BuffType gex_rage_buff15
//@export
BuffType gex_rage_buff25
endglobals
private function init takes nothing returns nothing
local Modifier m = Modifier.create()
call m.addModification(MOD_ATTACKSPEED,1.5,0.01)
call m.addModification(MOD_ATK_CRIT_CHANCE,0.25,0.0)
call m.addModification(MOD_ATK_CRIT_DAMAGE,0.75,0.0)
set gex_rage_buff = BuffType.create(0.0,0.0,true) //0.0 time since I will apply it custom timed
call gex_rage_buff.setBuffModifier(m)
call gex_rage_buff.setBuffIcon('@@0@@')
call gex_rage_buff.setStackingGroup("gex_rage")
//level 15
set m = Modifier.create()
call m.addModification(MOD_ATTACKSPEED,1.5,0.01)
call m.addModification(MOD_ATK_CRIT_CHANCE,0.25,0.0)
call m.addModification(MOD_ATK_CRIT_DAMAGE,0.75,0.0)
call m.addModification(MOD_MULTICRIT_COUNT,1.0,0.0) //1x multicrit
set gex_rage_buff15 = BuffType.create(0.0,0.0,true)
call gex_rage_buff15.setBuffModifier(m)
call gex_rage_buff15.setBuffIcon('@@0@@')
call gex_rage_buff15.setStackingGroup("gex_rage")
//level 25
set m = Modifier.create()
call m.addModification(MOD_ATTACKSPEED,1.5,0.01)
call m.addModification(MOD_ATK_CRIT_CHANCE,0.25,0.0)
call m.addModification(MOD_ATK_CRIT_DAMAGE,0.75,0.0)
call m.addModification(MOD_MULTICRIT_COUNT,2.0,0.0) //2x multicrit
set gex_rage_buff25 = BuffType.create(0.0,0.0,true)
call gex_rage_buff25.setBuffModifier(m)
call gex_rage_buff25.setBuffIcon('@@0@@')
call gex_rage_buff25.setStackingGroup("gex_rage")
endfunction
On Attack
ONATTACK_chance: 0.14
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local integer lvl = tower.getLevel()
//Do not allow retriggering while the furbolg is raged
if tower.getBuffOfGroup("gex_rage") == 0 then
if lvl < 15 then
call gex_rage_buff.applyCustomTimed(tower,tower,lvl*2,4.0+0.08*lvl)
elseif lvl < 25 then
call gex_rage_buff15.applyCustomTimed(tower,tower,lvl*2,4.0+0.08*lvl)
else
call gex_rage_buff25.applyCustomTimed(tower,tower,lvl*2,4.0+0.08*lvl)
endif
endif
endfunction
|
Hungry Frost Fire v1
700
|
ID: 366
Family ID:
Author: IamanEvilMan
Rarity: common
Element: darkness
Attack Type: Essence
Attack Range: 900
Attack CD: 0.9
Damage: 456-456
Mana: 35
Mana regen: 2
Status: Approved
|
Description: This tower uses mana to summon coldfire from the Frozen Heart of Hell for minor AoE damage and slowing effect. Stolen souls improve this ability with each tower level.
Specials:
-25% dmg to undead (+0.6%/lvl)
Soul Chill
Chills the souls of all creeps in 250 AoE of the target, dealing 550 spelldamage and slowing them by 8% for 4 seconds. Level Bonus: +24 damage +0.6% slow +0.06 seconds duration AC_TYPE_OFFENSIVE_UNIT 20, 900 range, 1s cooldown |
Download
Toggle Triggers Autocast
AUTOCAST_cooldown: 1
AUTOCAST_autoRange: 900
AUTOCAST_manacost: 20
AUTOCAST_range: 900
AUTOCAST_targetType: 0
AUTOCAST_numBuffsBeforeIdle: 2
caster_art:
target_art: Abilities\Spells\Undead\RaiseSkeletonWarrior\RaiseSkeleton.mdl
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_UNIT
AUTOCAST_buffType: soul_chill
AUTOCAST_isExtended: false
AUTOCAST_targetSelf: false
private function onAutocast takes Tower tower returns nothing
local Unit targ = Event.getTarget()
local Iterate it = Iterate.overUnitsInRangeOfUnit(tower,TARGET_CREEPS,targ,250)
local Unit next
local real calculated_slow = 80 + tower.getLevel() * 6
local real duration = 4.0 + tower.getLevel() * 0.06
local real spelldmg = 550 + tower.getLevel() * 24
loop
set next = it.next()
exitwhen next == 0
call soul_chill.applyCustomTimed(tower, next, R2I(calculated_slow), duration)
call tower.doSpellDamage(next, spelldmg, tower.calcSpellCritNoBonus())
endloop
call SFXAtUnit("Abilities\\Spells\\Undead\\RaiseSkeletonWarrior\\RaiseSkeleton.mdl", targ.getUnit())
endfunction
Header globals
//@import
BuffType soul_chill
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
|
Description: