Array
(
[scriptVersion] => 8
[oeValues] => Array
(
[auto] => Array
(
)
[Art] => ReplaceableTextures\CommandButtons\BTNUsedSoulGem.blp
[bldtm] => 1
[dmgplus1] => 0
[goldcost] => 750
[sides1] => 1
[manaN] => 75
[acquire] => 1000
[upgrades] => Array
(
)
[Upgrade] => Array
(
)
[Name] => Shard of Souls
[weapTp1] => missile
[MissileHoming] => 1
[file] => .mdl
[uberSplat] => OSMA
[Missileart] => Abilities\Weapons\GryphonRiderMissile\GryphonRiderMissile.mdl
[Missilespeed] => 1500
[dice1] => 1
[RngBuff1] => 250
[regenMana] => 4
[modelScale] => 0.1
[rangeN1] => 1000
[atkType1] => normal
[cool1] => 1.4
[Ubertip] => This mystical crystal shard can link souls together.
[abilList] => Array
(
)
[buildingShadow] => Array
(
)
[targs1] => Array
(
)
[weapsOn] => 1
)
[settings] => Array
(
[balanceTip] => |cffFFFF00+2% |rbuff duration/lvl
[abil_factor] => 0.00
[author] => Der_kleine_Tomy
[alpha] => 255
[authorDisplay] => |c00ff0000Der_kleine_Tomy|r
[element] => darkness
[rarity] => rare
)
[effects] => Array
(
[0] => Array
(
[x] => 3.75249
[y] => 14.1853
[z] => 0
[scale] => 0.33
[rot] => 6.03884
[file] => Doodads\Cinematic\EnergyFieldWall\EnergyFieldWall.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[1] => Array
(
[x] => 0.747107
[y] => 5.92215
[z] => 0
[scale] => 0.33
[rot] => 0.942478
[file] => Doodads\Cinematic\EnergyFieldWall\EnergyFieldWall.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[2] => Array
(
[x] => 1.00831
[y] => 5.6862
[z] => 0
[scale] => 1.2
[rot] => 3.80482
[file] => Abilities\Spells\Other\HowlOfTerror\HowlTarget.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[3] => Array
(
[x] => -40.5786
[y] => -7.78414
[z] => 0
[scale] => 0.5
[rot] => 3.9619
[file] => Doodads\Outland\Props\Skull\Skull1.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[4] => Array
(
[x] => 16.4948
[y] => -16.0205
[z] => 0
[scale] => 0.5
[rot] => 2.6529
[file] => Doodads\Outland\Props\Skull\Skull1.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[5] => Array
(
[x] => 43.0101
[y] => 29.0634
[z] => 0
[scale] => 0.5
[rot] => 5.09636
[file] => Doodads\Outland\Props\Skull\Skull1.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[6] => Array
(
[x] => 0.0000191686
[y] => 52.9249
[z] => 0
[scale] => 0.5
[rot] => 2.9147
[file] => Doodads\Outland\Props\Skull\Skull1.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[7] => Array
(
[x] => -33.0286
[y] => 37.6763
[z] => 0
[scale] => 0.5
[rot] => 1.43117
[file] => Doodads\Outland\Props\Skull\Skull1.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[8] => Array
(
[x] => 0.344348
[y] => -0.3828
[z] => 0
[scale] => 0.35
[rot] => 4.71239
[file] => Doodads\Icecrown\Rocks\Icecrown_Crystal\Icecrown_Crystal0.mdl
[red] => 255
[green] => 1
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
)
[dmgTable] => Array
(
[0] => Array
(
[id] => MOD_BUFF_DURATION
[base] => 0
[add] => 0.02
)
)
[triggers] => Array
(
[0] => Array
(
[name] => Header
[code] => globals
//@export
BuffType tomy_SoulLink
boolean tomy_isSoulLinkDamage
endglobals
function tomy_SoulLink_OnCreate takes Buff b returns nothing
local Unit caster = b.getCaster()
local Buff firstBuff = caster.userInt
set caster.userInt = b // Points to first buff
set b.userInt = 0
// Link buffs (Double linked list)
// b.userInt = previousBuff
// b.userInt2 = nextBuff
if firstBuff == 0 then
set b.userInt2 = 0
else
set firstBuff.userInt = b
set b.userInt2 = firstBuff
endif
endfunction
function tomy_SoulLink_OnCleanup takes Buff b returns nothing
local Buff nextBuff = b.userInt2
local Buff prevBuff = b.userInt
local Unit caster = b.getCaster()
// Link the buffs in the linked list correctly (prev <-> next)
if prevBuff == 0 then
set caster.userInt = nextBuff
else
set prevBuff.userInt2 = nextBuff
endif
if nextBuff != 0 then
set nextBuff.userInt = prevBuff
endif
endfunction
function tomy_SoulLink_OnDamaged takes Buff b returns nothing
local Tower damageSource = Event.getTarget()
local Unit caster = b.getCaster()
local real damage = Event.damage * (caster.userReal + caster.userReal2 * caster.getLevel())
local Buff currentBuff
// If the damage comes from Soul Link nothing will happen
if tomy_isSoulLinkDamage then
return
endif
set tomy_isSoulLinkDamage = true
set currentBuff = caster.userInt
loop
exitwhen currentBuff == 0
if currentBuff != b then // Don't deal extra damage to the damaged creep
if Event.isSpellDamage() then
set damage = damage / damageSource.getProp_SpellDmgDealt() // prevent the damage from being increased twice by spell damage
call damageSource.doSpellDamage(currentBuff.getBuffedUnit(), damage, 1)
else
call damageSource.doAttackDamage(currentBuff.getBuffedUnit(), damage, 1)
endif
endif
set currentBuff = currentBuff.userInt2 // next buff
endloop
set tomy_isSoulLinkDamage = false
endfunction
function tomy_SoulLink_OnDeath takes Buff b returns nothing
call b.getCaster().addExp(1.0)
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 tomy_SoulLink = BuffType.create(2.5, 0, false)
call tomy_SoulLink.addEventOnCreate(EventHandler.tomy_SoulLink_OnCreate)
call tomy_SoulLink.addEventOnCleanup(EventHandler.tomy_SoulLink_OnCleanup)
call tomy_SoulLink.addEventOnDeath(EventHandler.tomy_SoulLink_OnDeath)
call tomy_SoulLink.addEventOnDamaged(EventHandler.tomy_SoulLink_OnDamaged, 100.0, 0.00)
call tomy_SoulLink.setBuffIcon('@@0@@')
set tomy_isSoulLinkDamage = false
endfunction
[values] => Array
(
[visible] => true
[icon] => ReplaceableTextures\CommandButtons\BTNBanish.blp
[name] => Soul Consumption
[short_explain] => Consumes the souls of enemies to increase the tower's experience.
[long_explain] => Whenever a unit under the effect of Soul Link dies, the Shard of Souls consumes its soul granting |cffFFFF801|r experience to the tower.
)
)
[1] => Array
(
[name] => Autocast
[code] => local Unit target = Event.getTarget()
local integer level = tower.getLevel()
local integer counter = 1
local integer maxTargets = 3
local Iterate iterator
local Unit next
local lightning array effects
if level == 25 then
set maxTargets = maxTargets + 2
elseif level >= 15 then
set maxTargets = maxTargets + 1
endif
set effects[0] = AddLightningEx("DRAL", false, tower.getX(), tower.getY(), tower.getZ(), target.getX(), target.getY(), target.getZ())
if target.getBuffOfType(tomy_SoulLink) == 0 then
call tomy_SoulLink.apply(tower, target, level)
endif
loop
exitwhen counter == maxTargets
set iterator = Iterate.overUnitsInRangeOfUnit(tower, TARGET_CREEPS, target, 600.0 )
loop
set next = iterator.next()
exitwhen next == 0 or next.getBuffOfType(tomy_SoulLink) == 0
endloop
exitwhen next == 0
if next != 0 then
call iterator.destroy()
endif
call tomy_SoulLink.apply(tower, next, level)
set effects[counter] = AddLightningEx("DRAL", false, GetUnitX(next.getUnit()), GetUnitY(next.getUnit()), GetUnitFlyHeight(next.getUnit()), GetUnitX(target.getUnit()), GetUnitY(target.getUnit()), GetUnitFlyHeight(target.getUnit()))
set target = next
set counter = counter + 1
endloop
call TriggerSleepAction(0.20)
loop
set counter = counter - 1
exitwhen counter == -1
call DestroyLightning(effects[counter])
set effects[counter] = null // Not sure if this is needed
endloop
[values] => Array
(
[AUTOCAST_cooldown] => 5.0
[AUTOCAST_autoRange] => 1000.0
[AUTOCAST_manacost] => 50
[icon] => ReplaceableTextures\CommandButtons\BTNManaDrain.blp
[AUTOCAST_numBuffsBeforeIdle] => 1
[AUTOCAST_range] => 1000.0
[AUTOCAST_targetType] => TARGET_TYPE_CREEPS
[caster_art] =>
[long_explain] => Links |cffFFFF803|r enemies' souls together for |cffFFFF802.5|r seconds. If a linked unit takes damage all other linked units will take |cffFFFF8012.5%|r of this damage. This tower does not benefit from damage increasing items or oils.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+0.3%|r damage|n|cffFFFF80+1|r target at level |cffFFFF8015|r and |cffFFFF8025|r
[target_art] =>
[AUTOCAST_autocastType] => AC_TYPE_ALWAYS_BUFF
[AUTOCAST_buffType] => tomy_SoulLink
[AUTOCAST_isExtended] => false
[name] => Soul Link
[AUTOCAST_targetSelf] => false
[short_explain] => Links enemies' souls together.
)
)
[2] => Array
(
[name] => On Tower Creation
[code] => set tower.userInt = 0 // Linked List (points to the first buff)
set tower.userReal = 0.125
set tower.userReal2 = 0.003
[values] => Array
(
[visible] => false
[icon] =>
[name] =>
[short_explain] =>
[long_explain] =>
)
)
)
[abilities] => Array
(
)
[buffs] => Array
(
[0] => Array
(
[id] => @@0@@
[derivedFrom] => Bspl
[oeValues] => Array
(
[Buffubertip] => This unit's soul is linked to the souls of other units.
[TargetArt] => Abilities\Spells\Other\HowlOfTerror\HowlTarget.mdl
[Bufftip] => Soul Link
[Buffart] => ReplaceableTextures\CommandButtons\BTNManaDrain.blp
)
)
)
[units] => Array
(
)
[references] => Array
(
[0] => Array
(
[export] => true
[category] => global
[typ] => BuffType
[name] => tomy_SoulLink
)
)
[lightning] => Array
(
)
)