Actor "Doom Shadow"
{
Monster
Health 650
Height 56
Radius 17
Mass 1200
Speed 8
Bloodcolor "Green"
Renderstyle Translucent
Alpha 0.8
Painchance "Mine", 10
Painchance "AdvancedImp", 0
Painchance "Shadow", 0
Painchance 40
+FLOORCLIP
+NoTarget
+MissileMore
+MissileEvenMore
+QuickToRetaliate
+ThruSpecies
+DONTHARMSPECIES
Species "AdvancedImp"
Damagetype "AdvancedImp"
Damagefactor "Acid", 0.4
Damagefactor "Fire", 0.4
//No Infighting
Damagefactor "Shadow", 0.0
Damagefactor "AdvancedImp", 0.0
Damagefactor "Catharsi15k", 0.0
Damagefactor "Catharsi10K", 0.0
Damagefactor "HellionFire", 0.0
Damagefactor "Nightshade", 0.0
DropItem "BossLifeEssence", 200, 16
DropItem "NemesisArmorBonus16", 200
DropItem "HadesCrystalBundle", 180
DropItem "ShadowCastOrb", 16, 1
SeeSound "Poe/Sight"
ActiveSound "Poe/active"
PainSound "Poe/pain"
DeathSound "Poe/death"
Obituary "%o was devastated by a Doom Shadow."
Tag "\c[d4]Doom Shadow\c-"
States
   {
  Spawn:
	DSHD A 1 A_Look
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrailSpawner")
	Loop
  Idle:
	DSHD A 1 A_Look
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrailSpawner")
	Loop
  Pain:
	TNT1 A 0
	DSHD H 5 A_Pain
	Goto See
  See:
	DSHD B 1 A_Chase
	TNT1 A 0 A_TakeInventory("Tic",999)
	TNT1 A 0 A_JumpIfInTargetInventory("truelegendaryruneitem2",1,2)
	TNT1 A 0 A_Jump(256,2)
	TNT1 A 0 A_SpawnItemEx("ShadowMinion",0,15,0,0,0,0,random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD B 1 A_Chase("","")
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD B 1 A_Chase("","")
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD B 1 A_Chase("","",CHF_FASTCHASE)
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD C 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD C 1 A_Chase("","")
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD C 1 A_Chase("","")
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD C 1 A_Chase("","")
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD D 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD D 1 A_Chase("","",CHF_FASTCHASE)
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD D 1 A_Chase("","")
	TNT1 A 0 A_JumpIfInTargetInventory("truelegendaryruneitem2",1,2)
	TNT1 A 0 A_Jump(256,2)
	TNT1 A 0 A_SpawnItemEx("ShadowMinion",0,15,0,0,0,0,random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD D 1 A_Chase("","")
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD E 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD E 1 A_Chase("","")
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD E 1 A_Chase("","")
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	DSHD E 1 A_Chase("","")
	TNT1 A 0 A_SpawnItemEx("DoomShadowTrail2Spawner")
	Loop
  Missile:
	TNT1 A 0 A_Jump(60,"DoomWraith")
	TNT1 A 0 A_Jump(55,"VileAttack")
	TNT1 A 0 A_Jump(35,"ShadowCall")
	Goto MissileLoop
  MissileLoop:
	DSHD FFFFF 1 A_FaceTarget
	DSHD G 1 Bright A_FaceTarget
	TNT1 A 0 A_CustomMissile("ShadeMissile",32,0,0,CMF_TRACKOWNER)
	DSHD G 3 Bright A_FaceTarget
	TNT1 A 0 A_Jump(15,"See")
	TNT1 A 0 A_Jump(19,"ShadowCall")
	DSHD F 1 A_SpidRefire
	Loop
  DoomWraith:
	DSHD FFFFFFF 1 A_FaceTarget
	DSHD G 1 Bright A_FaceTarget
	TNT1 A 0 A_CustomMissile("DoomWraith2",32,0,0,CMF_TRACKOWNER)
	DSHD G 3 Bright A_Recoil(20)
	DSHD H 7
	GoTo See
  VileAttack:
	TNT1 A 0
	TNT1 A 0 A_ChangeFlag(NOPAIN,1)
	DSHD FFFF 1 A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("DShadowTargeter",22,0,0,0,0,0,0,SXF_TRANSFERPOINTERS | SXF_SETMASTER)
	DSHD F 1 A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("DShadowTargeter",22,0,0,0,0,0,0,SXF_TRANSFERPOINTERS | SXF_SETMASTER)
	DSHD F 1 A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("DShadowTargeter",22,0,0,0,0,0,0,SXF_TRANSFERPOINTERS | SXF_SETMASTER)
  VileChargeLoop:
	TNT1 A 0 A_JumpIfInventory("Tic",105,"VileChargeEnd")
	DSHD F 1 A_FaceTarget
	TNT1 A 0 A_VileTarget("DShadowHadesAttack")
	TNT1 A 0 A_GiveInventory("Tic",1)
	TNT1 A 0 A_JumpIfTargetInLos("VileChargeLoop",360)
	TNT1 A 0
	GoTo See
  VileChargeEnd:
	TNT1 A 0 A_ChangeFlag(NOPAIN,0)
	TNT1 A 0 A_JumpIfTargetInLos("VileExplode",360)
	DSHD G 4
	GoTo See
  VileExplode:
	TNT1 A 0 A_ChangeFlag(NOPAIN,0)
	DSHD G 3 A_VileTarget("DShadowHadesExplode")
	DSHD G 4 A_FaceTarget
	GoTo See
  ShadowCall:
	DSHD E 35
	TNT1 A 0 A_JumpIfInTargetInventory("truelegendaryruneitem2",1,"ShadowCall.Hard")
	TNT1 A 0 A_SpawnItemEx("ShadowMinion",0,45,0,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_SETMASTER|SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx("ShadowMinion",0,-45,0,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_SETMASTER|SXF_NOCHECKPOSITION)
	GoTo See
  ShadowCall.Hard:
	TNT1 A 0 A_SpawnItemEx("ShadowMinion",0,15,0,0,0,0,random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx("ShadowMinion",0,15,0,0,0,0,random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx("ShadowMinion",0,15,0,0,0,0,random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx("ShadowMinion",0,15,0,0,0,0,random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx("SuperShadow",0,45,0,0,0,0,0,SXF_SETMASTER|SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx("SuperShadow",0,-45,0,0,0,0,0,SXF_SETMASTER|SXF_NOCHECKPOSITION)
	GoTo See
  Death:
	DSHD H 30 A_Scream
	TNT1 A 0 A_PlaySound("DoomShadowDeathXPL",CHAN_AUTO,1.0,0)
	DSHD HH 1 Bright A_CustomMissile("Kaboom10",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))  
	DSHD HH 1 Bright A_CustomMissile("Kaboom10",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 A 0 A_PlaySound("DoomShadowDeathXPL",CHAN_AUTO,1.0,0)
	DSHD HH 1 Bright A_CustomMissile("Kaboom10",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))  
	DSHD HH 1 Bright A_CustomMissile("Kaboom10",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 A 0 A_PlaySound("DoomShadowDeathXPL",CHAN_AUTO,1.0,0)
	DSHD HH 1 Bright A_CustomMissile("Kaboom10",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))  
	DSHD HH 1 Bright A_CustomMissile("Kaboom10",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 A 0 A_PlaySound("DoomShadowDeathXPL",CHAN_AUTO,1.0,0)
	DSHD HH 1 Bright A_CustomMissile("Kaboom10",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))  
	DSHD HH 1 Bright A_CustomMissile("Kaboom10",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 A 0 A_PlaySound("DoomShadowDeathXPL",CHAN_AUTO,1.0,0)
	DSHD HH 1 Bright A_CustomMissile("Kaboom12",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))  
	DSHD HH 1 Bright A_CustomMissile("Kaboom12",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 AA 0 A_CustomMissile("Kaboom12",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 AA 0 A_CustomMissile("Kaboom10",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))  
	TNT1 AA 0 A_CustomMissile("Kaboom10",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 AA 0 A_CustomMissile("Kaboom10",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	DSHD HH 1 Bright A_CustomMissile("Kaboom10",Random(10,50),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 A 0 A_PlaySound("DoomWraithSpawn",CHAN_AUTO,1.0,0)
	TNT1 A 0 A_PlaySound("SoulRazeLaugh3",CHAN_AUTO,1.0,0)
	TNT1 AA 0 A_SpawnItemEx("GreenGibbedGenerator",0,0,0,0,0,0,0,128,0)
	TNT1 AA 0 A_SpawnItemEx("BlackGibbedGenerator",0,0,0,0,0,0,0,128,0)
	TNT1 AAAAAA 0 A_CustomMissile("SmokeFX",Random(30,60),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 AAAA 0 A_CustomMissile("BigRedBloodCloud",Random(30,60),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 AAAAAA 0 A_CustomMissile("RedBloodCloud",Random(30,60),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 A 0 A_CustomMissile("DoomWraith",35,0,0,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DoomWraith",35,0,45,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DoomWraith",35,0,-45,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DoomWraith",35,0,90,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DoomWraith",35,0,-90,CMF_AIMDIRECTION |CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DoomWraith",35,0,135,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DoomWraith",35,0,-135,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DoomWraith",35,0,180,CMF_AIMDIRECTION | CMF_TRACKOWNER)
	DSHD N 4 Bright A_Fall
	DSHD MOPQR 4 Bright
	DSHD S 4 Bright
	TNT1 A 0 A_KillChildren
	DSHD T 525
	TNT1 A 0 A_RemoveChildren
	DSHD T 5 A_FadeOut(0.1,1)
	Wait
  }
}

Actor DoomShadowTrailSpawner
{
Height 56
Radius 1
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
  {
  Spawn:
	TNT1 A 0 Bright
	TNT1 A 0 Bright A_CheckSight("Toaster")
	TNT1 A 1 Bright A_SpawnItemEx("DoomShadowTrail",0,0,0,random(-6,6),random(-6,6),random(-6,6),random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,64)
	Stop
  Toaster:
	TNT1 A 1 Bright
	Stop
  }
}

Actor DoomShadowTrail2Spawner
{
Height 56
Radius 1
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
  {
  Spawn:
	TNT1 A 0 Bright
	TNT1 A 0 Bright A_CheckSight("Toaster")
	TNT1 A 1 Bright A_SpawnItemEx("DoomShadowTrail2",0,0,0,random(-5,3),random(-5,5),random(-3,3),random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	Stop
  Toaster:
	TNT1 A 1 Bright
	Stop
  }
}

Actor DoomShadowTrail
{
Renderstyle Translucent
Alpha 0.6
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
  {
  Spawn:
	DSHD A 4
	DSHD A 1 A_FadeOut(0.125,1)
	Wait
  }
}

Actor DoomShadowTrail2
{
Renderstyle Translucent
Alpha 0.6
+MISSILE
+DROPOFF
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+THRUACTORS
+CLIENTSIDEONLY
+NONETID
States
  {
  Spawn:
	TNT1 A 0 Bright
	TNT1 AA 0 Bright A_Jump(256,"Spawn1","Spawn2","Spawn3","Spawn4")
  Spawn1:
	DSHD CDEB 4
	DSHD B 1 A_FadeOut(0.125,1)
	Wait
  Spawn2:
	DSHD BCDE 4
	DSHD E 1 A_FadeOut(0.125,1)
	Wait
  Spawn3:
	DSHD EBCD 4
	DSHD D 1 A_FadeOut(0.125,1)
	Wait
  Spawn4:
	DSHD DEBC 4
	DSHD C 1 A_FadeOut(0.125,1)
	Wait
  }
}

Actor DSHadowTargeter
{
Health 50
Height 5
Radius 5
Speed 1
Mass 5555
+ISMONSTER
-COUNTKILL
+LOOKALLAROUND
+QUICKTORETALIATE
+NOCLIP
+NOPAIN
+NODAMAGE
+NOTARGET
+CANTSEEK
+DONTBLAST
+NORADIUSDMG
+INVULNERABLE
+NONSHOOTABLE
Species "AdvancedImp"
Damagetype "AdvancedImp"
Obituary "%o couldn't fool the Doom Shadow."
Tag "Shadow"
States
  {
  Spawn:
	TNT1 A 0 A_GiveInventory("Tic",3)
	TNT1 A 0 A_JumpIfInventory("Tic",70,"Death")
	TNT1 AAA 1 A_Chase("","")
	TNT1 A 1 A_LookEx(0,0,0,0,360,"Missile")
	Loop
  See:
  Missile:
	TNT1 A 0 A_JumpIfInTargetInventory("AlreadyTargeted",1,"ClearTarget")
	TNT1 AA 1 A_FaceTarget
	Goto VileStart
  VileStart:
	TNT1 A 0 A_GiveToTarget("AlreadyTargeted",1)
	TNT1 A 0 A_TakeInventory("Tic",500)
	Goto VileCharge
  VileCharge:
	TNT1 A 0 A_JumpIfInventory("Tic",105,"VileAttack")
	TNT1 A 1 A_FaceTarget
	TNT1 A 0 A_VileTarget("DShadowHadesAttack2")
	TNT1 A 0 A_GiveInventory("Tic",1)
	TNT1 A 0 A_JumpIfTargetInLos("VileCharge",360)
	Goto Death
  VileAttack:
	TNT1 A 0 A_JumpIfTargetInLos("VileExplode",360)
	TNT1 A 0 A_TakeFromTarget("AlreadyTargeted",1)
	TNT1 A 1
	GoTo Death
  VileExplode:
	TNT1 A 0
	TNT1 A 1 A_VileTarget("DShadowHadesExplode2")
	TNT1 A 0 A_TakeFromTarget("AlreadyTargeted",1)
	TNT1 A 1 A_FaceTarget
	GoTo Death
  Death:
	TNT1 A 0
	TNT1 A 0 A_TakeFromTarget("AlreadyTargeted",1)
	TNT1 A 1
	Stop
  ClearTarget:
	TNT1 A 1
	TNT1 A 0 A_ClearTarget
	GoTo Spawn
  }
}

Actor DShadowHadesAttack : RedParticleSpawner
{
+NOINTERACTION
+NONETID
States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("HadesSoulSpawner",0,0,-9999,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	TNT1 AA 0 A_SpawnItemEx("Kaboom10Spawner",0,0,-9999,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	TNT1 A 1 A_SpawnItemEx("HadesFire",random(-20,20),random(-20,20),random(-45,45),0,0,0,random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	Stop
  }
}

Actor HadesSoul : DoomShadowTrail
{
Alpha 1.0
Scale 0.8
States
  {
  Spawn:
	TNT1 A 0 Bright
	TNT1 A 1 Bright A_Jump(60,"WithSound")
	DSOL ABCD 3 Bright A_SpawnItemEx("Kaboom10",0,0,0)
	DSOL D 1 Bright A_FadeOut(0.1,1)
	Wait
  WithSound:
	TNT1 A 0 Bright
	TNT1 A 1 Bright A_Jump(10,"WithSound1")
	TNT1 A 0 Bright A_PlaySound("SoulRazeSouls",CHAN_AUTO,1.0,0)
	DSOL ABCD 3 Bright A_SpawnItemEx("Kaboom10",0,0,0)
	DSOL D 1 Bright A_FadeOut(0.1,1)
	Wait
  WithSound1:
	TNT1 A 0 Bright
	TNT1 A 0 Bright A_PlaySound("SoulRazeLaugh1",CHAN_AUTO,1.0,0)
	DSOL ABCD 3 Bright A_SpawnItemEx("Kaboom10",0,0,0)
	DSOL D 1 Bright A_FadeOut(0.1,1)
	Wait
  }
}

Actor HadesFire : OrangeFire
{
Scale 0.3
States
  {
  Spawn:
	FRR1 ABCDEFGHIJKL 2 Bright A_FadeOut(0.1,1)
	Stop
  }
}

Actor DSHadowHadesExplode
{
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+DONTHARMSPECIES
Damagetype "AdvancedImp"
Obituary "%o was consumed into the Hades."
States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("SoulRazeLaugh2",6,1.0,0)
	TNT1 A 0 A_PlaySound("SoulRazeLaugh3",7,1.0,0)
	TNT1 A 0 A_Explode(50,500,0,0,50)
	TNT1 A 1 A_SpawnItemEx("DSHadowHadesExplodeFX",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	Stop
  }
}

Actor DSHadowHadesExplodeFX
{
+DONTBLAST
+NONSHOOTABLE
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
  {
  Spawn:
	TNT1 A 0
	TNT1 AAAAA 0 A_SpawnItemEx("Kaboom12Spawner",0,0,-9999,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 AAAAAAA 0 A_SpawnItemEx("HadesFireSpawner",0,0,-9999,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 A 1 A_SpawnItemEx("SoulRazeSprite",0,0,-9999,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	Stop
  }
}

Actor Kaboom10Spawner
{
PROJECTILE
Height 8
Radius 1
Speed 0
Damage(0)
+THRUACTORS
+CLIENTSIDEONLY
+NONETID
States
  {
  Spawn:
	TNT1 A 0 Bright
	TNT1 A 1 Bright A_SpawnItemEx("Kaboom10",random(-10,10),random(-20,20),0,0,0,random(0,2),random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	Stop
  }
}

Actor Kaboom12Spawner : Kaboom10Spawner
{
States
  {
  Spawn:
	TNT1 A 0 Bright
	TNT1 A 1 Bright A_SpawnItemEx("Kaboom12",Random(-20,20),Random(-30,30),0,random(-2,2),random(-2,2),random(10,20),random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	Stop
  }
}

Actor HadesFireSpawner : Kaboom10Spawner
{
States
  {
  Spawn:
	TNT1 A 0 Bright
	TNT1 A 1 Bright A_SpawnItemEx("HadesFire",Random(-10,10),Random(-10,10),0,random(-8,8),random(-8,8),random(20,40),random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	Stop
  }
}

Actor HadesSoulSpawner : Kaboom10Spawner
{
States
  {
  Spawn:
	TNT1 A 0 Bright
	TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
  Normal:
	TNT1 A 1 Bright A_SpawnItemEx("HadesSoul",random(-20,20),random(-20,20),0,0,0,random(2,7),random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	Stop
  Toaster:
	TNT1 A 1 Bright A_Jump(18,"BackToSpawn")
	Stop
  BackToSpawn:
	TNT1 A 1 Bright
	GoTo Normal
  }
}

Actor SoulRazeSprite : RedParticleSpawner
{
Scale 1.3
Renderstyle Translucent
Alpha 1.0
+NONETID
States
  {
  Spawn:
	TNT1 A 0
	PLSH A 3 Bright
	PLSH BC 2 Bright
	PLSH DEEFFFFFFFF 2 A_FadeOut(0.1,1)
	Stop
  }
}

Actor DShadowHadesAttack2 : RedParticleSpawner
{
+NOINTERACTION
+NONETID
States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("HadesElectroSmoke",random(-45,45),random(-45,45),random(-65,15),0,0,0,random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 AA 0 A_SpawnItemEx("SHadesTrail1",random(-45,45),random(-45,45),random(-65,15),0,0,0,random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 AA 0 A_SpawnItemEx("SHadesTrail2",random(-45,45),random(-45,45),random(-65,15),0,0,0,random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 A 1 Bright
	Stop
  }
}

Actor HadesElectroSmoke : RedParticleSpawner
{
Scale 1.0
Renderstyle Add
+NONETID
States
  {
  Spawn:
	TNT1 A 0 Bright
	TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
  Normal:
	HEFX CDEFGHHHHHH 3 Bright A_FadeOut(0.1,1)
	Stop
  Toaster:
	TNT1 A 1 Bright A_Jump(18,"BackToSpawn")
	Stop
  BackToSpawn:
	TNT1 A 1 Bright
	GoTo Normal
  }
}

Actor DShadowHadesExplode2
{
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+DONTHARMSPECIES
Damagetype "AdvancedImp"
States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("HadesChargeRelease",0,1.0,0)
	TNT1 A 0 A_Explode(15,100,0,0,50)
	TNT1 A 0 A_SpawnItemEx("DShadowHadesExplode2FX",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 A 1 Bright
	Stop
  }
}

Actor DShadowHadesExplode2FX
{
+DONTBLAST
+NONSHOOTABLE
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("HadesChargeShock",0,0,random(-45,5),0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 AAAAAAA 0 A_SpawnItemEx("HadesElectroSmoke",0,0,0,random(-15,15),random(-15,15),random(-55,15),random(0,360),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 A 1 Bright
	Stop
  }
}

Actor HadesChargeShock : HadesElectroSmoke
{
Scale 1.3
States
  {
  Spawn:
	TNT1 A 0 Bright
	TNT1 A 0 Bright A_SpawnItemEx("RedFlare",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	HAT2 RSTUV 2 Bright
	HAT2 VWWWXXXXXXX 1 Bright A_FadeOut(0.1,1)
	Stop
  }
}

Actor DoomWraith
{
 Projectile
 Damage (0)
 BounceCount 10
 Obituary "A Doom Shadow got his revenge on %o."
 Speed 15
 Height 5
 Radius 5
 +Ripper
 -NoGravity
 +BloodlessImpact
 +NoExplodeFloor
 Gravity 0.2
  States
   {
	Spawn:
   DWRT AAAAA 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT BBBBB 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT AAAAA 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT BBBBB 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   DWRT AAAAA 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT BBBBB 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT AAAAA 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT BBBBB 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT AAAAA 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT BBBBB 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
  Death:
   TNT1 A 0
   TNT1 A 0 A_ScaleVelocity(0.3)
   TNT1 A 0 A_ChangeFlag(HEXENBOUNCE,1)
   TNT1 A 0 A_UnSetSolid
   TNT1 A 0 A_Scream
   TNT1 A 0 A_SpawnItemEx("Kaboom12",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 AAAAAA 0 A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   tnt1 a 0 A_Explode(20,160,0,0,138)
   DWRT HIJKLMMM 4 Bright A_FadeOut
   TNT1 A 1
   Stop
  }
}

Actor DoomWraith2 : DoomWraith
{
 Height 10
  Species "AdvancedImp"
Damagetype "AdvancedImp"
+ThruSpecies
 Radius 10
 Damage (3)
 DeathSound "harvester/scream"
 States
  {
   Spawn:
	TNT1 A 1
  TNT1 A 0 A_PlaySound("DoomWraithSpawn",0,1.0,0)
   Spawn2:
   DWRT AAAAA 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT BBBBB 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT AAAAA 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT BBBBB 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT AAAAA 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT BBBBB 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT AAAAA 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT BBBBB 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT AAAAA 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   DWRT BBBBB 1 Bright A_SpawnItemEx("Kaboom10",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(0,360))
   TNT1 A 0 A_Explode(10,80,0,0,72)
   TNT1 A 0 A_RadiusGive("HavocSteal",100,RGF_MONSTERS,1)
   TNT1 A 0 A_RadiusGive("HavocSteal2",100,RGF_PLAYERS,1)
   GoTo Death
   }
}

ACTOR ShadowMinion
{
Monster
Health 80
Height 56
Radius 17
Mass 100
Speed 5
Alpha 0.7
RenderStyle Translucent
PainChance 200
Painchance "Shadow", 0
Painchance "AdvancedImp", 0
MissileType "ShadeMissile"
+FLOORCLIP
+NOTARGET
+NOINFIGHTING
+THRUSPECIES
+DONTHARMSPECIES
Species "AdvancedImp"
Damagetype "AdvancedImp"
//No Infighting
Damagefactor "Shadow", 0.0
Damagefactor "AdvancedImp", 0.0
DropItem "LifeEssence", 100, 2
DropItem "ArmorBonusMax", 100, 2
DropItem "HadesCrystal", 180, 5
PainSound "Shadow/pain"
DeathSound "Shadow/death"
ActiveSound "Shadow/active"
Obituary "%o was assassinated by Doom Shadow's Minions."
Tag "Shadow Minion"
States
  {
  Spawn:
	SHDW E 10 A_Look
	Loop
  Idle:
	SHDW EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 10 A_Look
	TNT1 A 0 A_JumpIfInventory("Tic",10,"Vanish")
	TNT1 A 0 A_GiveInventory("Tic",1)
	Loop
  See:
	SHDW A 1 A_Chase
	TNT1 A 0 A_CustomMissile("ShadowGhostA",0,0,0,CMF_AIMDIRECTION)
	SHDW A 1 A_Chase
	TNT1 A 0 A_CustomMissile("ShadowGhostA",0,0,0,CMF_AIMDIRECTION)
	SHDW A 1 A_Chase
	TNT1 A 0 A_CustomMissile("ShadowGhostA",0,0,0,CMF_AIMDIRECTION)
	SHDW B 1 A_Chase
	TNT1 B 0 A_CustomMissile("ShadowGhostB",0,0,0,CMF_AIMDIRECTION)
	SHDW B 1 A_Chase
	TNT1 A 0 A_CustomMissile("ShadowGhostB",0,0,0,CMF_AIMDIRECTION)
	SHDW B 1 A_Chase
	TNT1 A 0 A_CustomMissile("ShadowGhostB",0,0,0,CMF_AIMDIRECTION)
	SHDW C 1 A_Chase
	TNT1 A 0 A_CustomMissile("ShadowGhostC",0,0,0,CMF_AIMDIRECTION)
	SHDW C 1 A_Chase
	TNT1 A 0 A_CustomMissile("ShadowGhostC",0,0,0,CMF_AIMDIRECTION)
	SHDW C 1 A_Chase
	TNT1 A 0 A_CustomMissile("ShadowGhostC",0,0,0,CMF_AIMDIRECTION)
	SHDW D 1 A_Chase
	TNT1 A 0 A_CustomMissile("ShadowGhostD",0,0,0,CMF_AIMDIRECTION)
	SHDW D 1 A_Chase
	TNT1 A 0 A_CustomMissile("ShadowGhostD",0,0,0,CMF_AIMDIRECTION)
	SHDW D 1 A_Chase
	TNT1 A 0 A_CustomMissile("ShadowGhostD",0,0,0,CMF_AIMDIRECTION)
	TNT1 A 0 A_JumpIfInventory("Tic",10,"Vanish")
	TNT1 A 0 A_GiveInventory("Tic",1)
	Loop
  Missile:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("Tic",10,"Vanish")
	TNT1 A 0 A_GiveInventory("Tic",1)
	SHDW E 30 A_FaceTarget
  MissileLoop:
	SHDW F 5
	SHDW G 5 Bright A_MissileAttack
	SHDW F 5
	SHDW E 20
	SHDW E 1 A_SpidRefire
	Loop
  Pain:
	SHDW H 4
	SHDW H 4 A_Pain
	Goto See
  Vanish:
	TNT1 A 0
	SHDW H 2 A_FadeOut(0.1,1)
	Wait
  Death:
	TNT1 A 0
	SHDW I 6 A_Scream
	SHDW J 5
	SHDW K 5 A_CustomMissile("Shadowtorso",0,0,0,CMF_AIMDIRECTION)
	SHDW L 5 A_Fall
	SHDW MNOP 6 
	SHDW P 525
	SHDW P 5 A_FadeOut(0.1,1)
	Wait
  XDeath:
	SHDX A 8
	SHDX B 6 A_XScream
	SHDX C 6 
	SHDX D 6 A_Fall
	SHDX EFG 6
	SHDX G 525
	SHDX G 5 A_FadeOut(0.1,1)
	Wait
  }
}

Actor SuperShadow : ShadowMinion
{
 Health 125
 Scale 1.8
 Height 80
 Radius 30
 MissileHeight 50
  States
   {
    
	See:
		SHDW A 1 A_Chase
		SHDW A 0 A_CustomMissile("ShadowGhostA2", 0, 0, 0)
		SHDW A 1 A_Chase
		SHDW A 0 A_CustomMissile("ShadowGhostA2", 0, 0, 0)
		SHDW A 1 A_Chase
		SHDW A 0 A_CustomMissile("ShadowGhostA2", 0, 0, 0)
		SHDW B 1 A_Chase
		SHDW B 0 A_CustomMissile("ShadowGhostB2", 0, 0, 0)
		SHDW B 1 A_Chase
		SHDW B 0 A_CustomMissile("ShadowGhostB2", 0, 0, 0)
		SHDW B 1 A_Chase
		SHDW B 0 A_CustomMissile("ShadowGhostB2", 0, 0, 0)
		SHDW C 1 A_Chase
		SHDW C 0 A_CustomMissile("ShadowGhostC2", 0, 0, 0)
		SHDW C 1 A_Chase
		SHDW C 0 A_CustomMissile("ShadowGhostC2", 0, 0, 0)
		SHDW C 1 A_Chase
		SHDW C 0 A_CustomMissile("ShadowGhostC2", 0, 0, 0)
		SHDW D 1 A_Chase
		SHDW D 0 A_CustomMissile("ShadowGhostD2", 0, 0, 0)
		SHDW D 1 A_Chase
		SHDW D 0 A_CustomMissile("ShadowGhostD2", 0, 0, 0)
		SHDW D 1 A_Chase
		SHDW D 0 A_CustomMissile("ShadowGhostD2", 0, 0, 0)
		Loop
	Missile:
		SHDW E 30 A_FaceTarget
		SHDW F 5 
		SHDW GGGGG 1 BRIGHT A_MissileAttack
		SHDW F 5
		SHDW E 20
		SHDW E 1 A_SpidRefire
		Goto Missile+1     
	Death:
		SHDW I 6 A_Scream
		SHDW J 5
		SHDW K 5 A_CustomMissile("Shadowtorso2", 0, 0, 0)
		SHDW L 5 A_Fall
		SHDW MNO 6 
		SHDW P -1
		Stop
   }
}

ACTOR ShadowGhostA
{
Height 56
Radius 4
Mass 75
Speed 0
RenderStyle "Translucent"
Alpha 0.3
Damage (0)
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
  {
  Spawn:
	TNT1 A 1
	SHDW A 10
	Stop
  }
}

ACTOR ShadowGhostB : ShadowGhostA
{
States
  {
  Spawn:
	TNT1 A 1
	SHDW B 10
	Stop
  }
}

ACTOR ShadowGhostC : ShadowGhostA
{
States
  {
  Spawn:
	TNT1 A 1
	SHDW C 10
	Stop
  }
}

ACTOR ShadowGhostD : ShadowGhostA
{
States
  {
  Spawn:
	TNT1 A 1
	SHDW D 10
	Stop
  }
}

Actor ShadowGhostA2 : ShadowGhostA
{ Scale 1.8 }
Actor ShadowGhostB2 : ShadowGhostB
{ Scale 1.8 }
Actor ShadowGhostC2 : ShadowGhostC
{ Scale 1.8 }
Actor ShadowGhostD2 : ShadowGhostD
{ Scale 1.8 }

ACTOR Shadowtorso
{
Height 15
Radius 12
Mass 5000
Speed 1
RenderStyle "Translucent"
Alpha 0.7
+DOOMBOUNCE
+CLIENTSIDEONLY
+NONETID
States
  {
  Spawn:
	SHDW QRS 5
	SHDW T 5 A_Fall
	SHDW U 5
	SHDW V 525
	SHDW V 5 A_FadeOut(0.1,1)
	Wait
  }
}

Actor Shadowtorso2 : Shadowtorso
{ Scale 1.8 }

Actor ShadowSlaveSpawner : ExileCaster
{
Height 56
Radius 16
Speed 20
+THRUACTORS
+SERVERSIDEONLY
States
  {
  Spawn:
	TNT1 A 5
  Death:
	TNT1 A 1
	TNT1 A 1 A_SpawnItemEx("ShadowSmokeGen3",0,0,5,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	TNT1 A 1 A_SpawnItemEx("ShadowSlave",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_SETMASTER)
	Stop
   }
}

Actor ShadowSlaveSpawner2 : ShadowSlaveSpawner
{
States
  {
  Spawn:
	TNT1 A 5
  Death:
	TNT1 A 1
	TNT1 A 1 A_SpawnItemEx("ShadowSmokeGen3",0,0,5,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	TNT1 A 1 A_SpawnItemEx("ShadowSlave2",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_SETMASTER)
	Stop
  }
}

Actor ShadowSlave : "Doom Shadow"
{
Monster
Health 2200
Height 56
Radius 16
Speed 12
FastSpeed 14
BloodColor "Purple"
Renderstyle Translucent
Alpha 0.8
MaxStepHeight 80
MeleeRange 64
Painchance "PlayerPhase", 0
Painchance "Player", 0
Painchance "Players", 0
+FRIENDLY
-COUNTKILL
+NOFEAR
+DROPOFF
+SLIDESONWALLS
+LOOKALLAROUND
+THRUSPECIES
+DONTHARMSPECIES
Species ""
Species "Player"
Damagetype ""
Damagetype "PlayerPhase"
DamageFactor "PDTBFG", 0.25
DamageFactor "PDTBFGTracer", 0.25
DamageFactor "PlayerDevBall", 0.125
DamageFactor "PlayerDevBall2", 0.125
DamageFactor "PlayerDevTracer", 0.125
DamageFactor "LegendaryPlayer", 0.3
DamageFactor 0.75
//No Infighting
Damagefactor "PlayerPhase", 0.0
Damagefactor "Player", 0.0
Damagefactor "Players", 0.0
Damagefactor "Explosion", 0.0
Damagefactor "AbyssalSatyr", 0.01
DamageFactor "SatanGuard", 0.01
Damagefactor "VileFires", 0.01
Damagefactor "Heterodox", 0.01
Damagefactor "Damned", 0.01
DropItem "BossLifeEssence", 256, 16
DropItem "NemesisArmorBonus16", 256
DropItem "HadesCrystalBundle", 100
DropItem "ShadowCastOrb", 24, 1
SeeSound "Shadowslave/See"
ActiveSound "Shadowslave/Active"
//MeleeSound "imp/melee"
PainSound "Shadowslave/Pain"
DeathSound "Shadowslave/Death"
Tag "Summoned Shadow Slave"
var int user_lcounter;
States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_SetUserVar("user_lcounter",100)
	Goto Spawnloop
  Spawnloop:
	SSLV A 10 A_Look
	Loop
  Idle:
	SSLV BC 3 A_Wander
	TNT1 A 0 A_Look
	SSLV DE 3 A_Wander
	TNT1 A 0 A_Look
	TNT1 A 0 A_JumpIf(user_lcounter < 1,"Kill")
	TNT1 A 0 A_SetUserVar("user_lcounter",user_lcounter-1)
	Loop
  See:
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 A 0 A_TakeInventory("HomingShotCount",3)
	SSLV B 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost1",0,0,0)
	SSLV B 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost1",0,0,0)
	SSLV B 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost1",0,0,0)
	SSLV B 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost1",0,0,0)
	SSLV C 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost2",0,0,0)
	SSLV C 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost2",0,0,0)
	SSLV C 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost2",0,0,0)
	SSLV C 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost2",0,0,0)
	SSLV D 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost3",0,0,0)
	SSLV D 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost3",0,0,0)
	SSLV D 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost3",0,0,0)
	SSLV D 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost3",0,0,0)
	SSLV E 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost4",0,0,0)
	SSLV E 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost4",0,0,0)
	SSLV E 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost4",0,0,0)
	SSLV E 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("ShadowSlaveGhost4",0,0,0)
	TNT1 A 0 A_JumpIf(user_lcounter < 1,"Kill")
	TNT1 A 0 A_SetUserVar("user_lcounter",user_lcounter-1)
	Loop
  Melee:
	TNT1 A 0
	TNT1 A 0 A_TakeInventory("Tic",999999)
	TNT1 A 0 A_UnSetInvulnerable
	SSLV F 5 A_FaceTarget
	SSLV G 4 A_FaceTarget
	TNT1 A 0 A_CustomMeleeAttack(random(2,4)*10,"imp/melee","None","Melee")
	SSLV F 4
	GoTo See
  Missile:
	TNT1 A 0
	TNT1 A 0 A_TakeInventory("Tic",999999)
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 A 0 A_Jump(128,"RipperSpread","RipperSpread","RipperHoming","RipperHoming","RipperHoming","RipperHoming","Rush")
	SSLV F 4 A_FaceTarget
	SSLV G 2 A_FaceTarget
	TNT1 A 0 A_CustomMissile("ShadeMissile2",32,6,0,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("ShadeMissile2",32,-6,0,CMF_TRACKOWNER)
	SSLV F 3
	GoTo See
  RipperSpread:
	TNT1 A 0
	TNT1 A 0 A_UnSetInvulnerable
	SSLV F 6 A_FaceTarget
	SSLV G 4 A_FaceTarget
	TNT1 A 0 A_CustomMissile("PhaseBallFriendly",32,0,-15,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("PhaseBallFriendly",32,0,0,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("PhaseBallFriendly",32,0,15,CMF_TRACKOWNER)
	SSLV F 4
	GoTo See
  RipperHoming:
	TNT1 A 0
	TNT1 A 0 A_UnSetInvulnerable
	SSLV F 4 A_FaceTarget
	SSLV G 4 A_FaceTarget
	TNT1 A 0 A_CustomMissile("RipperHomingFriendly",32,0,0,CMF_TRACKOWNER)
	GoTo See
  Rush:
	TNT1 A 0
	SSLV B 5 A_FaceTarget
	TNT1 A 0 A_TakeInventory("Tic",999999)
	Goto Rushing
  Rushing:
	SSL2 B 1 A_Chase("","",CHF_NIGHTMAREFAST)
	TNT1 A 0 A_Chase("","")
	TNT1 A 0 A_CustomMissile("RushPulse",10,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("RushGhost1",0,0,0)
	SSL2 B 1 A_Chase("","",CHF_NIGHTMAREFAST)
	TNT1 A 0 A_Chase("","")
	TNT1 A 0 A_CustomMissile("RushPulse",10,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("RushGhost1",0,0,0)
	SSL2 C 1 A_Chase("","",CHF_NIGHTMAREFAST)
	TNT1 A 0 A_Chase("","")
	TNT1 A 0 A_CustomMissile("RushPulse",10,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("RushGhost2",0,0,0)
	SSL2 C 1 A_Chase("","",CHF_NIGHTMAREFAST)
	TNT1 A 0 A_Chase("","")
	TNT1 A 0 A_CustomMissile("RushPulse",10,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("RushGhost2",0,0,0)
	SSL2 D 1 A_Chase("","",CHF_NIGHTMAREFAST)
	TNT1 A 0 A_Chase("","")
	TNT1 A 0 A_CustomMissile("RushPulse",10,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("RushGhost3",0,0,0)
	SSL2 D 1 A_Chase("","",CHF_NIGHTMAREFAST)
	TNT1 A 0 A_Chase("","")
	TNT1 A 0 A_CustomMissile("RushPulse",10,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("RushGhost3",0,0,0)
	SSL2 E 1 A_Chase("","",CHF_NIGHTMAREFAST)
	TNT1 A 0 A_Chase("","")
	TNT1 A 0 A_CustomMissile("RushPulse",10,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("RushGhost4",0,0,0)
	SSL2 E 1 A_Chase("","",CHF_NIGHTMAREFAST)
	TNT1 A 0 A_Chase("","")
	TNT1 A 0 A_CustomMissile("RushPulse",10,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("RushGhost4",0,0,0)
	TNT1 A 0 A_GiveInventory("Tic",8)
	TNT1 A 0 A_JumpIfInventory("Tic",280,"RushEnd")
	Loop
  RushEnd:
	TNT1 A 0
	TNT1 A 0 A_TakeInventory("Tic",999999)
	SSLV A 4
	GoTo See
  Pain:
	TNT1 A 0
	SSLV H 5 A_Pain
	GoTo See
  Kill:
	TNT1 A 0
	TNT1 A 0 A_Die
	Goto Death
  XDeath:
  Death:
	TNT1 A 0
	SSLV I 6 A_Scream
	SSLV J 5
	SSLV K 5 A_CustomMissile("Shadowtorso",0,0,0,2)
	SSLV L 5 A_Fall
	SSLV M 5
	SSLV M 5 A_FadeOut(0.1,1)
	Wait
  }
}

Actor ShadowSlave2 : ShadowSlave
{
Health 2000
MeleeRange 68
MeleeDamage 25
States
  {
  Missile:
	TNT1 A 0
	TNT1 A 0 A_TakeInventory("Tic",999)
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 A 0 A_Jump(90,"Rush")
	TNT1 A 0 A_Jump(60,"RipperSpread","RipperHoming")
	SSLV F 4 A_FaceTarget
	SSLV G 2 A_FaceTarget
	TNT1 A 0 A_CustomMissile("ShadeMissile2",32,6,0,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("ShadeMissile2",32,-6,0,CMF_TRACKOWNER)
	SSLV F 3
	GoTo See
  Melee:
	TNT1 A 0
	TNT1 A 0 A_TakeInventory("Tic",999)
	TNT1 A 0 A_UnSetInvulnerable
	SSLV F 2 A_FaceTarget
	SSLV G 2 A_FaceTarget
	TNT1 A 0 A_CustomMeleeAttack(random(2,4)*10,"imp/melee","None","Melee")
	SSLV F 2
	GoTo See
  }
}

Actor ShadeMissile2 : ShadeMissile
{
-STRIFEDAMAGE
Damage 8
Species "Player"
Damagetype ""
Damagetype "PlayerPhase"
States
  {
  Spawn:
	PBAL AA 1 Bright A_SpawnItemEx("ShadePuff2",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 Bright A_Seekermissile(5,7)
	PBAL AA 1 Bright A_SpawnItemEx("ShadePuff2",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 Bright A_Seekermissile(5,7)
	PBAL BB 1 Bright A_SpawnItemEx("ShadePuff2",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 Bright A_Seekermissile(5,7)
	PBAL BB 1 Bright A_SpawnItemEx("ShadePuff2",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 Bright A_Seekermissile(5,7)
	TNT1 A 0 Bright A_CountDown
	Loop
  Death:
	TNT1 A 0
	PBAL HIJKLM 3 Bright A_FadeOut(0.1,1)
	Stop
  Crash:
  XDeath:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("PurpleParticleSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	TNT1 AAA 0 A_CustomMissile("Kaboom8",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX4",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	PBAL HIJKLM 3 Bright A_FadeOut(0.1,1)
	Stop
  }
}

Actor ShadePuff2 : ShadePuff
{
States
  {
  Spawn:
	TNT1 A 0 Bright
	TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 1 Bright
	PHTR ABCDEFF 3 Bright A_FadeOut(0.1,1)
	Stop
  }
}

Actor PhaseBallFriendly : PhaseImpBall
{
Speed 20
Species ""
Species "Player"
Damagetype ""
Damagetype "PlayerPhase"
+ThruSpecies
+DontHarmSpecies
-SeekerMissile
}

Actor RipperHomingFriendly : PhaseImpBall
{
Species ""
Species "Player"
Damagetype ""
DamageType "PlayerPhase"
+ThruSpecies
+DontHarmSpecies
}

Actor RushPulse
{
Projectile
Height 1
Radius 1
Speed 0
+NODAMAGETHRUST
+FORCERADIUSDMG
+BLOODLESSIMPACT
+DONTHARMSPECIES
+THRUSPECIES
Species "Player"
DamageType "PlayerPhase"
States
  {
  Spawn:
	TNT1 A 1 Bright
  Death:
	TNT1 A 0 Bright
	TNT1 A 1 Bright A_Explode(20,120,0,0)
	Stop
  }
}

Actor ShadowSlaveGhost1 : ShadowGhostA
{
Alpha 0.5
States
  {
  Spawn:
	TNT1 A 1
	SSLV BBBBB 2 A_FadeOut(0.1,1)
	Stop
  }
}

Actor ShadowSlaveGhost2 : ShadowGhostA
{
Alpha 0.5
States
  {
  Spawn:
	TNT1 A 1
	SSLV CCCCC 2 A_FadeOut(0.1,1)
	Stop
  }
}

Actor ShadowSlaveGhost3 : ShadowGhostA
{
Alpha 0.5
States
  {
  Spawn:
	TNT1 A 1
	SSLV DDDDD 2 A_FadeOut(0.1,1)
	Stop
  }
}

Actor ShadowSlaveGhost4 : ShadowGhostA
{
Alpha 0.5
States
  {
  Spawn:
	TNT1 A 1
	SSLV EEEEE 2 A_FadeOut(0.1,1)
	Stop
  }
}

Actor RushGhost1
{
Height 56
Radius 1
Scale 1.1
Renderstyle Add
Alpha 0.5
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
  {
  Spawn:
	TNT1 A 1
	SSL3 B 2 A_FadeOut(0.125,1)
	Wait
  }
}

Actor RushGhost2 : RushGhost1
{
States
  {
  Spawn:
	TNT1 A 1
	SSL3 C 2 A_FadeOut(0.125,1)
	Wait
  }
}

Actor RushGhost3 : RushGhost1
{
States
  {
  Spawn:
	TNT1 A 1
	SSL3 D 2 A_FadeOut(0.125,1)
	Wait
  }
}

Actor RushGhost4 : RushGhost1
{
States
  {
  Spawn:
	TNT1 A 1
	SSL3 E 2 A_FadeOut(0.125,1)
	Wait
  }
}