Array
(
[scriptVersion] => 7
[oeValues] => Array
(
[auto] => Array
(
)
[Art] => ReplaceableTextures\CommandButtons\BTNUndeadDestroyer.blp
[dmgplus1] => 7137
[bldtm] => 1
[unitSound] => Ziggurat
[goldcost] => 5000
[sides1] => 1
[acquire] => 2000
[upgrades] => Array
(
)
[Upgrade] => Array
(
)
[Name] => Dutchman's Grave
[red] => 100
[weapTp1] => missile
[MissileHoming] => 1
[file] => Doodads\LordaeronSummer\Props\Grave\Grave.mdl
[uberSplat] => OSMA
[Missilespeed] => 10000
[dice1] => 1
[RngBuff1] => 250
[green] => 100
[modelScale] => 0.6
[rangeN1] => 2000
[atkType1] => siege
[cool1] => 2.5
[Ubertip] => An inscription is written on the grave: "The admiral defeated the Dutchman and its crew near this island."
[blue] => 100
[abilList] => Array
(
)
[moveHeight] => 45
[buildingShadow] => Array
(
)
[targs1] => Array
(
)
[weapsOn] => 1
)
[settings] => Array
(
[balanceTip] => Array
(
)
[abil_factor] => 0.80
[author] => cedi
[alpha] => 255
[authorDisplay] => cedi
[version] => 1.0
[element] => darkness
[rarity] => unique
)
[effects] => Array
(
[0] => Array
(
[x] => 27.302
[y] => -29.2529
[z] => -70.4
[scale] => 0.5
[rot] => 0.872665
[file] => Doodads\Northrend\Rocks\North_Rocks\North_Rocks8.mdl
[red] => 100
[green] => 100
[blue] => 100
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
)
[1] => Array
(
[x] => -1.27701
[y] => -7.19725
[z] => 25.6
[scale] => 0.3
[rot] => 4.07657
[file] => units\nightelf\SpiritOfVengeance\SpiritOfVengeance.mdl
[red] => 150
[green] => 200
[blue] => 150
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
)
[2] => Array
(
[x] => 35.4683
[y] => 6.99733
[z] => -12.8
[scale] => 0.5
[rot] => 0.872665
[file] => Doodads\Northrend\Rocks\North_Rocks\North_Rocks8.mdl
[red] => 100
[green] => 100
[blue] => 100
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
)
[3] => Array
(
[x] => 3.15635
[y] => 19.2419
[z] => -38.4
[scale] => 0.5
[rot] => 0.872665
[file] => Doodads\Northrend\Rocks\North_Rocks\North_Rocks8.mdl
[red] => 100
[green] => 100
[blue] => 100
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
)
[4] => Array
(
[x] => -1.28159
[y] => -6.96853
[z] => 57.6
[scale] => 0.3
[rot] => 4.07657
[file] => units\nightelf\SpiritOfVengeance\SpiritOfVengeance.mdl
[red] => 150
[green] => 200
[blue] => 150
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
)
[5] => Array
(
[x] => -10.1935
[y] => -14.8373
[z] => -44.8
[scale] => 0.5
[rot] => 0.872665
[file] => Doodads\Northrend\Rocks\North_Rocks\North_Rocks8.mdl
[red] => 100
[green] => 100
[blue] => 100
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
)
[6] => Array
(
[x] => 15.8704
[y] => 6.64977
[z] => -19.2
[scale] => 0.5
[rot] => 3.15405
[file] => Doodads\Northrend\Rocks\North_Rocks\North_Rocks8.mdl
[red] => 100
[green] => 100
[blue] => 100
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
)
[7] => Array
(
[x] => -21.4599
[y] => 0.691735
[z] => -19.2
[scale] => 0.5
[rot] => 0.872665
[file] => Doodads\Northrend\Rocks\North_Rocks\North_Rocks8.mdl
[red] => 100
[green] => 100
[blue] => 100
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
)
[8] => Array
(
[x] => 9.43545
[y] => -2.75376
[z] => -6.4
[scale] => 0.8
[rot] => 3.71755
[file] => Doodads\Underground\Rocks\UndergroundStalagmite\UndergroundStalagmite2.mdl
[red] => 100
[green] => 100
[blue] => 100
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
)
[9] => Array
(
[x] => -0.00498056
[y] => -0.234652
[z] => 44.8
[scale] => 0.6
[rot] => 0
[file] => Doodads\LordaeronSummer\Props\Grave\Grave.mdl
[red] => 100
[green] => 100
[blue] => 100
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
)
)
[dmgTable] => Array
(
)
[triggers] => Array
(
[0] => Array
(
[name] => On Attack
[code] => local Dutchman d = tower.userInt
set d.target = Event.getTarget()
set d.uid = d.target.getUID()
call d.p.setHomingTarget( d.target )
[values] => Array
(
[visible] => true
[icon] => ReplaceableTextures\CommandButtons\BTNPossession.blp
[name] => Soul Attack
[short_explain] => The Dutchman attacks with a collected soul.
[ONATTACK_chance] => 1.0
[ONATTACK_chanceLevelAdd] => 0.0
[long_explain] => Every |cffFFFF805|r seconds the Dutchman attacks a random creep in |cffFFFF801200|r range with a collected soul. Deals |cffFFFF8014000|r spell damage to the target.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+1400|r spell damage
)
)
[1] => Array
(
[name] => Header
[code] => globals
ProjectileType Proj
ProjectileType Soul
ProjectileType NAttack
Cast SAttack
BuffType Panic
MultiboardValues mbvals
endglobals
struct Dutchman
Projectile p = 0
integer uid = 0
integer souls = 0
real nattack = 2.00
real sattack = 5.00
real reorder = 2.00
real soultime = 0.30
Unit target = 0
boolean soulstorm = false
method onDestroy takes nothing returns nothing
call .p.destroy()
endmethod
static method create takes Projectile p, Unit target returns thistype
local thistype this = thistype.allocate()
set .p = p
set .target = target
set .uid = target.getUID()
set .nattack = p.getCaster().getCurrentAttackspeed()
return this
endmethod
endstruct
function Storm takes Projectile p, Dutchman d, Unit tower returns nothing
local Projectile p2
if d.souls >= 2 then
set d.souls = d.souls - 2
set p2 = Projectile.create( Soul, tower, 1.00, tower.calcSpellCritNoBonus(), p.x, p.y, p.z, 0.00 )
set p2.userReal = 14000.00
set p2 = Projectile.create( Soul, tower, 1.00, tower.calcSpellCritNoBonus(), p.x, p.y, p.z, 180.00 )
set p2.userReal = 14000.00
else
set d.soulstorm = false
endif
endfunction
function NAttackHit takes Projectile p, Unit target returns nothing
local Tower T = p.getCaster()
call T.doAttackDamageAoEUnit(target, 250, T.getCurrentAttackDamageWithBonus(), T.calcAttackMulticrit(0,0,0),0)
endfunction
function NAttackFunc takes Projectile p, Unit tower returns nothing
local Iterate I = Iterate.overUnitsInRange( tower, TARGET_CREEPS, p.x, p.y, 800.00 )
local Unit U = I.nextRandom()
if U != 0 then
call I.destroy()
call Projectile.createLinearInterpolationFromPointToUnit(NAttack,tower,1,1,p.x,p.y,p.z,U,0.4,true)
endif
endfunction
function SAttackFunc takes Projectile p, Dutchman d, Unit tower returns nothing
local Iterate I
local Unit U
if d.souls >= 1 then
set I = Iterate.overUnitsInRange( tower, TARGET_CREEPS, p.x, p.y, 1200.00 )
loop
set U = I.nextRandom()
exitwhen U == 0
if not U.isImmune() then
set d.souls = d.souls - 1
call SAttack.targetCastFromPoint( tower, U, p.x, p.y, 14000.00 + I2R( tower.getLevel() ) * 1400.00, tower.calcSpellCritNoBonus())
call I.destroy()
return
endif
endloop
endif
endfunction
function Periodic takes Projectile p returns nothing
local Unit tower = p.getCaster()
local Dutchman d = p.userInt
if IsUnitType( d.target.getUnit(), UNIT_TYPE_DEAD ) or d.target == 0 or d.target.getUID() != d.uid then
call p.setHomingTarget( tower )
set d.target = tower
set d.uid = tower.getUID()
endif
set d.nattack = d.nattack - 0.1
if d.nattack <= 0.00 then
set d.nattack = d.nattack + tower.getCurrentAttackspeed()
call NAttackFunc( p, tower )
endif
set d.sattack = d.sattack - 0.1
if d.sattack <= 0.00 then
set d.sattack = 5.00
call SAttackFunc( p, d, tower )
endif
set d.reorder = d.reorder - 0.1
if d.reorder <= 0.00 then
set d.reorder = 2.00
call p.setHomingTarget( d.target )
endif
if d.soulstorm then
set d.soultime = d.soultime - 0.1
if d.soultime <= 0.00 then
set d.soultime = 0.3
call Storm( p, d, tower )
endif
endif
endfunction
function Hit takes Projectile p, Unit target returns nothing
call p.avertDestruction()
endfunction
function SoulHit takes Projectile p, Unit target returns nothing
call SFXOnUnit( "Abilities\\Spells\\Undead\\DeathCoil\\DeathCoilSpecialArt.mdl", target.getUnit(), "chest" )
call p.doSpellDamage( target, p.userReal )
set p.userReal = p.userReal * 0.5
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
local Modifier m = Modifier.create()
set Proj = ProjectileType.create( "units\\creeps\\UndeadDestroyerShip\\UndeadDestroyerShip.mdl", 999999.00, 550.00 )
call Proj.enablePeriodic( Periodic, 0.10 )
call Proj.enableHoming( Hit, 4.00 )
set SAttack = Cast.create( '@@0@@', "acidbomb", 5.00 )
set Panic = BuffType.create( 10.00, 0.00, false )
call Panic.setBuffIcon( '@@2@@' )
call m.addModification( MOD_ARMOR, -25.00, -1.00 )
call m.addModification( MOD_MOVESPEED, 0.20, -0.002 )
call Panic.setBuffModifier( m )
set NAttack = ProjectileType.createInterpolate("Abilities\\Weapons\\BoatMissile\\BoatMissile.mdl", 900.00 )
call NAttack.setEventOnInterpolationFinished(NAttackHit)
set Soul = ProjectileType.create( "Abilities\\Spells\\Undead\\Possession\\PossessionMissile.mdl", 6.00, 300.00 )
call Soul.setAcceleration( 10.00 )
call Soul.enableCollision( SoulHit, 100.00, TARGET_CREEPS, false )
call Soul.setStartRotation( 6.00 )
set mbvals = MultiboardValues.create( 1 )
call mbvals.setKey( 0, "Souls" )
endfunction
[values] => Array
(
[visible] => true
[icon] => ReplaceableTextures\CommandButtons\BTNDwarvenLongRifle.blp
[name] => Cannon
[short_explain] => The Dutchman attacks with its board cannons.
[long_explain] => The Dutchman attacks a random creep in |cffFFFF80800|r range, dealing the tower's attack damage in |cffFFFF80250|r AoE around the target on hit. Uses the tower's attackspeed.
)
)
[2] => Array
(
[name] => On Tower Details
[code] => call mbvals.setValue(0, I2S(Dutchman(tower.userInt).souls))
return mbvals
[values] => Array
(
)
)
[3] => Array
(
[name] => On Kill
[code] => local Iterate I = Iterate.overUnitsInRangeOfUnit( tower, TARGET_CREEPS, Event.getTarget(), 300.00 )
local Unit U
local integer lvl = tower.getLevel()
local Dutchman d = tower.userInt
set d.souls = d.souls + 1
call SFXAtUnit( "Abilities\\Spells\\Items\\AIso\\AIsoTarget.mdl", Event.getTarget().getUnit() )
loop
set U = I.next()
exitwhen U == 0
call Panic.apply( tower, U, lvl )
endloop
[values] => Array
(
[visible] => true
[icon] => ReplaceableTextures\CommandButtons\BTNDarkSummoning.blp
[name] => Panic
[short_explain] => Whenever the Dutchman kills a creep, it collects its soul. All creeps around it panic.
[long_explain] => Whenever the Dutchman kills a creep, it collects its soul. All creeps in a range of |cffFFFF80300|r around the killed creep start to panic. They have only one thing in mind: RUN!. They don ' t care about their defense and their armor is reduced by |cffFFFF8025|r, but they run |cffFFFF8020%|r faster. This effect lasts |cffFFFF8010|r seconds.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80-1|r armor|n|cffFFFF80-0.2%|r movement speed
)
)
[4] => Array
(
[name] => On Tower Destruction
[code] => call Dutchman(tower.userInt).destroy()
[values] => Array
(
[visible] => false
[icon] =>
[name] =>
[short_explain] =>
[long_explain] =>
)
)
[5] => Array
(
[name] => On Damage
[code] => set Event.damage = 0
[values] => Array
(
[ONDAMAGE_chance] => 1.0
[visible] => false
[icon] =>
[name] =>
[short_explain] =>
[ONDAMAGE_chanceLevelAdd] => 0.0
[long_explain] =>
)
)
[6] => Array
(
[name] => Autocast
[code] => set Dutchman(tower.userInt).soulstorm = true
[values] => Array
(
[AUTOCAST_cooldown] => 5.00
[AUTOCAST_autoRange] => 600.00
[AUTOCAST_manacost] => 0
[icon] => ReplaceableTextures\CommandButtons\BTNBanish.blp
[AUTOCAST_range] => 600.00
[AUTOCAST_targetType] => 0
[AUTOCAST_numBuffsBeforeIdle] => 0
[caster_art] =>
[long_explain] => When this spell is activated |cffFFFF802|r souls will be released every |cffFFFF800.3|r seconds. When a soul collides with a creep it deals |cffFFFF8014000|r spell damage. When a soul damages a creep, its damage is reduced by |cffFFFF8050%|r.
[target_art] =>
[AUTOCAST_autocastType] => AC_TYPE_NOAC_IMMEDIATE
[AUTOCAST_buffType] => 0
[AUTOCAST_isExtended] => false
[name] => Soul Storm
[AUTOCAST_targetSelf] => true
[short_explain] => The Dutchman releases all collected souls in one devasting storm.
)
)
[7] => Array
(
[name] => On Tower Creation
[code] => local Projectile p = Projectile.createFromUnitToUnit( Proj, tower, 1.00, tower.calcSpellCritNoBonus(), tower, tower, true, true, false )
local Dutchman d = Dutchman.create( p, tower )
call p.color( 100, 100, 100, 180 )
call p.setScale( 1.00 )
set tower.userInt = d
set p.userInt = d
[values] => Array
(
[visible] => false
[icon] =>
[name] =>
[short_explain] =>
[long_explain] =>
)
)
)
[abilities] => Array
(
[0] => Array
(
[id] => @@0@@
[derivedFrom] => ANab
[oeValues] => Array
(
[Cost1] => 0
[Rng1] => 99999
[DataE1] => 0
[DataD1] => 1
[Art] => ReplaceableTextures\CommandButtons\BTNAcidBomb.blp
[HeroDur1] => 1
[hero] => 0
[BuffID1] => @@1@@
[Area1] => 1
[DataC1] => 0
[Name] => Canon 2
[Dur1] => 1
[Missileart] => Abilities\Spells\Undead\Possession\PossessionMissile.mdl
[levels] => 1
[targs1] => ground,enemies,air,neutral
)
)
)
[buffs] => Array
(
[0] => Array
(
[id] => @@1@@
[derivedFrom] => BNab
[oeValues] => Array
(
[EditorName] => Under Attack
[Buffubertip] => This unit takes damage.
[TargetArt] => Array
(
)
[Bufftip] => Under Attack
[Buffart] => ReplaceableTextures\CommandButtons\BTNUndeadDestroyer.blp
)
)
[1] => Array
(
[id] => @@2@@
[derivedFrom] => BHfs
[oeValues] => Array
(
[Targetattach] => head
[EditorName] => Panic
[Buffubertip] => This unit is in panic. It has dramatically decreased armor but increased movement speed.
[TargetArt] => Abilities\Spells\Other\HowlOfTerror\HowlTarget.mdl
[Targetattachcount] => 1
[Bufftip] => Panic
[Buffart] => ReplaceableTextures\CommandButtons\BTNDarkSummoning.blp
)
)
)
[units] => Array
(
)
[references] => Array
(
)
)