actor SuperDreadball : Dreadball
{
  MissileType "SuperDreadfulTrailSpawner"
  DamageType Tiberium
  //ReactionTime 350
  States
  {
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("DreadballOrbiter1",0,0,-80,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("DreadballOrbiter2",0,0,80,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("DreadballOrbiter3",0,-80,0,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("DreadballOrbiter4",0,80,0,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("DreadballMiniOrbiter1",0,0,-112,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("DreadballMiniOrbiter2",0,0,112,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("DreadballMiniOrbiter3",0,-112,0,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_SETMASTER|SXF_ORIGINATOR|SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx("DreadballMiniOrbiter4",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_Countdown
    TNT1 A 0 A_SpawnItemEx("DreadfulFlightSmoke",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,0)
    TNT1 A 0 A_SpawnItemEx("DreadfulParticle",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,0)
    TNT1 A 0 A_SpawnItemEx("DreadfulParticle2",random(20,-20),random(20,-20),random(20,-20),0,0,0,0,128,0)
    TNT1 A 0 A_SpawnItemEx("DreadfulShockwaveTrail",random(10,-10),random(10,-10),random(10,-10),0,0,0,0,128,0)
    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("DreadfulLightning",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("SpaceNukeGreen",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	TNT1 A 185
	TNT1 B 55
    stop
  }
}

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

ACTOR SuperDreadfulTrail
{ 
    Scale 0.3
	Alpha 0.98
    Renderstyle Add
    +NOGRAVITY
    +NOINTERACTION
	+FORCEXYBILLBOARD
    States
    {
    Spawn:
	  TNT1 A 0 NoDelay
	  TNT1 A 0 A_SetScale(ScaleX-0.005,ScaleY-0.005)
	  GRNB 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 DreadballOrbiter// : FastProjectile
{
  Health 1
  Speed 10
  PROJECTILE
  +NOINTERACTION
  //MissileType "DreadballOrbiterTrailSpawner"
  States
  {
  Spawn:
	TNT1 A 1
	Loop
  Death:
	TNT1 A 0
	Stop
  }
}

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

ACTOR DreadfulOrbiterTrail
{ 
    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)
	  GRNB A 1 Bright A_FadeOut(0.01)
	  Loop
    }
}

Actor DreadballOrbiter1 : DreadballOrbiter
{
  WeaveIndexXY 0
  WeaveIndexZ 48
  States
  {
  Spawn:
    TNT1 A 1 NoDelay A_Weave(1,1,10,10)
	TNT1 A 0 A_SpawnItemEx("DreadballOrbiterTrailSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
    Loop
  }
}

Actor DreadballOrbiter2 : DreadballOrbiter1
{
  WeaveIndexXY 32
  WeaveIndexZ 16
}

Actor DreadballOrbiter3 : DreadballOrbiter1
{
  WeaveIndexXY 16
  WeaveIndexZ 0
}

Actor DreadballOrbiter4 : DreadballOrbiter1
{
  WeaveIndexXY 48
  WeaveIndexZ 32
}

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

ACTOR DreadfulMiniOrbiterTrail
{ 
    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)
	  GRNB A 1 Bright A_FadeOut(0.02)
	  Loop
    }
}

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

Actor DreadballMiniOrbiter2 : DreadballMiniOrbiter1
{
  WeaveIndexXY 32
  WeaveIndexZ 16
}

Actor DreadballMiniOrbiter3 : DreadballMiniOrbiter1
{
  WeaveIndexXY 16
  WeaveIndexZ 0
}

Actor DreadballMiniOrbiter4 : DreadballMiniOrbiter1
{
  WeaveIndexXY 48
  WeaveIndexZ 32
}