The Furnace v1
4000
|
ID: 434
Family ID:
Author: Ashbringer
Rarity: unique
Element: fire
Attack Type: Elemental
Attack Range: 1000
Attack CD: 1.8
Damage: 988-988
Abil. Factor: 0.2
Status: Approved
|
Specials:
Splash attack:
300 AoE: 100% damage
Intense Heat
Expends all mana to unleash a wave of heat, dealing [Mana x 7] spell damage and applying Lingering Flame to all enemies in 1000 range. Increases the attack and spell crit chance of nearby towers within 350 range by [Mana / 300]% for 4 seconds. Level Bonus: +0.2 spell damage per mana
Uncontrollable Flames
The tower attacks a random enemy in range with each attack. Enemies hit are inflicted with Lingering Flame, dealing 100 spell damage per second for 10 seconds. This effect stacks. Level Bonus: +2 spell damage
Flames of the Forge
Attack speed, trigger chances, spell damage, spell crit chance and spell crit damage bonuses on this tower are applied to Common and Uncommon Fire towers in 350 range at a rate of 50%. Level Bonus: +2% stats
Feed the Flames
This tower fuels itself in various ways. Gains 1% of maximum mana on attack. Whenever Lingering Flame deals damage, there is a 20% chance to gain 0.5% of maximum mana per stack. On kill, gains 4% of total mana and maximum mana is increased by 10. Level Bonus: +0.4% chance |
Download
Toggle Triggers Autocast
AUTOCAST_cooldown: 5
AUTOCAST_autoRange: 750
AUTOCAST_manacost: 100
AUTOCAST_range: 750
AUTOCAST_targetType: 0
AUTOCAST_numBuffsBeforeIdle: 0
caster_art:
target_art:
AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_IMMEDIATE
AUTOCAST_buffType: 0
AUTOCAST_isExtended: true
AUTOCAST_targetSelf: false
private function onAutocast takes Tower tower returns nothing
local Iterate damagecast = Iterate.overUnitsInRangeOfUnit(tower,TARGET_CREEPS,tower,1000)
local Iterate buffcast = Iterate.overUnitsInRangeOfUnit(tower,TARGET_TOWERS,tower,350)
local Unit next
local real towermana = GetUnitState( tower.getUnit(), UNIT_STATE_MANA)
local real fxscale = 0.8 + ((RMinBJ(towermana, 3000) / 3000) * 0.9)
call Effect.createScaled("Objects\\Spawnmodels\\Human\\SmallFlameSpawn\\SmallFlameSpawn.mdl", tower.getX(), tower.getY(), 0, 270, fxscale).setLifetime(6.6)
loop
set next = damagecast.next()
exitwhen next == 0
call ashbringer_linger_apply(tower, next)
call tower.doSpellDamage(next, (7 + (tower.getLevel() * 0.2)) * towermana, tower.calcSpellCritNoBonus())
call Effect.createSimpleOnUnit("Doodads\\Cinematic\\FireTrapUp\\FireTrapUp.mdl", next, "origin").setLifetime(3.0)
endloop
loop
set next = buffcast.next()
exitwhen next == 0
call ashbringer_intense_buff.apply(tower,next,R2I(towermana/15.0))
endloop
call tower.subtractMana(towermana, true)
endfunction
Header globals
BuffType ashbringer_linger_buff
BuffType ashbringer_heart_aura
BuffType ashbringer_intense_buff
BuffType ashbringer_attackrandom_buff
endglobals
function ashbringer_heart_update takes Buff b returns nothing
local Tower tower = b.getBuffedUnit()
local Tower caster = b.getCaster()
local real tower_level = caster.getLevel()
local real caster_level_factor = 0.5 + (tower_level * 0.02)
call tower.modifyProperty(MOD_SPELL_DAMAGE_DEALT, -b.userReal)
call tower.modifyProperty(MOD_SPELL_CRIT_CHANCE, -b.userReal2)
call tower.modifyProperty(MOD_SPELL_CRIT_DAMAGE, -b.userReal3)
call tower.modifyProperty(MOD_ATTACKSPEED, -(b.userInt/1000.0))
call tower.modifyProperty(MOD_TRIGGER_CHANCES, -(b.userInt2/1000.0))
set b.userReal = (caster.getProp_SpellDmgDealt() - 1.0)*caster_level_factor
set b.userReal2 = (caster.getProp_SpellCritChance() - (0.0125 + (tower_level * 0.0015)))*caster_level_factor
set b.userReal3 = (caster.getProp_SpellCritDamage() - (1.25 + (tower_level * 0.02)))*caster_level_factor
set b.userInt = R2I((caster.getProp_Attackspeed() - (0.00 + (tower_level * 0.012)))*caster_level_factor*1000.0)
set b.userInt2 = R2I((caster.getProp_TriggerChances()- 1.0)*caster_level_factor*1000.0)
call tower.modifyProperty(MOD_SPELL_DAMAGE_DEALT, b.userReal)
call tower.modifyProperty(MOD_SPELL_CRIT_CHANCE, b.userReal2)
call tower.modifyProperty(MOD_SPELL_CRIT_DAMAGE, b.userReal3)
call tower.modifyProperty(MOD_ATTACKSPEED, (b.userInt/1000.0))
call tower.modifyProperty(MOD_TRIGGER_CHANCES, (b.userInt2/1000.0))
endfunction
function ashbringer_heart_create takes Buff b returns nothing
set b.userReal = 0
set b.userReal2 = 0
set b.userReal3 = 0
set b.userInt = 0
set b.userInt2 = 0
call ashbringer_heart_update(b)
endfunction
function ashbringer_heart_cleanup takes Buff b returns nothing
local Tower tower = b.getBuffedUnit()
call tower.modifyProperty(MOD_SPELL_DAMAGE_DEALT, -b.userReal)
call tower.modifyProperty(MOD_SPELL_CRIT_CHANCE, -b.userReal2)
call tower.modifyProperty(MOD_SPELL_CRIT_DAMAGE, -b.userReal3)
call tower.modifyProperty(MOD_ATTACKSPEED, -b.userInt/1000.0)
call tower.modifyProperty(MOD_TRIGGER_CHANCES, -b.userInt2/1000.0)
endfunction
function ashbringer_linger_apply takes Tower tower, Creep creep returns nothing
local Buff b
local integer i
set b = creep.getBuffOfType(ashbringer_linger_buff)
if ( b != 0 ) then
set i = b.getPower() + 1
call ashbringer_linger_buff.applyCustomPower(tower, creep, 1, i)
else
set i = 1
call ashbringer_linger_buff.applyCustomPower(tower, creep, 1, i)
endif
endfunction
function ashbringer_linger_damage takes Buff b returns nothing
local Tower tower = b.getCaster()
local integer power = b.getPower()
call tower.doSpellDamage(b.getBuffedUnit(), (100 + (tower.getLevel() * 2)) * I2R(power), tower.calcSpellCritNoBonus())
if (tower.calcChance((0.2 + (tower.getLevel() * 0.004)))) then
call tower.addManaPerc(0.005 * I2R(power))
endif
endfunction
function setUserInt takes Buff b returns nothing
set b.userInt = b.getCaster()
endfunction
function attackRandomTarget takes Buff b returns nothing
local Tower tower = b.userInt
local Iterate iterator = Iterate.overUnitsInRangeOfCaster(tower, TARGET_CREEPS, 1000)
local integer loopIndex = 0
local Unit loopUnit
local Unit array unitsInRange
loop
set loopUnit = iterator.next()
exitwhen loopUnit == 0
set unitsInRange[loopIndex] = loopUnit
set loopIndex = loopIndex + 1
endloop
set loopUnit = unitsInRange[GetRandomInt(0,loopIndex-1)]
call IssueTargetOrder(tower.getUnit(), "attack", loopUnit.getUnit())
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 ashbringer_heart_aura = BuffType.createAuraEffectType(true)
call ashbringer_heart_aura.setBuffIcon('@@1@@')
call ashbringer_heart_aura.addEventOnCreate(ashbringer_heart_create)
call ashbringer_heart_aura.addEventOnCleanup(ashbringer_heart_cleanup)
call ashbringer_heart_aura.addPeriodicEvent(ashbringer_heart_update, 5)
set ashbringer_linger_buff = BuffType.create(10,0,false)
call ashbringer_linger_buff.setBuffIcon('@@0@@')
call ashbringer_linger_buff.addPeriodicEvent(EventHandler.ashbringer_linger_damage,1)
set ashbringer_intense_buff=BuffType.create(4,0,true)
call m.addModification(MOD_ATK_CRIT_CHANCE, 0.0, 0.0005)
call m.addModification(MOD_SPELL_CRIT_CHANCE, 0.0, 0.0005)
call ashbringer_intense_buff.setBuffIcon('@@2@@')
call ashbringer_intense_buff.setBuffModifier(m)
set ashbringer_attackrandom_buff = BuffType.createAuraEffectType(true)
call ashbringer_attackrandom_buff.addEventOnCreate(EventHandler.setUserInt)
call ashbringer_attackrandom_buff.addEventOnAttack(EventHandler.attackRandomTarget, 1, 0)
endfunction
On Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
call tower.addManaPerc(0.01)
endfunction
On Damage
ONDAMAGE_chance: 1.0
ONDAMAGE_chanceLevelAdd: 0.0
function onDamage takes Tower tower returns nothing
call ashbringer_linger_apply(tower, Event.getTarget())
endfunction
On Kill function onKill takes Tower tower returns nothing
call tower.modifyProperty(MOD_MANA, 10)
call tower.addManaPerc(0.04)
endfunction
Tower Aura
AURA_powerAdd: 0
AURA_auraEffect: ashbringer_heart_aura
AURA_levelAdd: 0
AURA_power: 1
AURA_targetType: TARGET_TYPE_TOWERS + TARGET_TYPE_ELEMENT_FIRE + TARGET_TYPE_RARITY_UNCOMMON + TARGET_TYPE_RARITY_COMMON
AURA_targetSelf: false
AURA_level: 1
AURA_auraRange: 350
Tower Aura
AURA_powerAdd: 0
AURA_auraEffect: ashbringer_attackrandom_buff
AURA_levelAdd: 0
AURA_power: 1
AURA_targetType: TARGET_TYPE_PLAYER_TOWERS + TARGET_TYPE_ELEMENT_FIRE
AURA_targetSelf: true
AURA_level: 1
AURA_auraRange: 0
|
Description:
Latest Upload Comment: