Array
(
[scriptVersion] => 8
[oeValues] => Array
(
[auto] => Array
(
)
[Art] => ReplaceableTextures\CommandButtons\BTNBanshee.blp
[turnRate] => 3
[dmgplus1] => 45
[bldtm] => 1
[goldcost] => 125
[unitSound] => Banshee
[sides1] => 1
[Missilearc] => 0.1
[manaN] => 100
[acquire] => 1000
[upgrades] => Array
(
)
[Upgrade] => Array
(
)
[Name] => Cold Wraith
[red] => 55
[weapTp1] => missile
[MissileHoming] => 1
[file] => units\undead\Banshee\Banshee.mdl
[uberSplat] => YTDN
[Missileart] => war3mapImported\BansheeMissileBlue.mdl
[Missilespeed] => 1400
[dice1] => 1
[RngBuff1] => 250
[regenMana] => 2
[green] => 175
[modelScale] => 0.6
[rangeN1] => 1000
[atkType1] => normal
[cool1] => 1.8
[Ubertip] => Although this forlorn soul bears no malice, her kiss remains forever lethal.
[scaleBull] => 0
[abilList] => Array
(
)
[moveHeight] => 20
[customTeamColor] => 1
[buildingShadow] => Array
(
)
[targs1] => Array
(
)
[weapsOn] => 1
[teamColor] => 9
)
[settings] => Array
(
[balanceTip] => |cffFFFF00+2% |rbuff duration/lvl
[abil_factor] => 0.2
[author] => Ashbringer
[alpha] => 185
[authorDisplay] => |cffff6600Ashbringer|r
[version] => 1.0
[element] => ice
[rarity] => uncommon
)
[effects] => Array
(
[0] => Array
(
[x] => -28.6586
[y] => -31.2144
[z] => -12.8
[scale] => 0.35
[rot] => 0.733038
[file] => Doodads\Ruins\Plants\Ruins_Shrub\Ruins_Shrub1.mdl
[red] => 35
[green] => 85
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[1] => Array
(
[x] => 21.5281
[y] => 16.3451
[z] => 0
[scale] => 0.4
[rot] => 4.89265
[file] => Doodads\Cityscape\Props\CityGrave\CityGrave0.mdl
[red] => 115
[green] => 155
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[2] => Array
(
[x] => 0.00463893
[y] => -0.0131363
[z] => -12.8
[scale] => 1.05
[rot] => 4.36332
[file] => war3mapImported\GeneralAuraTargetWhite.mdl
[red] => 25
[green] => 155
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[3] => Array
(
[x] => -34.8649
[y] => -6.52717
[z] => 0
[scale] => 0.3
[rot] => 4.7822
[file] => Doodads\Icecrown\Water\IceEdge\IceEdge2.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[4] => Array
(
[x] => -0.478405
[y] => 10.7448
[z] => -6.4
[scale] => 0.5
[rot] => 4.13574
[file] => Doodads\Icecrown\Water\IceEdge\IceEdge2.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[5] => Array
(
[x] => 2.37199
[y] => -44.8784
[z] => -19.2
[scale] => 0.4
[rot] => 2.38374
[file] => Doodads\Ruins\Plants\Ruins_Shrub\Ruins_Shrub1.mdl
[red] => 35
[green] => 85
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[6] => Array
(
[x] => 33.5619
[y] => -30.1838
[z] => 0
[scale] => 0.2
[rot] => 3.7016
[file] => Doodads\Icecrown\Water\IceEdge\IceEdge2.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[7] => Array
(
[x] => 39.8239
[y] => -10.1818
[z] => 0
[scale] => 0.2
[rot] => 4.98681
[file] => Doodads\Icecrown\Water\IceEdge\IceEdge2.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[8] => Array
(
[x] => -15.1332
[y] => 28.9894
[z] => 0
[scale] => 0.55
[rot] => 4.71355
[file] => Doodads\Northrend\Plants\North_Thorns\North_Thorns2.mdl
[red] => 55
[green] => 175
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[9] => Array
(
[x] => 39.2974
[y] => -18.1124
[z] => 0
[scale] => 0.1
[rot] => 4.38078
[file] => Doodads\Icecrown\Rocks\Icecrown_Crystal\Icecrown_Crystal2.mdl
[red] => 155
[green] => 155
[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] => On Level Up
[code] => set tower.userReal = 0.05 + (tower.getLevel() * 0.002)
set tower.userReal2 = 5 + (tower.getLevel() * 0.2)
[values] => Array
(
[visible] => false
[icon] =>
[name] =>
[short_explain] =>
[long_explain] =>
)
)
[1] => Array
(
[name] => Header
[code] => globals
//@export
ProjectileType ashbringer_wisp_missile
//@export
BuffType ashbringer_kiss_aura
BuffType ashbringer_kiss_buff
endglobals
function ashbringer_kiss_apply takes Tower tower, Unit target returns nothing
local Buff b = target.getBuffOfType(ashbringer_kiss_buff)
if b != 0 then
set b.userInt = b.userInt + 1
set b.userReal = tower.userReal2
call b.refreshDuration()
else
set b = ashbringer_kiss_buff.apply(tower, target, tower.getLevel())
set b.userInt = 1
set b.userInt3 = 0
set b.userReal = tower.userReal2
endif
endfunction
function ashbringer_kiss_onattack takes Buff b returns nothing
local Tower caster = b.getCaster()
local Tower attacker = b.getBuffedUnit()
if attacker.calcChance(caster.userReal * attacker.getBaseAttackspeed()) then
call ashbringer_kiss_apply(caster, Event.getTarget())
endif
endfunction
function ashbringer_kiss_ondamaged takes Buff b returns nothing
local Tower caster = b.getCaster()
local Tower attacker = Event.getTarget()
local Unit target = b.getBuffedUnit()
if b.userInt3 == 1 then
return
endif
set b.userInt3 = 1
call caster.doSpellDamage(target, b.userInt * b.userReal * attacker.getBaseAttackspeed(), caster.calcSpellCritNoBonus())
set b.userInt3 = 0
endfunction
//@export
function AngleDifference takes real a, real b returns real
local real diff = a - b
loop
exitwhen diff <= 180 and diff >= -180
if diff > 180 then
set diff = diff - 360
elseif diff < -180 then
set diff = diff + 360
endif
endloop
return diff
endfunction
function ashbringer_wisp_attack takes Tower tower, Projectile p returns nothing
local Iterate i = Iterate.overUnitsInRangeOfCaster(tower, TARGET_TYPE_CREEPS, tower.getRange())
local Unit next
loop
set next = i.nextRandom()
exitwhen next == 0
exitwhen not next.isImmune()
endloop
if next !=0 then
call i.destroy()
call p.disablePeriodic()
set p.speed = 900
set p.accelerate = 10
call p.aimAtUnit(next, true, false, false)
else
set p.userInt = 0
endif
endfunction
function ashbringer_wisp_update takes Projectile p returns nothing
local Tower tower = p.getCaster()
local real ox = tower.getX()
local real oy = tower.getY()
local real currentFacing = p.direction
local real desiredAngle
local real angleDiff
local real distance
local real z
local real turnRate
local real maxTurn = 12.0
local real wanderJitter = 1.5
local real wanderInfluence = 1.1
set p.userReal = p.userReal + 0.2
if p.userInt == 2 then
if p.userReal >= 0.5 then
set p.speed = 350
set p.userInt = 0
set p.userReal = 0
set p.zangle = 0
call p.setZSpeed(0)
endif
elseif p.userReal >= 2.6 then
if p.userInt3 == tower.getUID() then
set p.remainingLifetime = 5000
set p.userReal = 0
set p.userInt = 1
call ashbringer_wisp_attack(tower, p)
else
call p.destroy()
endif
elseif p.userInt == 0 then
set z = p.getAbsoluteZ()
if z >=250 and z <=400 then
call p.setZSpeed(0)
elseif p.z < 250 then
call p.setZSpeed(2)
elseif p.z > 400 then
call p.setZSpeed(-2)
endif
set distance = SquareRoot((p.x - ox)*(p.x - ox) + (p.y - oy)*(p.y - oy))
set desiredAngle = AngleBetweenPoints(Location(p.x, p.y), Location(ox, oy))
set angleDiff = AngleDifference(desiredAngle, currentFacing)
set p.userReal3 = p.userReal3 + GetRandomReal(-wanderJitter, wanderJitter)
if p.userReal3 > 3.0 then
set p.userReal3 = 3.0
elseif p.userReal3 < -3.0 then
set p.userReal3 = -3.0
endif
if distance > 1000.0 then
set turnRate = angleDiff * 0.25
elseif distance > 750.0 then
set turnRate = angleDiff * 0.10 + p.userReal3 * 0.3
else
set turnRate = p.userReal3 * wanderInfluence
endif
if turnRate > maxTurn then
set turnRate = maxTurn
elseif turnRate < -maxTurn then
set turnRate = -maxTurn
endif
set p.rotation = turnRate
endif
endfunction
function ashbringer_wisp_hit takes Projectile p, Unit target returns nothing
local Tower tower = p.getCaster()
local real x = p.x + (900 / 4) * Cos(Deg2Rad(p.direction))
local real y = p.y + (900 / 4) * Sin(Deg2Rad(p.direction))
call p.avertDestruction()
set p.userInt = 2
set p.userInt2 = p.userInt2 - 1
set p.speed = 900 * 0.75
set p.accelerate = 0
call p.enablePeriodic(R2I(0.2*25.0+0.5))
call p.aimAtPoint(x, y, 200, false, false)
if target != 0 then
call tower.doSpellDamage(target, p.userReal2, tower.calcSpellCritNoBonus())
call Effect.createSimpleOnUnit("Abilities\\Weapons\\ZigguratFrostMissile\\ZigguratFrostMissile.mdl", target, "chest").destroy()
call ashbringer_kiss_apply(tower, target)
endif
if p.userInt2 == 0 then
call p.destroy()
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_wisp_missile = ProjectileType.create("war3mapImported\\IllidanMissileFrost.mdx", 3000, 350)
call ashbringer_wisp_missile.enablePeriodic(ProjectileEvent.ashbringer_wisp_update, 0.2)
call ashbringer_wisp_missile.enableHoming(ProjectileTargetEvent.ashbringer_wisp_hit, 0.0)
set ashbringer_kiss_aura = BuffType.createAuraEffectType(true)
call ashbringer_kiss_aura.setBuffIcon('@@0@@')
call ashbringer_kiss_aura.addEventOnAttack(EventHandler.ashbringer_kiss_onattack, 1.0, 0.0)
set ashbringer_kiss_buff = BuffType.create(5, 0, false)
call ashbringer_kiss_buff.setBuffIcon('@@1@@')
call ashbringer_kiss_buff.addEventOnDamaged(EventHandler.ashbringer_kiss_ondamaged, 1.0, 0.0)
endfunction
[values] => Array
(
[visible] => false
[icon] =>
[name] =>
[short_explain] =>
[long_explain] =>
)
)
[2] => Array
(
[name] => Tower Aura
[code] => Array
(
)
[values] => Array
(
[AURA_powerAdd] => 1
[visible] => true
[AURA_auraEffect] => ashbringer_kiss_aura
[AURA_levelAdd] => 1
[AURA_power] => 0
[icon] => ReplaceableTextures\CommandButtons\BTNSpell_Frost_WizardMark.blp
[AURA_targetType] => TARGET_TYPE_TOWERS + TARGET_TYPE_ELEMENT_ICE
[long_explain] => |cFF00FFFFIce|r towers within |cffffff80200|r range have a |cffffff805%|r chance on attack to apply a stacking debuff which causes the target to take |cffffff805|r additional spell damage when hit. Lasts |cffffff805|r seconds.|n|nChance and damage are attack speed adjusted and the damage is dealt by this tower.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+0.2%|r chance|n|cffFFFF80+0.2|r spell damage
[AURA_targetSelf] => true
[name] => Winter's Kiss
[AURA_level] => 0
[short_explain] => |cFF00FFFFIce|r towers within |cffffff80200|r range have a chance on attack to apply a stacking debuff which causes the target to take additional spell damage when hit.
[AURA_auraRange] => 200
)
)
[3] => Array
(
[name] => Autocast
[code] => local Projectile p = Projectile.createFromUnit(ashbringer_wisp_missile, tower, tower, 270, 0, 0)
call p.disablePeriodic()
set p.speed = 900
set p.accelerate = 10
set p.userReal = 0
set p.userReal2 = 125 + (tower.getLevel() * 5)
set p.userInt = 1
set p.userInt2 = R2I(4 * tower.getProp_BuffDuration()) + 1
set p.userInt3 = tower.getUID()
call p.aimAtUnit(Event.getTarget(), true, false, false)
[values] => Array
(
[AUTOCAST_cooldown] => 3
[AUTOCAST_autoRange] => 900
[AUTOCAST_manacost] => 50
[icon] => ReplaceableTextures\CommandButtons\BTNSpell_Frost_Wisp.blp
[AUTOCAST_range] => 1000
[AUTOCAST_targetType] => 0
[AUTOCAST_numBuffsBeforeIdle] => 0
[caster_art] =>
[long_explain] => Summon a frost wisp to attack the target, dealing |cffffff80125|r spell damage and applying Winter's Kiss. The wisp will then continue to roam nearby and attack |cffffff804|r more times before disappearing.|n|nBuff duration increases the number of attacks.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+5|r spell damage
[target_art] =>
[AUTOCAST_autocastType] => AC_TYPE_OFFENSIVE_UNIT
[AUTOCAST_buffType] => 0
[AUTOCAST_isExtended] => false
[name] => Summon Frost Wisp
[AUTOCAST_targetSelf] => false
[short_explain] => Summon a wisp to attack enemies, dealing spell damage.
)
)
[4] => Array
(
[name] => On Tower Creation
[code] => call SetUnitColor(tower.getUnit(), ConvertPlayerColor(9))
set tower.userReal = 0.05 + (tower.getLevel() * 0.002)
set tower.userReal2 = 5 + (tower.getLevel() * 0.2)
[values] => Array
(
[visible] => false
[icon] =>
[name] =>
[short_explain] =>
[long_explain] =>
)
)
)
[abilities] => Array
(
)
[buffs] => Array
(
[0] => Array
(
[id] => @@0@@
[derivedFrom] => BHab
[oeValues] => Array
(
[Targetattach] => Array
(
)
[Buffubertip] => Chance to apply Winter's Kiss on attack.
[TargetArt] => Array
(
)
[Bufftip] => Winter's Kiss
[Buffart] => ReplaceableTextures\CommandButtons\BTNSpell_Frost_WizardMark.blp
)
)
[1] => Array
(
[id] => @@1@@
[derivedFrom] => BHab
[oeValues] => Array
(
[Targetattach] => chest
[Buffubertip] => Taking additional spell damage when hit.
[TargetArt] => war3mapImported\ImmolationDamageFrost.mdx
[Bufftip] => Winter's Kiss
[Buffart] => ReplaceableTextures\CommandButtons\BTNSpell_Frost_WizardMark.blp
)
)
)
[units] => Array
(
)
[references] => Array
(
[0] => Array
(
[export] => true
[category] => global
[typ] => ProjectileType
[name] => ashbringer_wisp_missile
)
[1] => Array
(
[export] => true
[category] => global
[typ] => BuffType
[name] => ashbringer_kiss_aura
)
)
[lightning] => Array
(
)
)