It v1
4500
|
ID: 216
Family ID:
Author: axllow
Rarity: unique
Element: darkness
Attack Type: Decay
Attack Range: 800
Attack CD: 2
Damage: 8684-8684
Status: Approved
|
Specials:
10% spell crit chance (+0.5%/lvl)
Recreation Field
Set up Recreation Field at a chosen location. Field has 250 AoE and will punish creeps that walk over it at the wrong moment.
AC_TYPE_NOAC_POINT 0, 800 range, 5s cooldown
Corruption Field
Set up Corruption Field at a chosen location. Field has 250 AoE and will punish creeps that walk over it at the wrong moment.
AC_TYPE_NOAC_POINT 0, 800 range, 5s cooldown
It Hunger
Every time an enemy creep is transported by Dark Ritual or killed by this tower, It permanently gains 0.1% spelldamage. There is a maximum of 700% bonus spelldamage. Level Bonus: +0.01% spelldamage
Dark Ritual
When this tower attacks, it awakens the powerful dark magic in Recreation and Corruption Fields, dealing 3000 spelldamage to all creeps unfortunate enough to be standing in those areas. If a non-boss enemy in Corruption Field is affected by Dark Ritual for the first time, it will be immediately transported to Recreation Field. Level Bonus: +100 spelldamage Cooldown: 1 sec |
Download
Toggle Triggers Autocast
caster_art:
AUTOCAST_cooldown: 5
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: true
AUTOCAST_autocastType: AC_TYPE_NOAC_POINT
AUTOCAST_manacost: 0
AUTOCAST_range: 800
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: false
AUTOCAST_targetType: 0
target_art:
AUTOCAST_autoRange: 0
private function onAutocast takes Tower tower returns nothing
local Summoner sum = tower.userInt
local real lastX = sum.toX
local real lastY = sum.toY
set sum.toX = GetSpellTargetX()
set sum.toY = GetSpellTargetY()
if isPointOnCreepPath(sum.toX,sum.toY) then
if tower.userInt2 == 1 then
call sum.future.setPosition(sum.toX,sum.toY)
else
set tower.userInt2 = 1
set sum.future = Effect.createColored("Abilities\\Spells\\Undead\\VampiricAura\\VampiricAura.mdl",sum.toX,sum.toY,0,270.0,2.0,255,0,0,255)
call sum.future.noDeathAnimation()
endif
else
set sum.toX = lastX
set sum.toY = lastY
call tower.getOwner().displaySmallFloatingText("Invalid location!",tower,255, 150, 0,30)
endif
endfunction
Autocast
caster_art:
AUTOCAST_cooldown: 5
AUTOCAST_numBuffsBeforeIdle: 0
AUTOCAST_isExtended: true
AUTOCAST_autocastType: AC_TYPE_NOAC_POINT
AUTOCAST_manacost: 0
AUTOCAST_range: 800
AUTOCAST_buffType: 0
AUTOCAST_targetSelf: false
AUTOCAST_targetType: 0
target_art:
AUTOCAST_autoRange: 0
private function onAutocast takes Tower tower returns nothing
local Summoner sum = tower.userInt
local real lastX = sum.fromX
local real lastY = sum.fromY
if(tower.userInt2 == 1) then
set tower.userReal = 1
set sum.fromX = GetSpellTargetX()
set sum.fromY = GetSpellTargetY()
//no need to check the location in this field's placement
if tower.userInt3 == 1 then
call sum.from.setPosition(sum.fromX,sum.fromY)
else
set tower.userInt3 = 1
set sum.from = Effect.createColored("Abilities\\Spells\\Undead\\VampiricAura\\VampiricAura.mdl",sum.fromX,sum.fromY,0,270.0,2.0,0,0,255,255)
call sum.from.noDeathAnimation()
endif
else
call tower.getOwner().displaySmallFloatingText("You must place the recreation field first!",tower,255, 150, 0,30)
endif
endfunction
Header globals
integer array Summoner_units
Effect Summoner_tp_e
MultiboardValues Summoner_spd
endglobals
struct Summoner
real size = 3.0
ubersplat tow
Effect from = 0
Effect future = 0
real fromX = 0
real fromY = 0
real toX = 0
real toY = 0
endstruct
function It_kill takes Tower tower returns nothing
local Summoner sum = tower.userInt
local unit twrUnit = tower.getUnit()
local real mod = 0.001 + (0.0001 * tower.getLevel())
if sum.size < 10.0 then
call tower.modifyProperty(MOD_SPELL_DAMAGE_DEALT,mod)//700% cap
set sum.size = sum.size + mod
endif
if sum.size < 3.7 then
call SetUnitScale(twrUnit,sum.size-2.7,sum.size,sum.size)
endif
set twrUnit = null
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
set Summoner_spd = MultiboardValues.create(1)
call Summoner_spd.setKey(0,"Spelldamage Bonus")
endfunction
On Attack
ONATTACK_chance: 1.0
ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Tower tower returns nothing
//local integer currentTime = Game.getGameTime
local Summoner sum = tower.userInt
local Iterate inRange
local real mod = 3000 + (tower.getLevel() * 100)
local Creep s
local integer UID
local Effect DMG1
local Effect DMG2
local Effect TP1
local Effect TP2
local real toX
local real toY
if(tower.userReal == 1) then
call tower.doSpellDamageAoE(sum.fromX,sum.fromY,250.0,mod,tower.calcSpellCritNoBonus(),0.0)
//40.0 Oo
set DMG1 = Effect.createColored("Abilities\\Spells\\Human\\Feedback\\ArcaneTowerAttack.mdl",sum.fromX,sum.fromY,100.0,270.0,40.0,0,0,0,255)
call DMG1.setLifetime(1)
set inRange = Iterate.overUnitsInRange(tower,TARGET_TYPE_CREEPS,sum.fromX,sum.fromY,250.0)
loop
set s = inRange.next()
exitwhen s == 0
// set s = l
set UID = s.getUID()
if UID != -1 and Summoner_units[s] != UID and s.getSize() < SIZE_BOSS then
set TP1 = Effect.create("Abilities\\Spells\\Undead\\Darksummoning\\DarkSummonTarget.mdl",s.getX(),s.getY(),0.0,270.0)
call TP1.setLifetime(1)
call It_kill(tower)
set toX = sum.toX + GetRandomReal(-25,25)
set toY = sum.toY + GetRandomReal(-25,25)
call s.moveToPoint(toX,toY,false)
set TP2 = Effect.create("Abilities\\Spells\\Undead\\Darksummoning\\DarkSummonTarget.mdl",toX,toY,0.0,270.0)
call TP2.setLifetime(1)
call s.reorder()
set Summoner_units[s] = UID
endif
endloop
call tower.doSpellDamageAoE(sum.toX,sum.toY,250.0,mod,tower.calcSpellCritNoBonus(),0.0)
set DMG2 = Effect.createColored("Abilities\\Spells\\Human\\Feedback\\ArcaneTowerAttack.mdl",sum.toX,sum.toY,100.0,270.0,40.0,0,0,0,255)
call DMG2.setLifetime(1)
set tower.userReal = 0
call TriggerSleepAction(1.0)
set tower.userReal = 1
endif
endfunction
On Kill function onKill takes Tower tower returns nothing
call It_kill(tower)
endfunction
On Tower Creation function onCreate takes Tower tower returns nothing
local Summoner sum = Summoner.create()
local unit twrUnit = tower.getUnit()
set sum.tow = CreateUbersplat(GetUnitX(twrUnit) - 16.0, GetUnitY(twrUnit) - 16.0,"DRKC",255,255,255,255,false,false)
call SetUbersplatRenderAlways(sum.tow,true)
set tower.userInt = sum
set tower.userInt2 = 0
set tower.userInt3 = 0
set twrUnit = null
endfunction
On Tower Destruction function onDestruct takes Tower tower returns nothing
local Summoner sum = tower.userInt
if tower.userInt2 == 1 then
call sum.future.destroy()
endif
if tower.userInt3 == 1 then
call sum.from.destroy()
endif
call DestroyUbersplat(sum.tow)
set sum.tow = null
call sum.destroy()
endfunction
On Tower Details
goldcost: 4500
function onTowerDetails takes Tower tower returns MultiboardValues
local Summoner sum = tower.userInt
call Summoner_spd.setValue(0, formatPercent(sum.size - 3.0, 1))
return Summoner_spd
endfunction
|
Description: