Array
(
[scriptVersion] => 8
[oeValues] => Array
(
[auto] => Array
(
)
[Art] => ReplaceableTextures\CommandButtons\BTNManaRelay.blp
[dmgplus1] => 0
[bldtm] => 1
[goldcost] => 1500
[unitSound] => ArcaneVault
[sides1] => 1
[manaN] => 1000
[acquire] => 750
[upgrades] => Array
(
)
[Upgrade] => Array
(
)
[Name] => Leyline Relay
[weapTp1] => missile
[MissileHoming] => 1
[file] => .mdl
[uberSplat] => YTDG
[Missileart] => Abilities\Weapons\WingedSerpentMissile\WingedSerpentMissile.mdl
[Missilespeed] => 1300
[dice1] => 1
[RngBuff1] => 250
[rangeN1] => 750
[atkType1] => normal
[cool1] => 4
[Ubertip] => Controls the flow of magic to redirect mana between Arcane towers.
[scaleBull] => 0
[abilList] => Array
(
)
[buildingShadow] => Array
(
)
[targs1] => Array
(
)
[teamColor] => 1
)
[settings] => Array
(
[balanceTip] => Array
(
)
[abil_factor] => 0
[author] => Ashbringer
[alpha] => 0
[authorDisplay] => |cffff6600Ashbringer|r
[version] => 1.0
[element] => arcane
[rarity] => unique
)
[effects] => Array
(
[0] => Array
(
[x] => -43.0056
[y] => -42.8818
[z] => -6.4
[scale] => 0.2
[rot] => 0.785398
[file] => war3mapImported\Square_Column.mdl
[red] => 15
[green] => 15
[blue] => 115
[alpha] => 255
[pitch] => -0.78
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[1] => Array
(
[x] => 43.0542
[y] => -42.8549
[z] => -6.4
[scale] => 0.2
[rot] => 2.3562
[file] => war3mapImported\Square_Column.mdl
[red] => 15
[green] => 15
[blue] => 115
[alpha] => 255
[pitch] => -0.78
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[2] => Array
(
[x] => 43.0529
[y] => 43.1274
[z] => -6.4
[scale] => 0.2
[rot] => 3.92699
[file] => war3mapImported\Square_Column.mdl
[red] => 15
[green] => 15
[blue] => 115
[alpha] => 255
[pitch] => -0.78
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[3] => Array
(
[x] => -43.1005
[y] => 42.842
[z] => -6.4
[scale] => 0.2
[rot] => 5.49779
[file] => war3mapImported\Square_Column.mdl
[red] => 15
[green] => 15
[blue] => 115
[alpha] => 255
[pitch] => -0.78
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[4] => Array
(
[x] => -0.00278555
[y] => 0.0773668
[z] => 38.4
[scale] => 0.25
[rot] => 3.92699
[file] => Doodads\Cityscape\Structures\City_LowWall_TallEndCap\City_LowWall_TallEndCap.mdl
[red] => 45
[green] => 15
[blue] => 115
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[5] => Array
(
[x] => -0.636699
[y] => -20.9318
[z] => 0.000000953674
[scale] => 0.15
[rot] => 1.5708
[file] => war3mapImported\City_ColumnSemiCircle2.mdl
[red] => 45
[green] => 15
[blue] => 135
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[6] => Array
(
[x] => 0.497456
[y] => 20.75
[z] => 0.000000953674
[scale] => 0.15
[rot] => 4.71239
[file] => war3mapImported\City_ColumnSemiCircle2.mdl
[red] => 45
[green] => 15
[blue] => 135
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[7] => Array
(
[x] => -0.178532
[y] => 0.196396
[z] => -12.8
[scale] => 1.45
[rot] => 6.14356
[file] => Abilities\Spells\Other\GeneralAuraTarget\GeneralAuraTarget.mdl
[red] => 1
[green] => 1
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[8] => Array
(
[x] => -0.212805
[y] => -13.6809
[z] => 12.8
[scale] => 0.15
[rot] => 1.5708
[file] => war3mapImported\City_ColumnSemiCircle2.mdl
[red] => 45
[green] => 15
[blue] => 135
[alpha] => 255
[pitch] => -0.78
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[9] => Array
(
[x] => 0.337816
[y] => 13.8471
[z] => 12.8
[scale] => 0.15
[rot] => 4.71239
[file] => war3mapImported\City_ColumnSemiCircle2.mdl
[red] => 45
[green] => 15
[blue] => 135
[alpha] => 255
[pitch] => -0.78
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[10] => Array
(
[x] => 40.9183
[y] => -41.1174
[z] => 0
[scale] => 0.2
[rot] => 3.92699
[file] => Doodads\Cityscape\Structures\City_LowWall_TallEndCap\City_LowWall_TallEndCap.mdl
[red] => 45
[green] => 15
[blue] => 115
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[11] => Array
(
[x] => -40.981
[y] => -41.085
[z] => 0
[scale] => 0.2
[rot] => 3.92699
[file] => Doodads\Cityscape\Structures\City_LowWall_TallEndCap\City_LowWall_TallEndCap.mdl
[red] => 45
[green] => 15
[blue] => 115
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[12] => Array
(
[x] => -41.1946
[y] => 40.909
[z] => 0
[scale] => 0.2
[rot] => 3.92699
[file] => Doodads\Cityscape\Structures\City_LowWall_TallEndCap\City_LowWall_TallEndCap.mdl
[red] => 45
[green] => 15
[blue] => 115
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[13] => Array
(
[x] => 41.0338
[y] => 41.061
[z] => 0
[scale] => 0.2
[rot] => 3.92699
[file] => Doodads\Cityscape\Structures\City_LowWall_TallEndCap\City_LowWall_TallEndCap.mdl
[red] => 45
[green] => 15
[blue] => 115
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[14] => Array
(
[x] => -0.0952182
[y] => 0.184714
[z] => 19.2
[scale] => 1.75
[rot] => 4.81711
[file] => Abilities\Weapons\SpiritOfVengeanceMissile\SpiritOfVengeanceMissile.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[15] => Array
(
[x] => -0.0334501
[y] => -0.12225
[z] => -6.4
[scale] => 1.4
[rot] => 4.71021
[file] => Abilities\Spells\Undead\Possession\PossessionTarget.mdl
[red] => 1
[green] => 1
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[16] => Array
(
[x] => -0.0477642
[y] => 0.0800026
[z] => 0
[scale] => 1.25
[rot] => 3.13615
[file] => Abilities\Spells\Undead\Possession\PossessionTarget.mdl
[red] => 1
[green] => 1
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[17] => Array
(
[x] => 0.0419781
[y] => 0.249668
[z] => 6.4
[scale] => 3
[rot] => 1.27409
[file] => Abilities\Spells\Human\ManaFlare\ManaFlareTarget.mdl
[red] => 115
[green] => 115
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[18] => Array
(
[x] => -0.0809763
[y] => 0.12152
[z] => -12.8
[scale] => 1.15
[rot] => 2.87055
[file] => Abilities\Spells\Undead\Possession\PossessionTarget.mdl
[red] => 1
[green] => 1
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[19] => Array
(
[x] => -0.0460696
[y] => 0.106506
[z] => 25.6
[scale] => 0.9
[rot] => 0.175136
[file] => Abilities\Spells\Undead\Possession\PossessionTarget.mdl
[red] => 1
[green] => 1
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[20] => Array
(
[x] => -40.0097
[y] => -40.0881
[z] => 25.6
[scale] => 0.26
[rot] => 0.783264
[file] => Doodads\Cinematic\GlowingRunes\GlowingRunes4.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[21] => Array
(
[x] => 41.3754
[y] => -40.0101
[z] => 25.6
[scale] => 0.26
[rot] => 2.39378
[file] => Doodads\Cinematic\GlowingRunes\GlowingRunes4.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[22] => Array
(
[x] => 41.1333
[y] => 40.6299
[z] => 25.6
[scale] => 0.26
[rot] => 3.9239
[file] => Doodads\Cinematic\GlowingRunes\GlowingRunes4.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[23] => Array
(
[x] => -41.011
[y] => 39.947
[z] => 25.6
[scale] => 0.26
[rot] => 5.49013
[file] => Doodads\Cinematic\GlowingRunes\GlowingRunes4.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[24] => Array
(
[x] => -0.0757366
[y] => -0.0166935
[z] => 89.6
[scale] => 0.8
[rot] => 2.42601
[file] => Abilities\Weapons\SpiritOfVengeanceMissile\SpiritOfVengeanceMissile.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[25] => Array
(
[x] => -13.8113
[y] => 0.343159
[z] => 12.8
[scale] => 0.15
[rot] => 0.000000119209
[file] => war3mapImported\City_ColumnSemiCircle2.mdl
[red] => 45
[green] => 15
[blue] => 135
[alpha] => 255
[pitch] => -0.78
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[26] => Array
(
[x] => 13.7167
[y] => -0.207462
[z] => 12.8
[scale] => 0.15
[rot] => 3.14159
[file] => war3mapImported\City_ColumnSemiCircle2.mdl
[red] => 45
[green] => 15
[blue] => 135
[alpha] => 255
[pitch] => -0.78
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
)
[dmgTable] => Array
(
)
[triggers] => Array
(
[0] => Array
(
[name] => Header
[code] => globals
endglobals
struct ashbringer_relay
Tower tower
Effect fx
Lightning l
boolean active = false
string in_out
method cleanup takes nothing returns nothing
set .tower = 0
set .active = false
if .fx != 0 then
call .fx.destroy()
endif
if .l != 0 then
call .l.destroy()
endif
endmethod
endstruct
function ashbringer_relay_update takes Tower tower returns nothing
local real mana_perc = GetUnitState(tower.getUnit(), UNIT_STATE_MANA) / GetUnitState(tower.getUnit(), UNIT_STATE_MAX_MANA)
local real diff = (mana_perc - tower.userReal)
if diff > 0 then
call tower.subtractManaPerc(diff * 0.9, true)
elseif diff < 0 then
call tower.addManaPerc(-diff * 0.9)
endif
set tower.userReal = tower.userReal + (diff * (1 - 0.9))
endfunction
function ashbringer_relay_input_apply takes Tower tower, Tower target returns nothing
local Playor playor = tower.getOwner()
local ashbringer_relay input = tower.userInt
local ashbringer_relay output = tower.userInt2
local real target_z = 30
if target == output.tower then
call playor.displayText("|cffFF0000Cannot target the Output tower.|r")
call playor.playSound(snd_error)
elseif target.getElement() != Element.ARCANE then
call playor.displayText("|cffFF0000Can only target |r|cFFFF77FFArcane|r|cffFF0000 towers.|r")
call playor.playSound(snd_error)
elseif target == input.tower then
call input.cleanup()
elseif target.getOwner() != playor then
call playor.displayText("|cffFF0000Can only target towers you own.|r")
call playor.playSound(snd_error)
elseif GetUnitState(target.getUnit(), UNIT_STATE_MAX_MANA)<1 then
call playor.displayText("|cffFF0000Must target a tower that has mana.|r")
call playor.playSound(snd_error)
else
if input.active == true then
call input.fx.destroy()
call input.l.destroy()
endif
set input.tower = target
if target.getTowerType() == tower.getTowerType() then
set target_z = 95
endif
set input.active = true
set input.l = Lightning.createFromPointToPoint("DRAM", tower.getX(), tower.getY(), 95, target.getX(), target.getY(), target_z)
set input.fx = Effect.createScaled("Abilities\\Spells\\Other\\Drain\\ManaDrainTarget.mdl", target.getX(), target.getY(), target_z-20, 0.0, 1.0)
endif
set tower.userInt = input
endfunction
function ashbringer_relay_output_apply takes Tower tower, Tower target returns nothing
local Playor playor = tower.getOwner()
local ashbringer_relay input = tower.userInt
local ashbringer_relay output = tower.userInt2
local real target_z = 30
if target == input.tower then
call playor.displayText("|cffFF0000Cannot target the Input tower.|r")
call playor.playSound(snd_error)
elseif target.getElement() != Element.ARCANE then
call playor.displayText("|cffFF0000Can only target |r|cFFFF77FFArcane|r|cffFF0000 towers.|r")
call playor.playSound(snd_error)
elseif target == output.tower then
call output.cleanup()
elseif target.getOwner() != playor then
call playor.displayText("|cffFF0000Can only target towers you own.|r")
call playor.playSound(snd_error)
elseif GetUnitState(target.getUnit(), UNIT_STATE_MAX_MANA)<1 then
call playor.displayText("|cffFF0000Must target a tower that has mana.|r")
call playor.playSound(snd_error)
else
if output.active == true then
call output.fx.destroy()
call output.l.destroy()
endif
set output.tower = target
if target.getTowerType() == tower.getTowerType() then
set target_z = 95
endif
set output.active = true
set output.l = Lightning.createFromPointToPoint("DRAM", target.getX(), target.getY(), target_z, tower.getX(), tower.getY(), 95)
set output.fx = Effect.createScaled("Abilities\\Spells\\Other\\Drain\\ManaDrainCaster.mdl", target.getX(), target.getY(), target_z-20, 0.0, 1.0)
endif
set tower.userInt2 = output
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
endfunction
[values] => Array
(
[visible] => false
[icon] =>
[name] =>
[short_explain] =>
[long_explain] =>
)
)
[1] => Array
(
[name] => On Tower Destruction
[code] => local ashbringer_relay input = tower.userInt
local ashbringer_relay output = tower.userInt2
call input.cleanup()
call output.cleanup()
call input.destroy()
call output.destroy()
[values] => Array
(
[visible] => false
[icon] =>
[name] =>
[short_explain] =>
[long_explain] =>
)
)
[2] => Array
(
[name] => Periodic
[code] => local ashbringer_relay input = tower.userInt
local ashbringer_relay output = tower.userInt2
local real mana
local real mana_perc
local real regen_mana = 1.0 + tower.getProp_ManaRegPercBonus()
local real source_mana
local real source_max_mana
local real target_mana
local real target_max_mana
call ashbringer_relay_update(tower)
if input.active == true then
if input.tower.getTowerType() == tower.getTowerType() then
call ashbringer_relay_update(input.tower)
endif
set source_mana = GetUnitState(input.tower.getUnit(), UNIT_STATE_MANA)
set source_max_mana = GetUnitState(input.tower.getUnit(), UNIT_STATE_MAX_MANA)
set target_mana = GetUnitState(tower.getUnit(), UNIT_STATE_MANA)
set target_max_mana = GetUnitState(tower.getUnit(), UNIT_STATE_MAX_MANA)
//does input have mana and is relay below threshold
if source_max_mana > 0 and target_mana / target_max_mana < 0.8 then
//is input above threshold
if source_mana / source_max_mana > 0.2 then
set mana = source_mana * 0.02 * regen_mana
set mana_perc = mana / source_max_mana
if mana_perc > 0 then
call input.tower.subtractManaPerc(mana_perc, true)
call tower.addManaPerc(mana_perc)
set tower.userReal = RMinBJ(1.0, tower.userReal + mana_perc)
if input.tower.getTowerType() == tower.getTowerType() then
set input.tower.userReal = RMaxBJ(0.0, input.tower.userReal - mana_perc)
call ashbringer_relay_update(input.tower)
endif
endif
endif
elseif source_max_mana <= 0 then
call input.cleanup()
endif
endif
if output.active == true then
if tower.getTowerType() == output.tower.getTowerType() then
call ashbringer_relay_update(output.tower)
endif
set source_mana = GetUnitState(tower.getUnit(), UNIT_STATE_MANA)
set source_max_mana = GetUnitState(tower.getUnit(), UNIT_STATE_MAX_MANA)
set target_mana = GetUnitState(output.tower.getUnit(), UNIT_STATE_MANA)
set target_max_mana = GetUnitState(output.tower.getUnit(), UNIT_STATE_MAX_MANA)
//does output have mana and is the relay above threshold
if target_max_mana > 0 and source_mana / source_max_mana > 0.2 then
//is output below threshold
if target_mana / target_max_mana < 0.8 then
set mana = target_mana * 0.02 * regen_mana
set mana_perc = mana / target_max_mana
if mana_perc > 0 then
call tower.subtractManaPerc(mana_perc, true)
call output.tower.addManaPerc(mana_perc)
set tower.userReal = RMaxBJ(0.0, tower.userReal - mana_perc)
if tower.getTowerType() == output.tower.getTowerType() then
set output.tower.userReal = RMinBJ(1.0, output.tower.userReal + mana_perc)
call ashbringer_relay_update(output.tower)
endif
endif
endif
elseif target_max_mana <= 0 then
call output.cleanup()
endif
endif
call ashbringer_relay_update(tower)
[values] => Array
(
[visible] => true
[PERIODIC_period] => 1.0
[icon] => ReplaceableTextures\CommandButtons\BTNAbsorbMagic.blp
[name] => Tapped Leyline
[short_explain] => The relay's mana pool is resistant to outside interference.
[long_explain] => If the relay's mana pool is altered by an outside source that isn't another relay, then the mana gained or lost is reduced by |cffffff8090%|r.
)
)
[3] => Array
(
[name] => Autocast
[code] => call ashbringer_relay_output_apply(tower, Event.getTarget())
[values] => Array
(
[AUTOCAST_cooldown] => 10
[AUTOCAST_autoRange] => 0
[AUTOCAST_manacost] => 0
[icon] => ReplaceableTextures\CommandButtons\BTNNagaUnBurrow.blp
[AUTOCAST_range] => 450
[AUTOCAST_targetType] => 0
[AUTOCAST_numBuffsBeforeIdle] => 0
[caster_art] =>
[long_explain] => Set a targeted |cFFFF77FFArcane|r tower that you own as the output tower. While the relay is above |cffffff8020%|r mana and the output tower is below |cffffff8080%|r mana, the relay loses |cffffff802%|r of its current mana per second. The output tower gains up to |cffffff802%|r of its maximum mana based on the amount of mana the relay lost relative to its maximum mana. Mana transfer scales with the relay's mana regeneration stat.|n|nCannot be used on this relay's input tower or towers with no mana. Targeting the same tower again will remove the effect.
[target_art] => Abilities\Spells\Other\Charm\CharmTarget.mdl
[AUTOCAST_autocastType] => AC_TYPE_NOAC_PLAYER_TOWER
[AUTOCAST_buffType] => 0
[AUTOCAST_isExtended] => false
[name] => Output
[AUTOCAST_targetSelf] => false
[short_explain] => Transfers mana from the relay to a target tower.
)
)
[4] => Array
(
[name] => Autocast
[code] => call ashbringer_relay_input_apply(tower, Event.getTarget())
[values] => Array
(
[AUTOCAST_cooldown] => 10
[AUTOCAST_autoRange] => 0
[AUTOCAST_manacost] => 0
[icon] => ReplaceableTextures\CommandButtons\BTNNagaBurrow.blp
[AUTOCAST_range] => 450
[AUTOCAST_targetType] => 0
[AUTOCAST_numBuffsBeforeIdle] => 0
[caster_art] =>
[long_explain] => Set a targeted |cFFFF77FFArcane|r tower that you own as the input tower. While the input tower is above |cffffff8020%|r mana and the relay is below |cffffff8080%|r mana, the source tower loses |cffffff802%|r of its current mana per second. The relay gains up to |cffffff802%|r of its maximum mana based on the amount of mana the input tower lost relative to its maximum mana. Mana transfer scales with the relay's mana regeneration stat.|n|nCannot be used on this relay's output tower or towers with no mana. Targeting the same tower again will remove the effect.
[target_art] => Abilities\Spells\Other\Charm\CharmTarget.mdl
[AUTOCAST_autocastType] => AC_TYPE_NOAC_PLAYER_TOWER
[AUTOCAST_buffType] => 0
[AUTOCAST_isExtended] => false
[name] => Input
[AUTOCAST_targetSelf] => false
[short_explain] => Transfer mana from a target tower to the relay.
)
)
[5] => Array
(
[name] => On Tower Creation
[code] => local ashbringer_relay input = ashbringer_relay.create()
local ashbringer_relay output = ashbringer_relay.create()
set input.in_out = "in"
set output.in_out = "out"
set tower.userInt = input
set tower.userInt2 = output
[values] => Array
(
[visible] => false
[icon] =>
[name] =>
[short_explain] =>
[long_explain] =>
)
)
)
[abilities] => Array
(
)
[buffs] => Array
(
)
[units] => Array
(
)
[references] => Array
(
)
[lightning] => Array
(
)
)