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
Mana: 3000
Mana regen: 0
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 AC_TYPE_OFFENSIVE_IMMEDIATE 100, 750 range, 5s cooldown
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 - Aura
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 - Aura
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: