Wild Kodo Beast v1
2700
|
ID: 170
Family ID:
Author: SirCoqaLot.
Rarity: unique
Element: nature
Attack Type: Decay
Attack Range: 800
Attack CD: 2
Damage: 1361-2361
Status: Approved
|
Devour
On attack the Kodo has a 6% chance to take a bite out of its target dealing 5000 spell damage and increasing the multiplier for bonuses granted by 'Kodo Dung' by 1 for 6 seconds. Level Bonus: +0.1% chance +400 spell damage
Kodo Dung - Aura
The dung of this kodo grants towers in 400 range: +10% damage +10% attackspeed +3% critical strike chance +15% critical strike damage Level Bonus: +0.2% damage +0.2% attackspeed +0.06% critical strike chance +0.3% critical strike damage |
Download
Toggle Triggers Header globals
BuffType sir_kodo_aura
BuffType sir_kodo_devour
endglobals
private function kodoAuraOnRefresh takes Buff b returns nothing
local Tower tower = b.getCaster()
call b.setPower((100 + 2 * tower.getLevel()) * tower.userInt)
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 sir_kodo_aura = BuffType.createAuraEffectType(true)
call m.addModification(MOD_ATK_CRIT_CHANCE,0,0.0003)
call m.addModification(MOD_ATK_CRIT_DAMAGE,0,0.0015)
call m.addModification(MOD_ATTACKSPEED,0,0.001)
call m.addModification(MOD_DAMAGE_ADD_PERC,0,0.001)
call sir_kodo_aura.setBuffModifier(m)
call sir_kodo_aura.setEventOnRefresh(kodoAuraOnRefresh)
call sir_kodo_aura.setBuffIcon('@@0@@')
endfunction
On Attack
ONATTACK_chance: 0.06
ONATTACK_chanceLevelAdd: 0.001
function onAttack takes Tower tower returns nothing
local integer UID = tower.getUID()
call tower.doSpellDamage(Event.getTarget(),5000+tower.getLevel()*400,tower.calcSpellCritNoBonus())
call SFXAtUnit("Abilities\\Spells\\Orc\\Devour\\DevourEffectArt.mdl",Event.getTarget().getUnit())
set tower.userInt = tower.userInt + 1
call tower.refreshAuras()
call TriggerSleepAction(6.0 * tower.getProp_BuffDuration())
if tower.getUID() == UID then
set tower.userInt = tower.userInt - 1
call tower.refreshAuras()
endif
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt = 1 //Kodo devour aura multiplier
endfunction
Tower Aura
AURA_auraEffect: sir_kodo_aura
AURA_power: 100
AURA_level: 0
AURA_auraRange: 400
AURA_targetType: TARGET_TYPE_TOWERS
AURA_levelAdd: 1
AURA_powerAdd: 2
AURA_targetSelf: true
|
Embershell Turtle Matriarch v1
2700
|
ID: 536
Family ID:
Author: Velex
Rarity: uncommon
Element: fire
Attack Type: Decay
Attack Range: 800
Attack CD: 0.25
Damage: 1881-1880
Mana: 18
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.9 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
|
Fortunate Miner v1
2700
|
ID: 688
Family ID:
Author: drol
Rarity: rare
Element: iron
Attack Type: Decay
Attack Range: 1000
Attack CD: 1.8
Damage: 3304-3423
Status: Approved
|
Description: This loner has been searching for gold and treasure his entire life.
Specials:
+20% bounty collected (+0.8%/lvl)
Goldrush
The miner has a 20% chance on attack to go into a goldrush, increasing attackspeed by more than 60% depending on the player's gold and making each hit gain 5.4 gold. Goldrush lasts 5 seconds. Cannot retrigger while in goldrush! Hint: Check multiboard to view exact attack speed bonus Level Bonus: +0.22 gold gained +0.1 seconds duration
Excavation
Every 20 seconds the miner has a 25% chance to find 40 gold. Level Bonus: +1.6 gold |
Download
Toggle Triggers Header globals
//@import
BuffType drol_goldrush
//@import
MultiboardValues drol_excavationMulti
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.2
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
if tower.getBuffOfGroup("drol_goldrush") == 0 then
call drol_goldrush.applyCustomTimed(tower,tower,R2I(40. + Pow(GetPlayerState(tower.getOwner().getThePlayer(), PLAYER_STATE_RESOURCE_GOLD),0.5) / 2), 5. + tower.getLevel())
endif
endfunction
On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
local real goldBonus = 5.4 + tower.getLevel() * 0.22
if Event.isMainTarget() and tower.getBuffOfGroup("drol_goldrush") > 0 then
set tower.userReal = tower.userReal + goldBonus
call tower.getOwner().giveGold(goldBonus, tower.getUnit(), false, true)
endif
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
else
set tower.userReal = 0.0
endif
endfunction
On Tower Details function onTowerDetails takes Tower tower returns MultiboardValues
// Show total gold digged up
call drol_excavationMulti.setValue(0,I2S(R2I(tower.userReal)))
call drol_excavationMulti.setValue(1,I2S(60 + R2I(Pow(GetPlayerState(tower.getOwner().getThePlayer(), PLAYER_STATE_RESOURCE_GOLD),0.5)/2)) + "%")
return drol_excavationMulti
endfunction
Periodic
PERIODIC_period: 20
function periodic takes Tower tower returns nothing
local real goldBonus = 40 + tower.getLevel() * 1.6
local Effect targetEffect
set targetEffect = Effect.createScaled("Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMissile.mdl", GetUnitX(tower.getUnit()), GetUnitY(tower.getUnit()), 0, 0, 0.8)
call targetEffect.setLifetime(0.1)
if tower.calcChance(0.25) then
set tower.userReal = tower.userReal + goldBonus
call tower.getOwner().giveGold(goldBonus, tower.getUnit(), false, true)
endif
endfunction
|
Bone Monument v1
2750
|
ID: 93
Family ID:
Author: SirCoqaLot.
Rarity: uncommon
Element: darkness
Attack Type: Physical
Attack Range: 950
Attack CD: 1.8
Damage: 2598-2608
Status: Approved
|
Description: Higher darkness tower that increases the efficiency of other nearby darkness towers.
Empowering Darkness
On attack this tower increases the damage the target receives from other darkness towers by 6%. This effect stacks up to 10 times. Level Bonus: +0.12% damage increased |
Download
Toggle Triggers Header globals
//@import
BuffType sir_bone_debuff
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: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
local integer bufflevel = Event.getTarget().getBuffOfType(sir_bone_debuff).getLevel()
if bufflevel < 10 then
call Event.getTarget().modifyProperty(MOD_DMG_FROM_DARKNESS,0.06+tower.getLevel()*(0.0012))
call sir_bone_debuff.applyAdvanced(tower,Event.getTarget(),bufflevel+1,0,1000)
endif
endfunction
|
Gatling Gun v1
2750
|
ID: 141
Family ID:
Author: Boekie
Rarity: unique
Element: iron
Attack Type: Physical
Attack Range: 1000
Attack CD: 1
Damage: 795-795
Status: Approved
|
Description: A very powerful gun created by the dwarves. It has a chance to fire a burst of projectiles.
Specials:
10% crit chance (+0.5%/lvl)
Rapid Gun Fire
Has a 65% chance on attack to shoot an extra projectile. Every extra projectile can be followed up by another projectile, but the chance is reduced by 6% each time. Every extra projectile deals the same amount of damage as a normal attack and has a 10% chance to explode, dealing that damage in 200 AoE around the target. Maximum of 10 extra projectiles per attack. Level Bonus: +0.4% chance +0.3% chance to explode
Sentry
This tower gains 15% attackdamage whenever a creep comes within 800 range of it. Lasts 3 seconds and stacks up to 20 times. Level Bonus: +0.5% damage +0.05 seconds duration |
Download
Toggle Triggers Header globals
ProjectileType ball
BuffType boekie_sentryBuff
endglobals
public function hit takes Projectile p, Unit creep returns nothing
local Tower tower = p.getCaster()
local Effect targetEffect
if tower.calcChance(0.10 + (tower.getLevel()*0.003)) == true then
set targetEffect = Effect.createScaled("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl", p.x, p.y, 30.0, 0, 1.6)
call targetEffect.setLifetime(1.0)
call tower.doAttackDamageAoEUnit(creep, 200, p.userReal*tower.getCurrentAttackDamageWithBonus(),tower.calcAttackMulticrit(0,0,0), 0.0)
else
call tower.doAttackDamage(creep,p.userReal*tower.getCurrentAttackDamageWithBonus(),tower.calcAttackMulticrit(0,0,0))
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
local Modifier m = Modifier.create()
set ball = ProjectileType.create("Abilities\\Weapons\\BoatMissile\\BoatMissile.mdl",4,1000)
call ball.enableHoming(ProjectileTargetEvent.hit,0)
set boekie_sentryBuff = BuffType.create(0.0, 0.0, true)
call m.addModification(MOD_DAMAGE_ADD_PERC, 0.0, 0.005)
call boekie_sentryBuff.setBuffModifier(m)
call boekie_sentryBuff.setBuffIcon('@@0@@')
call boekie_sentryBuff.setStackingGroup("boekie_sentryBuff")
endfunction
On Attack
ONATTACK_chance: 0.65
ONATTACK_chanceLevelAdd: 0.004
function onAttack takes Tower tower returns nothing
local Unit target = Event.getTarget()
local PeriodicEvent ev = tower.userInt3
local integer amount = 1 //initial num balls
//0.1 is the periodic timer. if you change that, change the value here as well
local integer maxShotsPossible = R2I(tower.getCurrentAttackspeed() / 0.1)
local real dmgRatio = 1.0
//increment amount of extra attacks until the chance isn't met or max is reached.
loop
exitwhen tower.calcChance(0.65 + tower.getLevel() * (0.004) - amount * 0.06) == false or amount > 10
set amount = amount + 1
endloop
//if tower cannot release as many projectiles as required, scale the dmg instead!
if amount > maxShotsPossible then
set dmgRatio = I2R(amount) / I2R(maxShotsPossible)
set amount = maxShotsPossible
endif
//sets the target to shoot balls at and makes the periodic period smaller to get the rapid attack
set tower.userInt = target
set tower.userInt2 = target.getUID()
set tower.userReal = amount
set tower.userReal2 = dmgRatio
call ev.enable()
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
set tower.userInt = 0 //saves current projectile target
set tower.userInt2 = 0 //saves target UID - safety check
set tower.userInt3 = 0 //saves the periodic
set tower.userReal = 0. //saves number of balls to fire
set tower.userReal2 = 1. //saves the projectile's dmg ratio
endfunction
On Unit Comes In Range
UNITINRANGE_targetType: TARGET_TYPE_CREEPS
UNITINRANGE_range: 800
function onUnitInRange takes Tower tower returns nothing
local integer towerLevel = tower.getLevel()
local integer buffLevel = 1
local Buff b = tower.getBuffOfGroup("boekie_sentryBuff")
if b != 0 then
set buffLevel = IMinBJ(b.userInt + 1, 20)
endif
set boekie_sentryBuff.applyCustomTimed(tower, tower, buffLevel * (30 + towerLevel), 3.0 + 0.05 * towerLevel).userInt = buffLevel
endfunction
Periodic
PERIODIC_period: 0.1
function periodic takes Tower tower returns nothing
local Unit target = tower.userInt
local Projectile gatlingShot
if tower.userInt3 == 0 then
//sets the userInt3 to this periodic event
set tower.userInt3 = Event.getCurrentPeriodicEvent()
endif
//check if target hasn't died
if target.getUID() != tower.userInt2 then
call PeriodicEvent(tower.userInt3).disable()
return
endif
if tower.userReal > 0 then //balls remain to be shot?
set gatlingShot = Projectile.createFromPointToUnit(ball,tower,1,0,tower.getX(),tower.getY(),100,target,true,false,false)
call gatlingShot.setScale(0.4)
set gatlingShot.userReal = tower.userReal2 //the dmgRatio
set tower.userReal = tower.userReal - 1
if tower.userReal <= 0 then //burst attack is over so switch off periodic
call PeriodicEvent(tower.userInt3).disable()
endif
endif
endfunction
|
Rampaging Furbolg v1
2750
|
ID: 252
Family ID:
Author: geX
Rarity: uncommon
Element: nature
Attack Type: Physical
Attack Range: 900
Attack CD: 1.8
Damage: 1631-4431
Status: Approved
|
Description: A friendly, cuddly and fluffy creature as long as it isn't angry. Unfortunately it is always angry, even when it's sleeping.
Specials:
+20% dmg to orcs
Rampage
Has a 16% chance on attack to go into a rampage for 6.0 seconds. While in rampage, it has +250% attackspeed, +25% critical strike chance and +75% critical strike damage. Cannot retrigger while in rampage! Level Bonus: +0.12 sec duration +4% attackspeed +1 multicrit at lvl 15 and 25 |
Download
Toggle Triggers Header globals
//@import
BuffType gex_rage_buff
//@import
BuffType gex_rage_buff15
//@import
BuffType gex_rage_buff25
endglobals
private function init takes nothing returns nothing
endfunction
On Attack
ONATTACK_chance: 0.16
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,100+lvl*4,6.0+0.12*lvl)
elseif lvl < 25 then
call gex_rage_buff15.applyCustomTimed(tower,tower,100+lvl*4,6.0+0.12*lvl)
else
call gex_rage_buff25.applyCustomTimed(tower,tower,100+lvl*4,6.0+0.12*lvl)
endif
endif
endfunction
|
Frozen Obelisk v1
2750
|
ID: 541
Family ID:
Author: Boekie
Rarity: uncommon
Element: ice
Attack Type: Elemental
Attack Range: 600
Attack CD: 2.1
Damage: 4445-4445
Status: Approved
|
Description: A frightfully blue column of solid ice, worshipped by cold blooded folk.
Specials:
Splash attack: 220 AoE: 35% damage +45% dmg to masses (+2%/lvl)
Absolute Zero
The Obelisk slows creeps it damages by 30% for 4 seconds. Level Bonus: +0.5% slow |
Download
Toggle Triggers Header globals
//@import
BuffType mcSlow
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.0
function onDamage takes Tower tower returns nothing
local integer s = R2I((30+tower.getLevel()*0.5)*10)
call mcSlow.applyCustomTimed(tower,Event.getTarget(), s, 4)
endfunction
|
Description: