actor SuperCoreDreadball : Dreadball
{
  MissileType "SuperCoreDreadfulTrailSpawner"
  DamageType BlueTiberium
  States
  {
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("CoreDreadballOrbiter1",0,0,-80,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("CoreDreadballOrbiter2",0,0,80,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("CoreDreadballOrbiter3",0,-80,0,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("CoreDreadballOrbiter4",0,80,0,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("CoreDreadballMiniOrbiter1",0,0,-112,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("CoreDreadballMiniOrbiter2",0,0,112,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("CoreDreadballMiniOrbiter3",0,-112,0,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("CoreDreadballMiniOrbiter4",0,112,0,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
    //TNT1 AAAAAAAAAA 1 ACS_NamedExecuteAlways("Orbit Dat Shite", 0, 0)
  Looplet:
    TNT1 A 0 A_SpawnItemEx("CoreDreadfulFlightSmoke",random(10,-10),random(10,-10),random(10,-10),frandom(0.05,-0.05),frandom(0.05,-0.05),frandom(0.05,-0.05),frandom(0.0,359.0),128,80)
    TNT1 A 0 A_SpawnItemEx("CoreDreadfulParticle",random(20,-20),random(20,-20),random(20,-20),frandom(0.1,1.0),frandom(0.1,1.0),frandom(-1.0,1.0),random(0,359),128,90)
    TNT1 A 0 A_SpawnItemEx("CoreDreadfulParticle2",random(20,-20),random(20,-20),random(20,-20),0,0,0,0,128,90)
    TNT1 A 0 A_SpawnItemEx("CoreDreadfulShockwaveTrail",random(10,-10),random(10,-10),random(10,-10),0,0,0,0,128,50)
    TNT1 A 0 A_Quake (6, 1, 0, 256, none)
    TNT1 A 0 A_PlaySound("Dreadful/Fly",5,0.8,1)
    TNT1 A 1 A_Explode((18*random(2,3)),128,0,0)
	TNT1 A 0 A_Jump(24,"LightningPatch")
    Loop
  LightningPatch:
    TNT1 A 0 A_SpawnItemEx("CoreDreadfulLightning",random(10,-10),random(10,-10),random(10,-10),0,0,0,0,128,0)
    Goto Looplet
  Death:
    TNT1 A 0 A_Quake (9, 70, 0, 1536, none)
    TNT1 A 0 A_Quake (6, 105, 0, 3072, none)
    TNT1 A 0 A_Quake (2, 140, 0, 4096, none)
    TNT1 A 0 A_Quake (1, 180, 0, 8192, none)
	TNT1 A 0 A_RemoveChildren(true,RMVF_EVERYTHING)
	TNT1 A 0 A_SpawnItemEx("SpaceNuke",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	TNT1 A 185
	TNT1 B 55
    stop
  }
}

ACTOR SuperCoreDreadfulTrailSpawner
{ 
    +NOGRAVITY
    +NOINTERACTION
    States
    {
    Spawn:
      TNT1 A 0
      TNT1 A 1 A_SpawnItemEx("SuperCoreDreadfulTrail",frandom(2.0,-2.0),frandom(2.0,-2.0),frandom(2.0,-2.0),0,0,0,0,SXF_CLIENTSIDE,0)
      Stop
    }
}

ACTOR SuperCoreDreadfulTrail
{ 
    Scale 0.3
	Alpha 0.98
    Renderstyle Add
    +NOGRAVITY
    +NOINTERACTION
	+FORCEXYBILLBOARD
    States
    {
    Spawn:
	  TNT1 A 0
	  TNT1 A 0 A_SetScale(ScaleX-0.005,ScaleY-0.005)
	  PRNB A 1 Bright A_FadeOut(0.025)
	  Loop
    }
}

//Apparently I can't use the fastprojectile, as +NOINTERACTION doesn't want to work with it,
//so it keeps its collision and keeps on hitting the floor nonetheless.

actor CoreDreadballOrbiter// : FastProjectile
{
  Health 1
  Speed 10
  PROJECTILE
  +NOINTERACTION
  //MissileType "DreadballOrbiterTrailSpawner"
  States
  {
  Spawn:
	TNT1 A 1
	Loop
  Death:
	TNT1 A 0
	Stop
  }
}

ACTOR CoreDreadballOrbiterTrailSpawner
{ 
    +NOGRAVITY
    +NOINTERACTION
    States
    {
    Spawn:
      TNT1 A 1 NoDelay A_SpawnItemEx("CoreDreadfulOrbiterTrail",frandom(0.5,-0.5),frandom(0.5,-0.5),frandom(0.5,-0.5),0,0,0,0,SXF_CLIENTSIDE,0)
      Stop
    }
}

ACTOR CoreDreadfulOrbiterTrail
{ 
    Scale 0.05
	Alpha 0.98
	Scale 0.1
    Renderstyle Add
    +NOGRAVITY
    +NOINTERACTION
	+FORCEXYBILLBOARD
    States
    {
    Spawn:
	  TNT1 A 0 NoDelay A_JumpIf(ScaleX <= 0, "Null")
	  TNT1 A 0 A_SetScale(ScaleX-0.002,ScaleX)
	  PRNB A 1 Bright A_FadeOut(0.01)
	  Loop
    }
}

Actor CoreDreadballOrbiter1 : CoreDreadballOrbiter
{
  WeaveIndexXY 0
  WeaveIndexZ 48
  States
  {
  Spawn:
    TNT1 A 1 NoDelay A_Weave(1,1,10,10)
	TNT1 A 0 A_SpawnItemEx("CoreDreadballOrbiterTrailSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
    Loop
  }
}

Actor CoreDreadballOrbiter2 : CoreDreadballOrbiter1
{
  WeaveIndexXY 32
  WeaveIndexZ 16
}

Actor CoreDreadballOrbiter3 : CoreDreadballOrbiter1
{
  WeaveIndexXY 16
  WeaveIndexZ 0
}

Actor CoreDreadballOrbiter4 : CoreDreadballOrbiter1
{
  WeaveIndexXY 48
  WeaveIndexZ 32
}

//Second orbiters
ACTOR CoreDreadballMiniOrbiterTrailSpawner
{ 
    +NOGRAVITY
    +NOINTERACTION
    States
    {
    Spawn:
      TNT1 A 1 NoDelay A_SpawnItemEx("CoreDreadfulMiniOrbiterTrail",frandom(0.5,-0.5),frandom(0.5,-0.5),frandom(0.5,-0.5),0,0,0,0,SXF_CLIENTSIDE,0)
      Stop
    }
}

ACTOR CoreDreadfulMiniOrbiterTrail
{ 
    Scale 0.02
	Alpha 0.5
	Scale 0.075
    Renderstyle Add
    +NOGRAVITY
    +NOINTERACTION
	+FORCEXYBILLBOARD
    States
    {
    Spawn:
	  TNT1 A 0 NoDelay A_JumpIf(ScaleX <= 0, "Null")
	  TNT1 A 0 A_SetScale(ScaleX-0.001,ScaleX)
	  PRNB A 1 Bright A_FadeOut(0.02)
	  Loop
    }
}

Actor CoreDreadballMiniOrbiter1 : CoreDreadballOrbiter
{
  WeaveIndexXY 0
  WeaveIndexZ 48
  States
  {
  Spawn:
    TNT1 A 1 NoDelay A_Weave(-1,-1,14,14)
	TNT1 A 0 A_SpawnItemEx("CoreDreadballMiniOrbiterTrailSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
    Loop
  }
}

Actor CoreDreadballMiniOrbiter2 : CoreDreadballMiniOrbiter1
{
  WeaveIndexXY 32
  WeaveIndexZ 16
}

Actor CoreDreadballMiniOrbiter3 : CoreDreadballMiniOrbiter1
{
  WeaveIndexXY 16
  WeaveIndexZ 0
}

Actor CoreDreadballMiniOrbiter4 : CoreDreadballMiniOrbiter1
{
  WeaveIndexXY 48
  WeaveIndexZ 32
}