//[DoomKrakken]: YUSSSS!  A CUSTOM SPELL!  Taken directly from Russian Overkill!

//Inheritance Stuff
ACTOR DarkVoidHackjobInheritance : CustomInventory
{
	Inventory.ForbiddenTo "Guncaster","Guncaster2","Guncaster3"
}

ACTOR DarkVoidEffectInheritance
{
	+NOCLIP
	+NOINTERACTION
	+NOGRAVITY
	+FORCEXYBILLBOARD
	Alpha 0.99
	Renderstyle Add
}

ACTOR DarkVoidSpawnerInheritance
{
	+NOCLIP
	+NOINTERACTION
	+NOGRAVITY
	+FORCEXYBILLBOARD
}

ACTOR DarkVoidSmokeInheritance
{
	+NOINTERACTION
	+NOGRAVITY
	+FORCERADIUSDMG
	+FORCEXYBILLBOARD
	Renderstyle Add
	States
	{
	Spawn:
	TNT1 A 1 NoDelay A_Jump(255,"SpawnA","SpawnB","SpawnC","SpawnD","SpawnE","SpawnF","SpawnG","SpawnH","SpawnI","SpawnJ","SpawnK")
	Stop
	SpawnA:
	 VSMK A 1
	 Goto HNNNG
	SpawnB:
	 VSMK B 1
	 Goto HNNNG
	SpawnC:
	 VSMK C 1
	 Goto HNNNG
	SpawnD:
	 VSMK D 1
	 Goto HNNNG
	SpawnE:
	 VSMK E 1
	 Goto HNNNG
	SpawnF:
	 VSMK G 1
	 Goto HNNNG
	SpawnG:
	 VSMK G 1
	 Goto HNNNG
	SpawnH:
	 VSMK H 1
	 Goto HNNNG
	SpawnI:
	 VSMK I 1
	 Goto HNNNG
	SpawnJ:
	 VSMK J 1
	 Goto HNNNG
	SpawnK:
	 VSMK K 1
	 Goto HNNNG
	HNNNG:
	 VSMK A 0 A_Jump(255,"GTFO Plus","GTFO Minus")
	"GTFO Plus":
	 "####" "#" 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 "####" "#" 1 A_FadeOut(0.01+random(-0.01,0.02))
	 Loop
	"GTFO Minus":
	 "####" "#" 0 A_SetScale(ScaleX -0.01, ScaleY -0.01)
	 "####" "#" 1 A_FadeOut(0.01+random(-0.01,0.02))
	 Loop
	}
}

//Standard Mode...
ACTOR DarkWeave
{
  Radius 16
  Height 28
  Speed 20
  Projectile
  BounceType Grenade
  ReactionTime 35
  BounceFactor 1.0
  WallBounceFactor 1.0
  BounceCount 8
  DamageType "Darkness"
  Obituary "%o succumbed to the %k's Darkvoid matter-eater."
  +DONTBLAST
  +RIPPER
  +MISSILE
  +CANNOTPUSH
  +STEPMISSILE
  +DROPOFF
  +FLOORHUGGER //Well, homing with the new method makes it fly, so I had to use FLOORHUGGER again.
  +NOEXPLODEFLOOR
  +THRUACTORS
  +FORCERADIUSDMG
  +BLOODLESSIMPACT
  +NODAMAGETHRUST
  +THRUGHOST
  +EXPLODEONWATER
  +SEEKERMISSILE
  +DONTBLAST
  +EXTREMEDEATH
  +FORCEXYBILLBOARD
  Renderstyle Shaded
  Alpha 0.8
  Scale 0.4
  //MaxStepHeight 48
  //Gravity 0.5
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_PlaySound("Skullfire/Fly",5,0.6,1)
	TNT1 A 0 A_PlaySound("DarkVoid/Suck",6,0.8,1)
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Quake(2,1,0,256)
	TNT1 A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	TNT1 A 0 A_Explode(80,64,0,1)
	TNT1 A 0 A_Jump(256,2)
	TNT1 A 0 A_Explode(120,64,0,1)
	TNT1 A 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(18,-18),random(18,-18),random(18,4),frandom(0.025,0.05),frandom(0.025,0.05),frandom(0.025,0.05),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(12,-12),random(12,-12),random(12,2),frandom(0.025,0.05),frandom(0.025,0.05),frandom(0.2,2.0),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(28,-28),random(28,-28),random(18,4),frandom(0.025,0.05),frandom(0.025,0.05),frandom(1.25,2.0),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(22,-22),random(22,-22),random(12,2),frandom(0.025,0.05),frandom(0.025,0.05),frandom(1.25,2.0),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidRingNormalTrail")
	TNT1 A 0 A_SpawnItemEx("DarkVoidRingDarkTrail",0,0,0,0,0,frandom(0.1,0.15))
	TNT1 A 0 A_SpawnItemEx("DarkVoidParticleNormal",random(22,-22),random(22,-22),random(22,2),frandom(0.25,0.5),frandom(0.25,0.5),frandom(0.25,0.5),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidParticleDark",random(22,-22),random(22,-22),random(22,2),frandom(0.25,0.5),frandom(0.25,0.5),frandom(0.25,0.5),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidParticleNormal",random(12,-12),random(12,-12),random(12,-12),frandom(0.1,0.05),frandom(0.1,0.05),frandom(0.25,2.0),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidParticleDark",random(12,-12),random(12,-12),random(12,-12),frandom(0.1,0.05),frandom(0.1,0.05),frandom(0.25,2.0),random(0,359),0,0)
	RAMD BB 1 A_SeekerMissile(25,50,SMF_LOOK|SMF_PRECISE,256,7)
	TNT1 A 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(18,-18),random(18,-18),random(18,4),frandom(0.025,0.05),frandom(0.025,0.05),frandom(0.025,0.05),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(12,-12),random(12,-12),random(12,2),frandom(0.025,0.05),frandom(0.025,0.05),frandom(0.2,2.0),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(28,-28),random(28,-28),random(18,4),frandom(0.025,0.05),frandom(0.025,0.05),frandom(1.25,2.0),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(22,-22),random(22,-22),random(12,2),frandom(0.025,0.05),frandom(0.025,0.05),frandom(1.25,2.0),random(0,359),0,0)

	TNT1 A 0 A_SpawnItemEx("DarkVoidParticleNormal",random(22,-22),random(22,-22),random(22,2),frandom(0.25,0.5),frandom(0.25,0.5),frandom(0.25,0.5),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidParticleDark",random(22,-22),random(22,-22),random(22,2),frandom(0.25,0.5),frandom(0.25,0.5),frandom(0.25,0.5),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidParticleNormal",random(12,-12),random(12,-12),random(12,-12),frandom(0.1,0.05),frandom(0.1,0.05),frandom(0.25,2.0),random(0,359),0,0)
	TNT1 A 0 A_SpawnItemEx("DarkVoidParticleDark",random(12,-12),random(12,-12),random(12,-12),frandom(0.1,0.05),frandom(0.1,0.05),frandom(0.25,2.0),random(0,359),0,0)
	RAMD BB 1 A_SeekerMissile(25,50,SMF_LOOK|SMF_PRECISE,256,7)
	Loop
  Death:
	TNT1 A 0 A_PlaySound("DarkVoid/Death",5)
	TNT1 A 0 A_StopSound(6)
	TNT1 A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	TNT1 A 0 A_Explode(400,128,0)
    TNT1 A 0 A_Jump(256,2)
	TNT1 A 0 A_Explode(650,128,0)
	TNT1 A 0 A_Quake (4, 27, 0, 256, none)
    TNT1 A 0 A_Quake (1, 27, 0, 384, none)
	TNT1 A 0 A_SpawnItemEx("DarkVoidChunkWaver",SXF_TRANSFERPOINTERS)
    TNT1 A 0 A_SpawnItemEx("DarkVoidImpactFlareSpawner",SXF_TRANSFERPOINTERS)
	TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("DarkVoidChunkWaver",SXF_TRANSFERPOINTERS)
	VORX ABCD 1
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("DarkVoidChunkWaver",SXF_TRANSFERPOINTERS)
	VORX EFGH 1
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("DarkVoidChunkWaver",SXF_TRANSFERPOINTERS)
	VORX IJKL 1
	TNT1 AAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 AAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("DarkVoidChunkWaver",SXF_TRANSFERPOINTERS)
    TNT1 B 30
  	Stop
	}
}

//[DoomKrakken]: Because it's TIME TO STOP.
ACTOR TimeToStop : CustomInventory
{
	+INVENTORY.AUTOACTIVATE
	Inventory.MaxAmount 0
	States
	{
	Spawn:
	TNT1 A -1
	Stop
	Pickup:
	TNT1 A 0 A_Stop
	Stop
	}
}


ACTOR TomedDarkweave : Darkweave
{
	ReactionTime 70
	BounceCount 16
}

Actor DarkVoidImpactFlareSpawner
{
  +NOINTERACTION
  +NOGRAVITY
  States
  {
  Spawn:
  TNT1 A 0
  TNT1 AAAA 3 A_SpawnItemEx("DarkVoidImpactFlare",SXF_TRANSFERPOINTERS)
  Stop
  }
}

Actor DarkVoidImpactFlare
{
  +NOINTERACTION
  +NOTARGET
  Renderstyle Shaded
  Scale 0.2
  States
  {
  Spawn:
  TNT1 A 0
  TNT1 A 0 A_SetScale(ScaleX+0.03,ScaleY+0.03)
  RAMD B 1 A_FadeOut(0.03)
  Loop
  }
}

Actor DarkVoidParticleNormal
{
  +NOINTERACTION
  Renderstyle Add
  Scale 0.1
  States
  {
  Spawn:
  TNT1 A 0
  TNT1 A 0 A_SetScale(ScaleX-0.0025,ScaleY-0.0025)
  VODM A 1 Bright A_FadeOut(0.025)
  Loop
  }
}	

Actor DarkVoidParticleDark
{
  +NOINTERACTION
  Renderstyle Shaded
  Scale 0.1
  States
  {
  Spawn:
  TNT1 A 0
  TNT1 A 0 A_SetScale(ScaleX-0.0025,ScaleY-0.0025)
  VODM B 1 A_FadeOut(0.025)
  Loop
  }
}

//Alternate Mode...

ACTOR DarkVoidBlackHoleProjectile
{
  Radius 11
  Height 6
  Speed 5
  Damage 0
  Projectile
  Renderstyle Add
  +FORCERADIUSDMG
  +FOILINVUL
  +RIPPER
  +CANNOTPUSH
  +BLOODLESSIMPACT
  +DONTBLAST
  +NODAMAGETHRUST
  +SKYEXPLODE
  DamageType "Darkness"
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("DarkVoid/Suck",5,1.0,1,ATTN_NORM)
  Looplet:
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Explode(20,96,0,1)
	TNT1 A 0 Bright A_GiveInventory("DarkVoidRingTrailer", 1) //
	VOIP A 0 Bright A_GiveInventory("DarkVoidBlackHoleTrailer", 1) //
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	VOIP D 0 Bright A_GiveInventory("DarkVoidBlackHoleSmoker", 1)
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Explode(20,96,0,1)
	VOIP B 0 Bright A_GiveInventory("DarkVoidBlackHoleSmoker", 1)
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ)
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Explode(20,96,0,1)
	VOIP C 0 Bright A_GiveInventory("DarkVoidBlackHoleSmoker", 1)
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Explode(20,96,0,1)
	VOIP D 0 Bright A_GiveInventory("DarkVoidBlackHoleSmoker", 1)
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Explode(20,96,0,1)
	TNT1 A 0 Bright A_GiveInventory("DarkVoidRingTrailer", 1) //
	VOIP E 0 Bright A_GiveInventory("DarkVoidBlackHoleTrailer", 1) //
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	VOIP D 0 Bright A_GiveInventory("DarkVoidBlackHoleSmoker", 1)
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ)
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Explode(20,96,0,1)
	VOIP F 0 Bright A_GiveInventory("DarkVoidBlackHoleSmoker", 1)
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Explode(20,96,0,1)
	VOIP G 0 Bright A_GiveInventory("DarkVoidBlackHoleSmoker", 1)
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Explode(20,96,0,1)
	VOIP H 0 Bright A_GiveInventory("DarkVoidBlackHoleSmoker", 1)
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Explode(20,96,0,1)
	TNT1 A 0 Bright A_GiveInventory("DarkVoidRingTrailer", 1) //
	VOIP I 0 Bright A_GiveInventory("DarkVoidBlackHoleTrailer", 1) //
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	VOIP D 0 Bright A_GiveInventory("DarkVoidBlackHoleSmoker", 1)
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Explode(20,96,0,1)
	VOIP J 0 Bright A_GiveInventory("DarkVoidBlackHoleSmoker", 1)
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Explode(20,96,0,1)
	VOIP K 0 Bright A_GiveInventory("DarkVoidBlackHoleSmoker", 1)
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_RadiusGive("TimeToStop",256,RGF_MONSTERS,1)
	TNT1 A 0 A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	TNT1 A 0 A_Explode(20,96,0,1)
	VOIP L 0 Bright A_GiveInventory("DarkVoidBlackHoleSmoker", 1)
	"####" "##" 1 Bright A_RadiusThrust(-3000, 256, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ) 
	loop
  Death:
	TNT1 A 0 A_StopSound(5)
	TNT1 A 1 A_PlaySound("DarkVoid/Blast",5,1.0,0/*,ATTN_NONE*/)
	//BlackHole ITSELF
    TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleSpawn",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
    TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleSpawnDark",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
  	Stop
  }
}

//BlackHole TRAIL

Actor DarkVoidBlackHoleTrailer : CustomInventory 
{ 
     States 
     { 
          Spawn: 
          Pickup: 
		TNT1 A 0 
		TNT1 A 1 A_SpawnItemEx("DarkVoidBlackHoleTrailNormal",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
		TNT1 A 1 A_SpawnItemEx("DarkVoidBlackHoleTrailDark",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
		Stop 
     } 
}

ACTOR DarkVoidBlackHoleTrailNormal : DarkVoidEffectInheritance
{
	Renderstyle Add
	States
	{
	Spawn:
	TNT1 A 0
	VOIP ABCDEFGHIJKL 2 Bright A_GiveInventory("DarkVoidBlackHoleEffectizer",1)
	Loop
	}
}

ACTOR DarkVoidBlackHoleTrailDark : DarkVoidBlackHoleTrailNormal
{
	Alpha 0.8
	Renderstyle Stencil
	StencilColor Black
	States
	{
	Spawn:
	TNT1 A 0
	VOIP FGHIJKLABCDE 2 Bright A_GiveInventory("DarkVoidBlackHoleEffectizer",1)
	Loop
	}
}

Actor DarkVoidBlackHoleEffectizer : CustomInventory 
{ 
     States 
     { 
          Spawn: 
          Pickup: 
		TNT1 A 0
		TNT1 A 0 A_SetScale(ScaleX -0.01, ScaleY -0.01)
		TNT1 A 0 A_FadeOut(0.05+frandom(0.00,0.02))
		Stop 
     } 
}

//SMOKE TRAIL

Actor DarkVoidBlackHoleSmoker : DarkVoidHackjobInheritance
{ 
     States 
     { 
          Spawn: 
          Pickup: 
		TNT1 A 0 
		TNT1 A 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(28,-28),random(28,-28),random(28,-28),frandom(0.1,1.0),frandom(0.1,1.0),frandom(-1.0,1.0),random(0,359),SXF_TRANSFERPOINTERS|128,0)
		TNT1 A 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(14,-14),random(14,-14),random(14,-14),frandom(0.1,1.0),frandom(0.1,1.0),frandom(-1.0,1.0),random(0,359),SXF_TRANSFERPOINTERS|128,0)
		Stop 
     } 
}

ACTOR DarkVoidSmokeTrailNormal : DarkVoidSmokeInheritance
{
	Scale 0.65
	Alpha 0.6
}

ACTOR DarkVoidSmokeTrailDark : DarkVoidSmokeTrailNormal
{
	Scale 0.5
	Alpha 0.3
	Renderstyle Stencil
	StencilColor Black
	States
	{
	"GTFO Plus":
	 "####" "#" 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 "####" "#" 1 A_FadeOut(0.005+random(-0.005,0.01))
	 Loop
	"GTFO Minus":
	 "####" "#" 0 A_SetScale(ScaleX -0.01, ScaleY -0.01)
	 "####" "#" 1 A_FadeOut(0.005-random(-0.005,0.01))
	 Loop
	}
}

//RING TRAIL

ACTOR DarkVoidRingNormalTrail : DarkVoidEffectInheritance
{
	Scale 0.125
	States
	{
	Spawn:
	VSHK AA 0 A_FadeOut(0.02)
	VSHK A 0 A_SetScale(ScaleX +0.02, ScaleY +0.02)
	VSHK A 1 Bright
	Loop
	}
}

ACTOR DarkVoidRingDarkTrail : DarkVoidRingNormalTrail
{
	Renderstyle Stencil
	StencilColor Black
}

Actor DarkVoidRingTrailer : DarkVoidHackjobInheritance
{
     States 
     { 
          Spawn: 
          Pickup: 
		TNT1 A 0 
		TNT1 A 0 A_SpawnItemEx("DarkVoidRingNormalTrail",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
		TNT1 A 0 A_SpawnItemEx("DarkVoidRingDarkTrail",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
		Stop 
     }
}

///////////////
//           //
//           //
// PHASE ONE //
//           //
//           //
///////////////

//STRUCK

ACTOR DarkVoidStruck : DarkVoidEffectInheritance
{
	Alpha 0.5
	Scale 2
	States
	{
	Spawn:
	PBUM A 0
	PBUM A 0 A_SetScale(ScaleX +0.1, ScaleY +0.1)
	PBUM A 1 Bright A_FadeOut(0.01)
	Loop
	}
}

//DarkVoid-BlackHole

ACTOR DarkVoidBlackHoleSpawn : DarkVoidEffectInheritance
{
	States
	{
	Spawn:
	TNT1 A 0
	VOIP A 0 A_SpawnItemEx("DarkVoidBlackHoleSound",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_Quake(7, 24, 0, 4096,"none")
	TNT1 A 0 A_SpawnItemEx("DarkVoidStruck",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP AABBCCDDEEFFGGHHIIJJKKLL 1 A_SetScale(ScaleX +0.8, ScaleY +0.8) //19.2 in total

	TNT1 A 0 A_StopSound(5)

	VOIP A 0 A_SpawnItemEx("DarkVoidBlackHoleDamager",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidBlackHoleSucker",0,0,1,0,0,0,0,SXF_TRANSFERPOINTERS,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidBlackHoleNormal",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidBlackHoleDark",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidBlackHoleRingSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidFadeSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidBlackFadeSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidDeathSequence",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidLightningSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidSmokeSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 1
	Stop
	}
}

ACTOR DarkVoidBlackHoleSound : DarkVoidSpawnerInheritance
{
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("DarkVoid/SuperSuck",5,1.0,1/*,ATTN_NONE*/)
	TNT1 A 384
	TNT1 A 0 A_PlaySound("DarkVoid/Explode",5,1.0,0/*,ATTN_NONE*/)
	TNT1 A 0 A_PlaySound("DarkVoid/Blast",6,1.0,0/*,ATTN_NONE*/)
	Stop
	}
}


ACTOR DarkVoidBlackHoleSpawnDark : DarkVoidBlackHoleSpawn
{
	Alpha 0.7
	Renderstyle Stencil
	StencilColor Black
	States
	{
	Spawn:
	TNT1 A 0
	VOIP FFGGHHIIJJKKLLAABBCCDDEE 1 A_SetScale(ScaleX +0.8, ScaleY +0.8) //19.2 in total
	Stop
	}
}

ACTOR DarkVoidBlackHoleNormal : DarkVoidEffectInheritance
{
	ReactionTime 15 //360 tics, around 10 seconds
	Scale 19.3
	States
	{
	Spawn:
	VOIP A 0
	Looplet:
	VOIP A 0 A_Countdown
    VOIP ABCDEFGHIJKL 2
	Loop
	Death:
	TNT1 A 0 A_StopSound(5)
	TNT1 A 1
	Stop
	}
}

ACTOR DarkVoidBlackHoleDark : DarkVoidBlackHoleNormal
{
	ReactionTime 10
	Alpha 0.5
	Renderstyle Stencil
	StencilColor Black
	States
	{
	Spawn:
	VOIP A 0
	Looplet:
	VOIP A 0 A_Countdown
    VOIP ABCDEFGHIJKL 3
	Loop
	Death:
	TNT1 A 1
	Stop
	}
}

//BlackHole DAMAGER

Actor DarkVoidBlackHoleDamager : DarkVoidSpawnerInheritance
{ 
	ReactionTime 360
	+FORCERADIUSDMG
    +NODAMAGETHRUST
	DamageType "Darkness"
     States 
     { 
      Spawn: 
		TNT1 A 0
		TNT1 A 0 A_SetAngle(Angle+15)
		TNT1 A 0 A_Countdown
		TNT1 A 1 A_Explode(6,512,0,1/*,512*/)
		Loop
	  Death:
		Stop
     } 
}

//BlackHole IMPLOSION

Actor DarkVoidBlackHoleSucker : DarkVoidSpawnerInheritance
{ 
	ReactionTime 360
	+FORCERADIUSDMG
     States 
     { 
      Spawn: 
		TNT1 A 0 A_SetAngle(Angle+10)
		TNT1 A 0 A_RadiusGive("TimeToStop",1536,RGF_MONSTERS,1)
		TNT1 A 1 A_RadiusThrust(-25000, 1536, RTF_NOIMPACTDAMAGE|RTF_THRUSTZ, 1024) 
		TNT1 A 0 A_Countdown
		Loop
	  Death:
		Stop
     } 
}

//BlackHole EFFECTS

//BlackHole FADE

Actor DarkVoidFadeSpawner : DarkVoidSpawnerInheritance
{ 
     ReactionTime 72
     States 
     { 
          Spawn: 
          Pickup: 
		TNT1 A 0 
		TNT1 A 5 A_Countdown
		TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleMain",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
		Loop
	  Death:
	 	TNT1 A 1
		Stop
     } 
}

ACTOR DarkVoidBlackHoleMain : DarkVoidEffectInheritance
{
	Scale 19.5
	Alpha 0.7
	States
	{
	Spawn:
	TNT1 A 0
	VOIP A 0 A_Quake(9, 360, 0, 1024,"none")
	VOIP A 0 A_Quake(6, 360, 0, 2048,"none")
	VOIP A 0 A_Quake(2, 360, 0, 4086,"none")
	VOIP A 0 A_Quake(1, 360, 0, 12258,"none")
	Looplet:
	VOIP ABCDEFGHIJKL 1 Bright A_GiveInventory("DarkVoidBlackHoleEffectizer2",1)
	Loop
	}
}

Actor DarkVoidBlackHoleEffectizer2 : DarkVoidHackjobInheritance
{ 
     States 
     { 
          Spawn: 
          Pickup: 
		TNT1 A 0
		TNT1 A 0 A_SetScale(ScaleX +0.05, ScaleY +0.05)
		TNT1 A 0 A_FadeOut(0.05+frandom(0.00,0.02))
		Stop 
     } 
}

Actor DarkVoidBlackFadeSpawner : DarkVoidSpawnerInheritance
{ 
     ReactionTime 60
     States 
     { 
          Spawn: 
          Pickup: 
		TNT1 A 0 
		TNT1 A 6 A_Countdown
		TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleMainBlack",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
		Loop
	  Death:
	 	TNT1 A 1
		Stop
     } 
}

ACTOR DarkVoidBlackHoleMainBlack : DarkVoidEffectInheritance
{
	Scale 19.5
	Alpha 0.7
	Renderstyle Stencil
	StencilColor Black
	States
	{
	Spawn:
	TNT1 A 0
	VOIP ABCDEFGHIJKL 1 Bright A_GiveInventory("DarkVoidBlackHoleEffectizer2",1)
	Loop
	}
}

//BlackHole RING

ACTOR DarkVoidBlackHoleRingSpawner : DarkVoidSpawnerInheritance
{
	ReactionTime 30
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Countdown
	TNT1 A 6 A_SpawnItemEx("DarkVoidRingNormal",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	TNT1 A 6 A_SpawnItemEx("DarkVoidRingDark",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	Loop
	Death:
	Stop
	}
}

ACTOR DarkVoidRingNormal : DarkVoidEffectInheritance
{
	Scale 4.25
	States
	{
	Spawn:
	VSHK AA 0 A_FadeOut(0.03)
	VSHK A 0 A_SetScale(ScaleX +0.1, ScaleY +0.1)
	VSHK A 1 Bright
	Loop
	}
}

ACTOR DarkVoidRingDark : DarkVoidRingNormal
{
	Renderstyle Stencil
	StencilColor Black
	States
	{
	Spawn:
	VSHK AA 0 A_FadeOut(0.03)
	VSHK A 0 A_SetScale(ScaleX +0.1, ScaleY +0.1)
	VSHK A 1 Bright
	Loop
	}
}

//BlackHole LIGHTNING

Actor DarkVoidLightningSpawner : DarkVoidSpawnerInheritance
{ 
     ReactionTime 40
     States 
     { 
	  Spawn: 
      Pickup: 
		TNT1 A 0 
		TNT1 A 9 A_Countdown
		TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleLightning",random(320,-320),random(320,-320),random(320,-320),0,0,0,0,SXF_TRANSFERPOINTERS|128,64)
		Loop
	  Death:
	 	TNT1 A 1
		Stop
     } 
}

ACTOR DarkVoidBlackHoleLightning : DarkVoidEffectInheritance
{
	Scale 1.25
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Jump(255,"Spawn1A","Spawn1B","Spawn1C","Spawn1D","Spawn2A","Spawn2B","Spawn2C","Spawn2D")
	Spawn1A:
	L1TE A 1 Bright A_FadeOut(0.02)
	Wait
	Spawn1B:
	L1TE B 1 Bright A_FadeOut(0.02)
	Wait
	Spawn1C:
	L1TE C 1 Bright A_FadeOut(0.02)
	Wait
	Spawn1D:
	L1TE D 1 Bright A_FadeOut(0.02)
	Wait
	Spawn2A:
	L2TE A 1 Bright A_FadeOut(0.02)
	Wait
	Spawn2B:
	L2TE B 1 Bright A_FadeOut(0.02)
	Wait
	Spawn2C:
	L2TE C 1 Bright A_FadeOut(0.02)
	Wait
	Spawn2D:
	L2TE D 1 Bright A_FadeOut(0.02)
	Wait
	}
}

//BlackHole SMOKE

ACTOR DarkVoidSmokeSpawner : DarkVoidSpawnerInheritance
{
	ReactionTime 180
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_Countdown
	TNT1 A 0 A_SpawnItemEx("DarkVoidSmokeNormal",random(384,-384),random(384,-384),random(384,-384),frandom(0.1,1.0),frandom(0.1,1.0),frandom(-1.0,1.0),random(0,359),SXF_TRANSFERPOINTERS|128,0)
	TNT1 A 2 A_SpawnItemEx("DarkVoidSmokeDark",random(256,-256),random(256,-256),random(256,-256),frandom(0.1,1.0),frandom(0.1,1.0),frandom(-1.0,1.0),random(0,359),SXF_TRANSFERPOINTERS|128,0)
	Loop
	Death:
	Stop
	}
}

ACTOR DarkVoidSmokeNormal : DarkVoidSmokeInheritance
{
	Scale 9.2
	Alpha 0.3
	States
	{
	"GTFO Plus":
	 "####" "#" 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 "####" "#" 1 A_FadeOut(0.005+random(-0.005,0.01))
	 Loop
	"GTFO Minus":
	 "####" "#" 0 A_SetScale(ScaleX -0.01, ScaleY -0.01)
	 "####" "#" 1 A_FadeOut(0.005-random(-0.005,0.01))
	 Loop
	}
}

ACTOR DarkVoidSmokeDark : DarkVoidSmokeTrailNormal
{
	Scale 8.9
	Alpha 0.2
	Renderstyle Stencil
	StencilColor Black
	States
	{
	"GTFO Plus":
	 "####" "#" 0 A_SetScale(ScaleX +0.005, ScaleY +0.005)
	 "####" "#" 1 A_FadeOut(0.0025+random(-0.0025,0.005))
	 Loop
	"GTFO Minus":
	 "####" "#" 0 A_SetScale(ScaleX -0.005, ScaleY -0.005)
	 "####" "#" 1 A_FadeOut(0.0025-random(-0.0025,0.005))
	 Loop
	}
}

///////////////
//           //
//           //
// PHASE TWO //
//           //
//           //
///////////////

Actor DarkVoidDeathSequence : DarkVoidEffectInheritance
{ 
     Scale 19.5
     States 
     { 
          Spawn: 
		TNT1 A 360
	  Death:
		VORX A 0 A_Quake(7, 70, 0, 12258,"none")
	 	VORX A 0 A_SpawnItemEx("DarkVoidBlackHoleChunkSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	 	VORX A 0 A_SpawnItemEx("DarkVoidBlackHoleExplode",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	 	VORX A 0 A_SpawnItemEx("DarkVoidBlackHoleGiantRingSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	 	VORX A 0 A_SpawnItemEx("DarkVoidBlackHoleShockwave",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
		VORX ABCDEFGHIJKL 1
	 	VORX A 0 A_SpawnItemEx("DarkVoidBlackHoleAfterShockwave",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	 	VORX A 0 A_SpawnItemEx("DarkVoidBlackHoleExploFlare",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	 	TNT1 A 60 A_SpawnItemEx("DarkVoidBlackHoleAfterExplode",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
		Stop
     } 
}

//FLARE

ACTOR DarkVoidBlackHoleExploFlare : DarkVoidEffectInheritance
{
	Alpha 1
	Scale 1
	States
	{
	Spawn:
	VODF A 0
	VODF A 0 A_SetScale(ScaleX +0.1, ScaleY +0.1)
	VODF A 1 Bright A_FadeOut(0.01)
	Loop
	}
}

//CHUNK-BLAST

ACTOR DarkVoidBlackHoleChunkSpawner : DarkVoidSpawnerInheritance
{
	ReactionTime 50
	States
	{
	Spawn:
	TNT1 AA 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleChunk",random(256,-256),random(256,-256),random(128,0),frandom(3.0,10.0),0,frandom(15.0,20.0),frandom(0.0,359.0),SXF_TRANSFERPOINTERS|SXF_CLIENTSIDE,0)
	Loop
	}
}

ACTOR DarkVoidBlackHoleChunk : DarkVoidBlackHoleProjectile
{
  Gravity 0.15
  -NOGRAVITY
  States
  {
  Death:
	TNT1 A 0 A_PlaySound("DarkVoid/Death",5)
	TNT1 A 0 A_Explode(10,64,0)
        TNT1 A 0 A_Quake (4, 27, 0, 256, none)
        TNT1 A 0 A_Quake (1, 27, 0, 384, none)
	TNT1 A 0 A_SpawnItemEx("DarkVoidChunkWaver",SXF_TRANSFERPOINTERS)
	TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("DarkVoidChunkWaver",SXF_TRANSFERPOINTERS)
	VORX ABCD 1
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("DarkVoidChunkWaver",SXF_TRANSFERPOINTERS)
	VORX EFGH 1
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("DarkVoidChunkWaver",SXF_TRANSFERPOINTERS)
	VORX IJKL 1
	TNT1 AAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailNormal",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 AAAAAA 0 A_SpawnItemEx("DarkVoidSmokeTrailDark",random(6,-6),random(6,-6),random(6,-6),frandom(1.0,0.05),frandom(1.0,0.05),frandom(1.0,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("DarkVoidChunkWaver",SXF_TRANSFERPOINTERS)
	TNT1 B 30
  	Stop
  }
}

ACTOR DarkVoidChunkWaveNormal : DarkVoidEffectInheritance
{
	Scale 0.175
	States
	{
	Spawn:
	VSHK AA 0 A_FadeOut(0.02)
	VSHK A 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
	VSHK A 1 Bright
	Loop
	}
}

ACTOR DarkVoidChunkWaveDark : DarkVoidChunkWaveNormal
{
	Renderstyle Stencil
	StencilColor Black
}

Actor DarkVoidChunkWaver : DarkVoidHackjobInheritance
{
     States 
     { 
          Spawn: 
          Pickup: 
		TNT1 A 0 
		TNT1 A 0 A_SpawnItemEx("DarkVoidChunkWaveNormal",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
		TNT1 A 0 A_SpawnItemEx("DarkVoidChunkWaveDark",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
		Stop 
     }
}

ACTOR DarkVoidBlackHoleRingSpawnerShort : DarkVoidBlackHoleRingSpawner
{
	ReactionTime 3
}

//DarkVoid BlackHole EXPLOSION

ACTOR DarkVoidBlackHoleExplode : DarkVoidSpawnerInheritance
{
	ReactionTime 100
	States
	{
	Spawn:
	TNT1 AA 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleFlame",random(32,-32),random(32,-32),random(32,32),frandom(10.0,2.0),frandom(10.0,2.0),frandom(10.0,-10.0),frandom(0.0,359.0),SXF_TRANSFERPOINTERS|SXF_CLIENTSIDE,0)
	Loop
	}
}

ACTOR DarkVoidBlackHoleFlame : DarkVoidEffectInheritance
{
	Scale 0.5
	Alpha 0.5
	+FORCERADIUSDMG
	DamageType "Darkness"
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 1 A_Jump(255,"SpawnA","SpawnB","SpawnC","SpawnD")
	Stop
	SpawnA:
	 VODB A 0 A_JumpIf(Alpha<0.18,2)
	 VODB A 0 A_Explode(20,256,0)
	 VODB A 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 VODB A 1 A_FadeOut(0.005+random(-0.005,0.0005))
	 Loop
	SpawnB:
	 VODB A 0 A_JumpIf(Alpha<0.18,2)
	 VODB A 0 A_Explode(20,256,0)
	 VODB B 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 VODB B 1 A_FadeOut(0.005+random(-0.005,0.0005))
	 Loop
	SpawnC:
	 VODB A 0 A_JumpIf(Alpha<0.18,2)
	 VODB A 0 A_Explode(20,256,0)
	 VODB C 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 VODB C 1 A_FadeOut(0.005+random(-0.005,0.0005))
	 Loop
	SpawnD:
	 VODB A 0 A_JumpIf(Alpha<0.18,2)
	 VODB A 0 A_Explode(20,256,0)
	 VODB D 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 VODB D 1 A_FadeOut(0.005+random(-0.005,0.0005))
	 Loop
	}
}

ACTOR DarkVoidBlackHoleAfterExplode : DarkVoidSpawnerInheritance
{
	ReactionTime 100
	States
	{
	Spawn:
	TNT1 AA 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleAfterFlame",random(32,-32),random(32,-32),random(32,32),frandom(10.0,2.0),frandom(10.0,2.0),frandom(10.0,-10.0),frandom(0.0,359.0),SXF_TRANSFERPOINTERS|SXF_CLIENTSIDE,0)
	Loop
	}
}

ACTOR DarkVoidBlackHoleAfterFlame : DarkVoidEffectInheritance
{
	ReactionTime 70
	Renderstyle Stencil
	StencilColor Black
	Alpha 0.5
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 1 A_Jump(255,"SpawnA","SpawnB","SpawnC")
	Stop
	SpawnA:
	 TNT1 A 0 A_Countdown
	 VODS A 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 VODS A 1 A_FadeOut(0.0005+random(-0.0005,0.0005))
	 Loop
	SpawnB:
	 TNT1 A 0 A_Countdown
	 VODS B 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 VODS B 1 A_FadeOut(0.0005+random(-0.0005,0.0005))
	 Loop
	SpawnC:
	 TNT1 A 0 A_Countdown
	 VODS C 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 VODS C 1 A_FadeOut(0.0005+random(-0.0005,0.0005))
	 Loop
	Death:
	 TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleAfterFlame2",0,0,0,frandom(0.1,0.05),frandom(0.1,0.05),frandom(0.1,0.05),random(0,359),SXF_TRANSFERPOINTERS)
	 Stop
	}
}

ACTOR DarkVoidBlackHoleAfterFlame2 : DarkVoidBlackHoleAfterFlame
{
	Renderstyle Stencil
	StencilColor Black
	Alpha 0.5
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 1 A_Jump(255,"SpawnA","SpawnB","SpawnC")
	Stop
	SpawnA:
	 VODS A 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 VODS A 1 A_FadeOut(0.0025+random(-0.0025,0.0025))
	 Loop
	SpawnB:
	 VODS B 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 VODS B 1 A_FadeOut(0.0025+random(-0.0025,0.0025))
	 Loop
	SpawnC:
	 VODS C 0 A_SetScale(ScaleX +0.01, ScaleY +0.01)
	 VODS C 1 A_FadeOut(0.0025+random(-0.0025,0.0025))
	 Loop
	}
}

//BlackHole BLAST SHOCKWAVE

ACTOR DarkVoidBlackHoleShockwave : DarkVoidSpawnerInheritance
{
	ReactionTime 200
	States
	{
	Spawn:
	TNT1 AA 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleFlame",random(32,-32),random(32,-32),random(32,32),frandom(9.0,8.0),frandom(9.0,8.0),frandom(0.1,-0.1),frandom(0.0,359.0),SXF_TRANSFERPOINTERS|SXF_CLIENTSIDE,0)
	Loop
	}
}

ACTOR DarkVoidBlackHoleAfterShockwave : DarkVoidSpawnerInheritance
{
	ReactionTime 200
	States
	{
	Spawn:
	TNT1 AA 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleAfterFlame2",random(32,-32),random(32,-32),random(32,32),frandom(7.0,6.0),frandom(7.0,6.0),frandom(0.1,-0.1),frandom(0.0,359.0),SXF_TRANSFERPOINTERS|SXF_CLIENTSIDE,0)
	Loop
	}
}

//BlackHole BLAST RING

ACTOR DarkVoidBlackHoleGiantRingSpawner : DarkVoidSpawnerInheritance
{
	ReactionTime 6
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Countdown
	TNT1 A 6 A_SpawnItemEx("DarkVoidGiantRingNormal",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	TNT1 A 6 A_SpawnItemEx("DarkVoidGiantRingDark",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	Loop
	Death:
	Stop
	}
}

ACTOR DarkVoidGiantRingNormal : DarkVoidEffectInheritance
{
	Scale 5.25
	States
	{
	Spawn:
	VSHK AA 0 A_FadeOut(0.02)
	VSHK A 0 A_SetScale(ScaleX +0.2, ScaleY +0.2)
	VSHK A 1 Bright
	Loop
	}
}

ACTOR DarkVoidGiantRingDark : DarkVoidRingNormal
{
	Renderstyle Stencil
	StencilColor Black
	States
	{
	Spawn:
	VSHK AA 0 A_FadeOut(0.02)
	VSHK A 0 A_SetScale(ScaleX +0.2, ScaleY +0.2)
	VSHK A 1 Bright
	Loop
	}
}

//Tomed Alt-Mode

ACTOR DarkVoidMultiBlackHoleSpawner : DarkWeave
{
  Projectile
  BounceType None
  ReactionTime 20
  BounceCount 1
  Obituary "%o succumbed to %k's cluster black hole!"
  -FLOORHUGGER
  -SEEKERMISSILE
  States
  {
  Death:
	TNT1 A 0 A_StopSound(5)
	TNT1 A 0 A_StopSound(6)
	TNT1 A 0 A_PlaySound("DarkVoid/Blast",5,1.0,0)
    TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleSpawn2",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
    TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleSpawnDark",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
  	Stop
	}
}

ACTOR DarkVoidBlackHoleClusterProjectile : DarkVoidBlackHoleProjectile
{
  Speed 10
  States
  {
  Death:
	TNT1 A 0 A_StopSound(5)
	TNT1 A 0 A_PlaySound("DarkVoid/Blast",5,1.0,0/*,ATTN_NONE*/)
	//BlackHole ITSELF
    TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleSpawn",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
    TNT1 A 0 A_SpawnItemEx("DarkVoidBlackHoleSpawnDark",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)

    TNT1 A 0 A_SpawnItemEx("DarkVoidMultiBlackHoleSpawner",0,0,0,20,0,0,0,SXF_TRANSFERPOINTERS|128,0)
    TNT1 A 0 A_SpawnItemEx("DarkVoidMultiBlackHoleSpawner",0,0,0,20,0,0,45,SXF_TRANSFERPOINTERS|128,0)
    TNT1 A 0 A_SpawnItemEx("DarkVoidMultiBlackHoleSpawner",0,0,0,20,0,0,90,SXF_TRANSFERPOINTERS|128,0)
    TNT1 A 0 A_SpawnItemEx("DarkVoidMultiBlackHoleSpawner",0,0,0,20,0,0,135,SXF_TRANSFERPOINTERS|128,0)
    TNT1 A 0 A_SpawnItemEx("DarkVoidMultiBlackHoleSpawner",0,0,0,20,0,0,180,SXF_TRANSFERPOINTERS|128,0)
    TNT1 A 0 A_SpawnItemEx("DarkVoidMultiBlackHoleSpawner",0,0,0,20,0,0,225,SXF_TRANSFERPOINTERS|128,0)
    TNT1 A 0 A_SpawnItemEx("DarkVoidMultiBlackHoleSpawner",0,0,0,20,0,0,270,SXF_TRANSFERPOINTERS|128,0)
    TNT1 A 1 A_SpawnItemEx("DarkVoidMultiBlackHoleSpawner",0,0,0,20,0,0,315,SXF_TRANSFERPOINTERS|128,0)
  	Stop
  }
}

ACTOR DarkVoidBlackHoleSpawn2 : DarkVoidEffectInheritance //Without chunks on death, because they lag like hell
{
	States
	{
	Spawn:
	TNT1 A 0
	VOIP A 0 A_SpawnItemEx("DarkVoidBlackHoleSound",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_Quake(7, 24, 0, 4096,"none")
	TNT1 A 0 A_SpawnItemEx("DarkVoidStruck",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP AABBCCDDEEFFGGHHIIJJKKLL 1 A_SetScale(ScaleX +0.8, ScaleY +0.8) //19.2 in total

	TNT1 A 0 A_StopSound(5)

	VOIP A 0 A_SpawnItemEx("DarkVoidBlackHoleDamager",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidBlackHoleSucker",0,0,1,0,0,0,0,SXF_TRANSFERPOINTERS,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidBlackHoleNormal",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidBlackHoleDark",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidBlackHoleRingSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidFadeSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidBlackFadeSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidDeathSequence2",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidLightningSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 0 A_SpawnItemEx("DarkVoidSmokeSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	VOIP A 1
	Stop
	}
}

ACTOR DarkVoidBlackHoleSpawnDark2 : DarkVoidBlackHoleSpawn2
{
	Alpha 0.7
	Renderstyle Stencil
	StencilColor Black
	States
	{
	Spawn:
	TNT1 A 0
	VOIP FFGGHHIIJJKKLLAABBCCDDEE 1 A_SetScale(ScaleX +0.8, ScaleY +0.8) //19.2 in total
	Stop
	}
}

Actor DarkVoidDeathSequence2 : DarkVoidEffectInheritance
{ 
     Scale 19.5
     States 
     { 
          Spawn: 
		TNT1 A 360
	  Death:
		VORX A 0 A_Quake(7, 70, 0, 12258,"none")
	 	VORX A 0 A_SpawnItemEx("DarkVoidBlackHoleExplode",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	 	VORX A 0 A_SpawnItemEx("DarkVoidBlackHoleGiantRingSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	 	VORX A 0 A_SpawnItemEx("DarkVoidBlackHoleShockwave",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
		VORX ABCDEFGHIJKL 1
	 	VORX A 0 A_SpawnItemEx("DarkVoidBlackHoleAfterShockwave",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	 	VORX A 0 A_SpawnItemEx("DarkVoidBlackHoleExploFlare",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
	 	TNT1 A 60 A_SpawnItemEx("DarkVoidBlackHoleAfterExplode",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|128,0)
		Stop
     } 
}