Array
(
[scriptVersion] => 8
[oeValues] => Array
(
[auto] => Array
(
)
[Art] => ReplaceableTextures\CommandButtons\BTNMirror.blp
[turnRate] => 3
[dmgplus1] => 760
[bldtm] => 1
[goldcost] => 700
[unitSound] => ElvenGuardTower
[sides1] => 1
[Missilearc] => 0.1
[manaN] => 75
[acquire] => 1000
[upgrades] => Array
(
)
[Upgrade] => Array
(
)
[Name] => Magic Mirror
[weapTp1] => missile
[impactZ] => 60
[file] => war3mapImported\Mirror.mdl
[uberSplat] => YTDG
[Missilespeed] => 1200
[Missileart] => Abilities\Weapons\DragonHawkMissile\DragonHawkMissile.mdl
[dice1] => 1
[RngBuff1] => 250
[regenMana] => 2
[modelScale] => 0.6
[rangeN1] => 1000
[propWin] => 10
[atkType1] => magic
[cool1] => 2
[Ubertip] => The reflection that stares back isn't you.
[abilList] => Array
(
)
[moveHeight] => 55
[buildingShadow] => Array
(
)
[targs1] => Array
(
)
[weapsOn] => 1
)
[settings] => Array
(
[balanceTip] => Array
(
)
[abil_factor] => 0.5
[author] => Ashbringer
[alpha] => 255
[authorDisplay] => |cffff6600Ashbringer|r
[version] => 1.0
[element] => arcane
[rarity] => rare
)
[effects] => Array
(
[0] => Array
(
[x] => -0.316865
[y] => -0.423932
[z] => 32
[scale] => 0.27
[rot] => 0.785398
[file] => Doodads\Cityscape\Props\City_Oblisk\City_Oblisk.mdl
[red] => 75
[green] => 75
[blue] => 255
[alpha] => 255
[pitch] => -2.15
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[1] => Array
(
[x] => -0.323411
[y] => 0.00345104
[z] => 32
[scale] => 0.27
[rot] => 3.92699
[file] => Doodads\Cityscape\Props\City_Oblisk\City_Oblisk.mdl
[red] => 75
[green] => 75
[blue] => 255
[alpha] => 255
[pitch] => -2.15
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[2] => Array
(
[x] => -0.437684
[y] => 0.531451
[z] => 32
[scale] => 0.27
[rot] => 5.49779
[file] => Doodads\Cityscape\Props\City_Oblisk\City_Oblisk.mdl
[red] => 75
[green] => 75
[blue] => 255
[alpha] => 255
[pitch] => -2.15
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[3] => Array
(
[x] => 0.0649099
[y] => -0.104123
[z] => 32
[scale] => 0.27
[rot] => 2.3562
[file] => Doodads\Cityscape\Props\City_Oblisk\City_Oblisk.mdl
[red] => 75
[green] => 75
[blue] => 255
[alpha] => 255
[pitch] => -2.15
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[4] => Array
(
[x] => -0.327288
[y] => 0.0778644
[z] => -6.4
[scale] => 0.35
[rot] => 0.785398
[file] => Doodads\Cityscape\Structures\City_LowWall_TallEndCap\City_LowWall_TallEndCap.mdl
[red] => 75
[green] => 75
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[5] => Array
(
[x] => -0.353217
[y] => 0.156423
[z] => 38.4
[scale] => 0.75
[rot] => 1.5708
[file] => Doodads\Cityscape\Props\MagicRunes\MagicRunes0.mdl
[red] => 1
[green] => 1
[blue] => 1
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[6] => Array
(
[x] => -0.14972
[y] => -0.00658333
[z] => -12.8
[scale] => 1.25
[rot] => 0.715585
[file] => Abilities\Spells\Other\GeneralAuraTarget\GeneralAuraTarget.mdl
[red] => 110
[green] => 110
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
)
[dmgTable] => Array
(
)
[triggers] => Array
(
[0] => Array
(
[name] => Header
[code] => globals
//@export
BuffType ashbringer_mirror_buff
//@export
BuffType ashbringer_reflect_buff
endglobals
function ashbringer_mirror_second takes Buff b1, Tower tower, Creep target, real duration, real chance returns Buff
local Buff b2
local Iterate i
local Creep next
local real hp
local real highest = 0
local Creep highest_next = 0
local integer level = tower.getLevel()
set i = Iterate.overUnitsInRangeOfUnit(tower, TARGET_TYPE_CREEPS, target, 600)
loop
set next = i.next()
exitwhen next==0
set b2 = next.getBuffOfType(ashbringer_mirror_buff)
set hp = GetUnitState(next.getUnit(), UNIT_STATE_LIFE)
if (hp > highest or highest_next==0) and b2 == 0 and next != target then
set highest = hp
set highest_next = next
endif
endloop
if highest_next != 0 and highest_next != target then
call Effect.createSimpleOnUnit("Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdl", highest_next, "origin").setLifetime(1)
set b2 = ashbringer_mirror_buff.applyAdvanced(tower, highest_next, level, level, duration)
set b1.userInt = highest_next
set b2.userReal = chance
set b2.userInt = target
endif
return b2
endfunction
//@export
function ashbringer_mirror_cast takes Tower tower, Creep target, real duration, real chance returns nothing
local Buff b1 = target.getBuffOfType(ashbringer_mirror_buff)
local Buff b2
local integer level = tower.getLevel()
call Effect.createSimpleOnUnit("Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdl", target, "origin").setLifetime(1)
if b1 == 0 then
set b1 = ashbringer_mirror_buff.applyAdvanced(tower, target, level, level, duration)
set b1.userReal = chance
set b1.userInt = 0
set b2 = ashbringer_mirror_second(b1, tower, target, duration, chance)
else
call b1.refreshDuration()
if b1.userInt != 0 then
set b2 = b1.userInt
call b2.refreshDuration()
else
set b2 = ashbringer_mirror_second(b1, tower, target, duration, chance)
endif
endif
endfunction
function ashbringer_mirror_ondamaged takes Buff b1 returns nothing
local Tower tower = b1.getCaster()
local Creep buffed = b1.getBuffedUnit()
local real damage = Event.damage * Event.getCriticalMultiplier() // / tower.getProp_SpellDmgDealt()
local Creep target
local Buff b2
local Playor p = tower.getOwner()
local real life
if b1.userInt > 0 and damage > 0 then
set target = b1.userInt
if target.getUID() >= 0 then
set b2 = target.getBuffOfType(ashbringer_mirror_buff)
if b2 != 0 then
if tower.calcChance(b1.userReal) then
set life = GetWidgetLife(target.getUnit())
if damage > life then
call tower.killInstantly(target)
else
call SetWidgetLife(target.getUnit(), life - damage)
call tower.addToDamageDealt(R2I(damage))
endif
call Lightning.createFromUnitToUnit("PMBZ", buffed, target).setLifetime(0.1)
call p.displaySmallFloatingText(I2S(R2I(damage)), target, 255, 115, 255, 20.0)
endif
else
set b1.userInt = 0
endif
else
if tower.calcChance(b1.userReal) then
set Event.damage = Event.damage * 2
call tower.addToDamageDealt(R2I(damage))
call p.displaySmallFloatingText(I2S(R2I(damage)), buffed, 255, 115, 255, 20.0)
endif
endif
elseif damage > 0 then
if tower.calcChance(b1.userReal) then
set Event.damage = Event.damage * 2
call tower.addToDamageDealt(R2I(damage))
call p.displaySmallFloatingText(I2S(R2I(damage)), buffed, 255, 115, 255, 20.0)
endif
endif
endfunction
function ashbringer_reflect_ondamaged takes Buff b returns nothing
local Creep target = b.getBuffedUnit()
local real life_perc = (Event.damage * Event.getCriticalMultiplier()) / GetUnitState(target.getUnit(), UNIT_STATE_MAX_LIFE)
if life_perc > 0.0001 then
call target.subtractManaPerc(life_perc, true)
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
set ashbringer_mirror_buff = BuffType.create(10, 1, false)
call ashbringer_mirror_buff.setBuffIcon('@@0@@')
call ashbringer_mirror_buff.addEventOnDamaged(EventHandler.ashbringer_mirror_ondamaged, 1.0, 0.0)
set ashbringer_reflect_buff = BuffType.createAuraEffectType(false)
call ashbringer_reflect_buff.setBuffIcon('@@1@@')
call ashbringer_reflect_buff.addEventOnDamaged(EventHandler.ashbringer_reflect_ondamaged, 1.0, 0.0)
endfunction
[values] => Array
(
[visible] => false
[icon] =>
[name] =>
[short_explain] =>
[long_explain] =>
)
)
[1] => Array
(
[name] => Tower Aura
[code] => Array
(
)
[values] => Array
(
[AURA_powerAdd] => 1
[visible] => true
[AURA_auraEffect] => ashbringer_reflect_buff
[AURA_levelAdd] => 1
[AURA_power] => 0
[icon] => ReplaceableTextures\CommandButtons\BTNGenericSpellImmunity.blp
[AURA_targetType] => TARGET_TYPE_CREEPS
[long_explain] => Enemies within |cffFFFF801000|r range will lose a percentage of their mana whenever they are damaged. The mana lost is equal to the percentage of health they lost from the damage taken.
[AURA_targetSelf] => false
[name] => Mana Reflection
[AURA_level] => 0
[short_explain] => Enemies within range lose mana when they take damage.
[AURA_auraRange] => 1000
)
)
[2] => Array
(
[name] => Autocast
[code] => local real duration = 5 + (tower.getLevel() * 0.2)
local real chance = 0.2 + (tower.getLevel() * 0.006)
call ashbringer_mirror_cast(tower, Event.getTarget(), duration, chance)
[values] => Array
(
[AUTOCAST_cooldown] => 2
[AUTOCAST_autoRange] => 1000
[AUTOCAST_manacost] => 50
[icon] => ReplaceableTextures\CommandButtons\BTNSoulGem.blp
[AUTOCAST_range] => 1000
[AUTOCAST_targetType] => TARGET_TYPE_CREEPS
[AUTOCAST_numBuffsBeforeIdle] => 1
[caster_art] =>
[long_explain] => Applies Fate Mirror to the target and to one other enemy in |cffFFFF80600|r range of the target, lasting |cffFFFF805|r seconds. Damage dealt to either enemy has a |cffFFFF8020%|r chance to be copied to the other. If there isn't a second enemy, then Fate Mirror will copy damage to the creep that it is on.|n|nCopied damage is not affected by any stats and cannot crit.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+0.6%|r chance|n|cffFFFF80+0.2|r seconds duration
[target_art] =>
[AUTOCAST_autocastType] => AC_TYPE_OFFENSIVE_BUFF
[AUTOCAST_buffType] => ashbringer_mirror_buff
[AUTOCAST_isExtended] => false
[name] => Fate Mirror
[AUTOCAST_targetSelf] => false
[short_explain] => Links two enemies together, duplicating some of the damage they take.
)
)
)
[abilities] => Array
(
)
[buffs] => Array
(
[0] => Array
(
[id] => @@0@@
[derivedFrom] => Binf
[oeValues] => Array
(
[Buffubertip] => Damage is sometimes copied to the linked creep.
[TargetArt] => Abilities\Spells\Items\AIso\BIsvTarget.mdl
[Bufftip] => Fate Mirror
[Buffart] => ReplaceableTextures\CommandButtons\BTNSoulGem.blp
)
)
[1] => Array
(
[id] => @@1@@
[derivedFrom] => Binf
[oeValues] => Array
(
[Targetattach] => Array
(
)
[Buffubertip] => Damage taken is sometimes duplicated and removes mana.
[TargetArt] => Array
(
)
[Bufftip] => Mana Reflection
[Buffart] => ReplaceableTextures\CommandButtons\BTNGenericSpellImmunity.blp
)
)
)
[units] => Array
(
)
[references] => Array
(
[0] => Array
(
[export] => true
[category] => global
[typ] => BuffType
[name] => ashbringer_mirror_buff
)
[1] => Array
(
[export] => true
[category] => global
[typ] => BuffType
[name] => ashbringer_reflect_buff
)
)
[lightning] => Array
(
)
)