/*
Proposed names, other than just Space Nuke, include:

Bouncing Fish Gun
Big Fucking Whatever It Is
Ultimate Cheese Grater
Alligatormaster 6
Space Lightshow
Demons Make Good Fertilizer Pro
Lotto Energy Spaghetti
Dyna-Lasertron
Extreme Potato PC Killer
I ate a kebab and this happened
Disco Inferno
Sparkle Lambchop
Hyper Plasma Cheesecake
Tiberian Slaughtercalypse
Entropy in Practice
Ultimate Cheese Alligrator 6
Eyerape Conditioner Plus
Actually Working Antivirus

Keks suggested definitely picking Ultimate Cheese Alligrator 6, pick your own favourite or something.

*/

//Test
ACTOR SNM : Rocket
{
	Speed 100
	States
	{
	Spawn:
	MISL A 50
	Death:
	TNT1 A 0 A_SpawnItemEx("SpaceNuke",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
	Stop
	}
}

//Basis
ACTOR SpaceNukeInheritance
{
	+NOGRAVITY
	+NOINTERACTION
	+FORCEXYBILLBOARD
}

#include "Decorate/Guns/Projectile/Greenspace.txt"

//Particles
ACTOR BlueSpaceNukeParticleTrail : SpaceNukeInheritance
{
	Alpha 0.0
	ReactionTime 25
	Renderstyle Add
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_SetScale(frandom(2.0,2.5))
	TNT1 A 0 A_Jump(255,"Spawn1","Spawn2","Spawn3")
	Goto Spawn
	Spawn1:
	SNSP A 0
	Goto Twerp
	Spawn2:
	SNSP B 0
	Goto Twerp
	Spawn3:
	SNSP C 0
	Goto Twerp
	Twerp:
	"####" "#" 0 A_FadeIn(0.9)
	goto Main
	Main:
	"####" "#" 0 A_SetScale(ScaleX-0.015,ScaleX)
	"####" "#" 1 Bright A_Countdown
	Loop
	Death:
	"####" "#" 0 A_JumpIf(ScaleX <= 0,"Null")
	"####" "#" 0 A_FadeOut(0.02)
	"####" "#" 1 Bright A_SetScale(ScaleX-0.015,ScaleX)
	Loop
	}
}

ACTOR BlueSpaceNukeParticleStand : BlueSpaceNukeParticleTrail
{
	ReactionTime 250
	Alpha 0.3
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_SetScale(frandom(1.0,1.5))
	TNT1 A 0 A_Jump(255,"Spawn1","Spawn2","Spawn3")
	Goto Spawn
	Spawn1:
	SNSP A 0
	Goto Twerp
	Spawn2:
	SNSP B 0
	Goto Twerp
	Spawn3:
	SNSP C 0
	Goto Twerp
	Twerp:
	"####" "#" 0 A_FadeIn(0.9)
	goto Main
	Main:
	"####" "#" 1 Bright A_Countdown
	Loop
	}
}

ACTOR BlueSpaceNukeParticleBlast : BlueSpaceNukeParticleStand
{
	DamageType BlueTiberium
	ReactionTime 250
	Alpha 0.6
	+FORCERADIUSDMG
	+BLOODLESSIMPACT
	+NOCLIP
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_SetScale(frandom(1.0,1.5))
	TNT1 A 0 A_Jump(255,"Spawn1","Spawn2","Spawn3")
	Goto Spawn
	Spawn1:
	SNSP A 0
	Goto Twerp
	Spawn2:
	SNSP B 0
	Goto Twerp
	Spawn3:
	SNSP C 0
	Goto Twerp
	Twerp:
	"####" "#" 0 A_FadeIn(0.9)
	goto Main
	Main:
	"####" "#" 0 A_Explode(400,1024,0)
	"####" "#" 1 Bright A_Countdown
	Loop
	}
}

ACTOR BlueSpaceNukeParticleBlastShort : BlueSpaceNukeParticleTrail
{
	Alpha 0.3
	+FORCERADIUSDMG
	+BLOODLESSIMPACT
	+NOCLIP
	DamageType BlueTiberium
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_SetScale(frandom(0.5,1.0))
	TNT1 A 0 A_Jump(255,"Spawn1","Spawn2","Spawn3")
	Goto Spawn
	Spawn1:
	SNSP A 0
	Goto Twerp
	Spawn2:
	SNSP B 0
	Goto Twerp
	Spawn3:
	SNSP C 0
	Goto Twerp
	Twerp:
	"####" "#" 0 A_FadeIn(0.9)
	goto Main
	Main:
	"####" "#" 0 A_Explode(40,256,0)
	"####" "#" 0 A_JumpIf(ScaleX <= 0,"Null")
	"####" "#" 0 A_FadeOut(0.05)
	"####" "#" 1 Bright A_SetScale(ScaleX-0.015,ScaleX)
	Loop
	}
}


ACTOR BlueSpaceNukeParticleHuge : SpaceNukeInheritance
{
	Alpha 0.1
	ReactionTime 155
	Renderstyle Add
	States
	{
	Spawn:
	TNT1 A 40 NoDelay A_SetScale(15)
	SNSP F 0
	Goto Twerp
	Twerp:
	"####" "####################" 1 A_FadeIn(0.035)
	goto Main
	Main:
	"####" "#" 1 Bright A_Countdown
	Loop
	Death:
	"####" "#" 0 A_FadeOut(0.0025)
	"####" "#" 1 Bright A_SetScale(ScaleX-0.05,ScaleY-0.05)
	Loop
	}
}

ACTOR BlueSpaceNukeParticleHugeSphere : SpaceNukeInheritance
{
	Alpha 0.09
	ReactionTime 25
	Renderstyle Add
	States
	{
	Spawn:
	TNT1 A 20 NoDelay A_SetScale(30)
	SNSP F 0
	Goto Twerp
	Twerp:
	"####" "###################" 1 A_FadeIn(0.05)
	goto Main
	Main:
	"####" "#" 1 Bright A_Countdown
	Loop
	Death:
	"####" "#" 0 A_FadeOut(0.01)
	"####" "#" 1 Bright A_SetScale(ScaleX+0.25,ScaleY+0.25)
	Loop
	}
}


ACTOR BlueSpaceNukeParticle1
{
	Radius 6
	Height 5
	Projectile
	-NOGRAVITY
	Gravity 0.1
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_SpawnItemEx("BlueSpaceNukeParticleTrail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 0 A_PlaySound("BlueSpaceMissile/Fly",5,1.0,1)
	TNT1 A 1 A_Jump(26,"WeNeedToGoDeeper")
	Loop
	Death:
	Stop
	WeNeedToGoDeeper:
	TNT1 A 0 A_Jump(13,"Stoplo")
	Goto Spawn
	Stoplo:
	TNT1 A 0 A_Stop
	"####" "#" 0 A_StopSound(5)
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeParticleStand",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	Stop
	Death:
	"####" "#" 0 A_StopSound(5)
	"####" "#" 0 A_SpawnItemEx("BlueSpaceMissileImpact",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Stop
	}
}

ACTOR BlueSpaceNukeParticle2 //Flies further
{
	Radius 6
	Height 5
	Projectile
	+NOGRAVITY
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_SpawnItemEx("BlueSpaceNukeParticleTrail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 0 A_PlaySound("BlueSpaceMissile/Fly",5,1.0,1)
	TNT1 A 1 A_Jump(20,"WeNeedToGoDeeper")
	Loop
	Death:
	Stop
	WeNeedToGoDeeper:
	TNT1 A 0 A_Jump(10,"Stoplo")
	Goto Spawn
	Stoplo:
	TNT1 A 0 A_Stop
	"####" "#" 0 A_StopSound(5)
	"####" "#" 0 A_SpawnItemEx("BlueSpaceNukeParticleStand",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	Stop
	Death:
	"####" "#" 0 A_StopSound(5)
	"####" "#" 0 A_SpawnItemEx("BlueSpaceMissileImpact",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Stop
	}
}

ACTOR BlueSpaceNukeParticle3 : FastProjectile //Flies indefinitely
{
	Radius 6
	Height 5
	Projectile
	+NOGRAVITY
	Scale 0
	Alpha 0.99
	Renderstyle Add
	MissileType BlueSpaceNukeParticleTrail
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_SetScale(frandom(2.0,2.5))
	TNT1 A 0 A_PlaySound("BlueSpaceMissile/Fly",5,1.0,1)
	TNT1 A 0 A_Jump(255,"Spawn1","Spawn2","Spawn3")
	Goto Spawn
	Spawn1:
	SNSP A 0
	Goto Twerp
	Spawn2:
	SNSP B 0
	Goto Twerp
	Spawn3:
	SNSP C 0
	Goto Twerp
	Twerp:
	"####" "#" 1 //A_SpawnItemEx("BlueSpaceNukeParticleTrail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	Loop
	Death:
	"####" "#" 0 A_StopSound(5)
	"####" "#" 0 A_SpawnItemEx("BlueSpaceMissileImpact",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Stop
	}
}

ACTOR BlueSpaceNukeParticleGuided3 : FastProjectile //Flies indefinitely
{
	Radius 6
	Height 5
	Projectile
	+NOGRAVITY
	+SEEKERMISSILE
	Scale 0
	Alpha 0.99
	Renderstyle Add
	MissileType BlueSpaceNukeParticleTrail
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_SetScale(frandom(2.0,2.5))
	TNT1 A 0 A_PlaySound("BlueSpaceMissile/Fly",5,1.0,1)
	TNT1 A 0 A_Jump(255,"Spawn1","Spawn2","Spawn3")
	Goto Spawn
	Spawn1:
	SNSP A 0
	Goto Twerp
	Spawn2:
	SNSP B 0
	Goto Twerp
	Spawn3:
	SNSP C 0
	Goto Twerp
	Twerp:
	"####" "#" 1 A_SeekerMissile(40,40,SMF_LOOK|SMF_PRECISE|SMF_CURSPEED,255,40) //A_SpawnItemEx("BlueSpaceNukeParticleTrail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	Loop
	Death:
	"####" "#" 0 A_StopSound(5)
	"####" "#" 0 A_SpawnItemEx("BlueSpaceMissileImpact2",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Stop
	}
}

Actor BlueSpaceNukeReversalParticle
{
	Scale 0.4
	Alpha 0.0
	RenderStyle Add
	DamageType BlueTiberium
	ReactionTime 165
	+NOINTERACTION
	+NOGRAVITY
	+NOBLOCKMAP
	+FORCERADIUSDMG
	+BLOODLESSIMPACT
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 5
			TNT1 A 1 A_ScaleVelocity(-0.035)
			TNT1 A 0 A_PlaySound("BlueSpaceMissile/Fly",5,1.0,1)
		Looplet:
			TNT1 A 1 A_SpawnItemEx("BlueSpaceNukeParticleTrail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
			TNT1 A 0 A_Explode(30,684,0)
			TNT1 A 0 A_Countdown
			Loop
		Death:
			TNT1 A 0 A_StopSound(5)
			Stop
	}
}

ACTOR BlueSpaceNukeParticle4 : SpaceNukeInheritance //Single particles
{
	ReactionTime 35
	Renderstyle Add
	Projectile
	var int user_margaryna;
	States
	{
	Spawn:
	TNT1 AA 0 A_SetScale(2.0,2.5)
	TNT1 A 0 A_Jump(255,"Spawn1","Spawn2","Spawn3")
	Goto Spawn
	Spawn1:
	SNSP A 0
	Goto Twerp
	Spawn2:
	SNSP B 0
	Goto Twerp
	Spawn3:
	SNSP C 0
	Goto Twerp
	Twerp:
	"####" "#" 0 A_FadeIn(Random(0.8,0.9))
	goto Main
	Main:
	"####" "#" 0 A_JumpIf(user_margaryna==70,"Maslo")
	"####" "#" 1 Bright A_SetUserVar("user_margaryna",user_margaryna+1)
	Loop
	Maslo:
	"####" "#" 0 A_FadeOut(0.025)
	"####" "#" 1 Bright A_SetScale(ScaleX-0.015,ScaleY-0.015)
	Loop
	}
}

ACTOR BlueSpaceNukeParticle5 : SpaceNukeInheritance //Single particles, fading in and whack flight
{
	Alpha 0.0
	ReactionTime 60
	Renderstyle Add
	Projectile
	var int user_margaryna;
	States
	{
	Spawn:
	TNT1 AA 0 A_SetScale(2.0,2.5)
	TNT1 A 0 A_SetUserVar("user_margaryna",0)
	TNT1 A 0 A_Jump(255,"Spawn1","Spawn2","Spawn3")
	Goto Spawn
	Spawn1:
	SNSP A 0
	Goto Twerp
	Spawn2:
	SNSP B 0
	Goto Twerp
	Spawn3:
	SNSP C 0
	Goto Twerp
	Twerp:
	"####" "#" 0 A_FadeIn(Random(0.05,0.075))
	"####" "#" 1 A_JumpIf(Alpha>=0.9,"Main")
	Loop
	Main:
	"####" "#" 0 A_JumpIf(user_margaryna==70,"Maslo")
	"####" "#" 0 A_ChangeVelocity (frandom(-2.4, 2.4), frandom(-2.4, 2.4), frandom(-2.4, 2.4), 0)
	"####" "#" 1 Bright A_SetUserVar("user_margaryna",user_margaryna+1)
	Loop
	Maslo:
	"####" "#" 0 A_FadeOut(0.05)
	"####" "#" 1 Bright A_SetScale(ScaleX-0.015,ScaleY-0.015)
	Loop
	}
}

//Blasts
ACTOR BlueSpaceNukeBlast1
{
  +NOGRAVITY
  +NOINTERACTION
  Renderstyle Add
  Alpha 0.6
  Scale 0.5
  States
  {
  Spawn:
  TNT1 A 0
  Looplet:
  TNT1 A 0 A_SetScale(ScaleX +0.28, ScaleY +0.28)
  TNT1 A 0 A_FadeOut(0.004)
  SNSI E 1 Bright
  Loop
  }
}

ACTOR BlueSpaceNukeBlast2 : BlueSpaceNukeBlast1
{
  Scale 0.6
  States
  {
  Spawn:
  TNT1 A 1
  Looplet:
  TNT1 A 0 A_SetScale(ScaleX +0.38, ScaleY +0.38)
  TNT1 A 0 A_FadeOut(0.004)
  SNSI D 1 Bright
  Loop
  }
}

ACTOR BlueSpaceNukeBlast3 : BlueSpaceNukeBlast1
{
  Scale 0.7
  States
  {
  Spawn:
  TNT1 A 2
  Looplet:
  TNT1 A 0 A_SetScale(ScaleX +0.48, ScaleY +0.48)
  TNT1 A 0 A_FadeOut(0.004)
  SNSI C 1 Bright
  Loop
  }
}

ACTOR BlueSpaceNukeBlast4 : BlueSpaceNukeBlast1
{
  Scale 0.8
  States
  {
  Spawn:
  TNT1 A 3
  Looplet:
  TNT1 A 0 A_SetScale(ScaleX +0.64, ScaleY +0.64)
  TNT1 A 0 A_FadeOut(0.004)
  SNSI B 1 Bright
  Loop
  }
}

ACTOR BlueSpaceNukeBlast5 : BlueSpaceNukeBlast1
{
  Scale 0.9
  States
  {
  Spawn:
  TNT1 A 3
  Looplet:
  TNT1 A 0 A_SetScale(ScaleX +0.84, ScaleY +0.84)
  TNT1 A 0 A_FadeOut(0.004)
  SNSI A 1 Bright
  Loop
  }
}

ACTOR BlueSpaceNukeInitBlast1 : BlueSpaceNukeBlast1
{
  Scale 0.5
  States
  {
  Spawn:
  TNT1 A 0
  Looplet:
  TNT1 A 0 A_SetScale(ScaleX +0.1, ScaleY +0.1)
  TNT1 A 0 A_FadeOut(0.005)
  SNSI E 1 Bright
  Loop
  }
}

ACTOR BlueSpaceNukeInitBlast2 : BlueSpaceNukeBlast1
{
  Scale 0.6
  States
  {
  Spawn:
  TNT1 A 1
  Looplet:
  TNT1 A 0 A_SetScale(ScaleX +0.125, ScaleY +0.125)
  TNT1 A 0 A_FadeOut(0.005)
  SNSI D 1 Bright
  Loop
  }
}

ACTOR BlueSpaceNukeInitBlast3 : BlueSpaceNukeBlast1
{
  Scale 0.7
  States
  {
  Spawn:
  TNT1 A 2
  Looplet:
  TNT1 A 0 A_SetScale(ScaleX +0.15, ScaleY +0.15)
  TNT1 A 0 A_FadeOut(0.005)
  SNSI C 1 Bright
  Loop
  }
}

ACTOR BlueSpaceNukeInitBlast4 : BlueSpaceNukeBlast1
{
  Scale 0.8
  States
  {
  Spawn:
  TNT1 A 3
  Looplet:
  TNT1 A 0 A_SetScale(ScaleX +0.175, ScaleY +0.175)
  TNT1 A 0 A_FadeOut(0.005)
  SNSI B 1 Bright
  Loop
  }
}

ACTOR BlueSpaceNukeInitBlast5 : BlueSpaceNukeBlast1
{
  Scale 0.9
  States
  {
  Spawn:
  TNT1 A 3
  Looplet:
  TNT1 A 0 A_SetScale(ScaleX +0.2, ScaleY +0.2)
  TNT1 A 0 A_FadeOut(0.005)
  SNSI A 1 Bright
  Loop
  }
}

//Lightnings
ACTOR BlueSpaceNukeLightning : SpaceNukeInheritance
{
	Renderstyle Add
	Scale 1.5
	Alpha 0.99
	States
	{
	Spawn:
	TNT1 A 0 A_Jump(255,"Spawn1A","Spawn1B","Spawn1C","Spawn1D","Spawn2A","Spawn2B","Spawn2C","Spawn2D")
	Goto Spawn
	Spawn1A:
	3LIT A 0
	Goto Twerp
	Spawn1B:
	3LIT B 0
	Goto Twerp
	Spawn1C:
	3LIT C 0
	Goto Twerp
	Spawn1D:
	3LIT D 0
	Goto Twerp
	Spawn2A:
	4LIT A 0
	Goto Twerp
	Spawn2B:
	4LIT B 0
	Goto Twerp
	Spawn2C:
	4LIT A 0
	Goto Twerp
	Spawn2D:
	4LIT D 0
	Goto Twerp
	Twerp:
	"####" "#" 0 A_FadeOut(0.05)
	"####" "#" 1 A_SetScale(ScaleX+0.05,ScaleX)
	Loop
	}
}


//Main actor
ACTOR SpaceNuke : SpaceNukeInheritance
{
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_PlaySound("SpaceNuke/Init",6,1.0,0,ATTN_NONE)
	TNT1 A 0 A_AlertMonsters
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeAura",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeInitBlast",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeParticleHuge",0,0,0,0,0,0,0,SXF_CLIENTSIDE) //Huge particle in center
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeLightningStorm1",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeParticleStorm",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)  //Particles Outward
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeParticleStormReverse",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS) //Particles Inward
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeParticleStorm2",0,0,0,0,0,0,0,SXF_CLIENTSIDE) //Single Particle with large alpha
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeParticleStorm3",0,0,0,0,0,0,0,SXF_CLIENTSIDE) //Single Particle with large alpha, but constant spawn
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeSphere",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeWaver",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Stop
	}
}

ACTOR BlueSpaceNukeAura : SpaceNukeInheritance
{
	Renderstyle Add
	Alpha 0.99
	ReactionTime 35
	States
	{
	Spawn:
	SNSP E 0
	SNSP E 0 A_JumpIf(ScaleX>=95,"FullOn")
	SNSP E 1 Bright A_SetScale(ScaleX+0.5,ScaleX)
	Loop
	FullOn:
	SNSP E 1 Bright A_Countdown
	Loop
	Death:
	SNSP E 1 Bright A_SetScale(ScaleX-0.5,ScaleX)
	SNSP E 0 A_JumpIf(ScaleX<=0.5,"TehEnd")
	Loop
	TehEnd:
	SNSP A 0
	Stop
	}
}

ACTOR BlueSpaceNukeInitBlast : SpaceNukeInheritance
{
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeInitBlast1",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeInitBlast2",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeInitBlast3",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeInitBlast4",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeInitBlast5",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	Stop
	}
}

ACTOR BlueSpaceNukeBlast : SpaceNukeInheritance
{
	States
	{
	Spawn:
	TNT1 A 35
	//TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeBlast1",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	//TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeBlast2",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	//TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeBlast3",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeBlast4",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeBlast5",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	Stop
	}
}

ACTOR BlueSpaceNukeLightningStorm1 : SpaceNukeInheritance
{
	ReactionTime 65
	States
	{
	Spawn:
	TNT1 AAA 0 A_SpawnItemEx("BlueSpaceNukeLightning",random(260,-260),random(260,-260),random(260,-260),frandom(0.5,2.0),frandom(0.5,2.0),frandom(frandom(0.5,2.0),frandom(-0.5,-2.0)),frandom(0.0,360.0),SXF_CLIENTSIDE)
	TNT1 A 1 A_Countdown
	Loop
	Death:
	Stop
	}
}

ACTOR BlueSpaceNukeLightningStorm2 : SpaceNukeInheritance
{
	ReactionTime 115
	States
	{
	Spawn:
	TNT1 AAA 0 A_SpawnItemEx("BlueSpaceNukeLightning",random(560,-560),random(560,-560),random(560,-560),frandom(0.5,2.0),frandom(0.5,2.0),frandom(frandom(0.5,2.0),frandom(-0.5,-2.0)),frandom(0.0,360.0),SXF_CLIENTSIDE)
	TNT1 A 1 A_Countdown
	Loop
	Death:
	Stop
	}
}

ACTOR BlueSpaceNukeParticleStorm : SpaceNukeInheritance //Particles with trail
{
	ReactionTime 75
	States
	{
	Spawn:
	TNT1 A 0
	Looplolololo:
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeParticle1",random(80,-80),random(80,-80),random(80,-80),frandom(3.5,20.0),frandom(3.5,20.0),frandom(frandom(-20.0,-3.5),frandom(20.0,3.5)),frandom(0.0,360.0),SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeParticle2",random(80,-80),random(80,-80),random(80,-80),frandom(3.5,20.0),frandom(3.5,20.0),frandom(frandom(-20.0,-3.5),frandom(20.0,3.5)),frandom(0.0,360.0),SXF_TRANSFERPOINTERS)
	Loop
	TehEnd:
	Stop //STAHP
	}
}

ACTOR BlueSpaceNukeParticleStorm2 : SpaceNukeInheritance //Single particles blast
{
	ReactionTime 50
	States
	{
	Spawn:
	TNT1 A 0
	Looplolololo:
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeParticle4",random(80,-80),random(80,-80),random(80,-80),frandom(9.5,18.0),frandom(9.5,18.0),frandom(frandom(-18.0,-9.5),frandom(18.0,9.5)),frandom(0.0,360.0),SXF_NOCHECKPOSITION)
	Loop
	TehEnd:
	Stop //STAHP
	}
}

ACTOR BlueSpaceNukeParticleStorm3 : SpaceNukeInheritance //Single particles constant spawn
{
	ReactionTime 205
	States
	{
	Spawn:
	TNT1 A 20
	Looplolololo:
	TNT1 A 0 A_Countdown
	TNT1 A 1 A_SpawnItemEx("BlueSpaceNukeParticle5",random(160,-160),random(160,-160),random(160,-160),frandom(12.5,18.0),frandom(12.5,18.0),frandom(frandom(-18.0,-12.5),frandom(18.0,12.5)),frandom(0.0,360.0),SXF_NOCHECKPOSITION)
	Loop
	TehEnd:
	Stop //STAHP
	}
}

ACTOR BlueSpaceNukeParticleStorm4 : SpaceNukeInheritance //Particles on end blast
{
	ReactionTime 85
	States
	{
	Spawn:
	TNT1 A 15
	Looplolololo:
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeParticle1",random(160,-160),random(160,-160),random(160,-160),frandom(3.5,18.0),frandom(3.5,18.0),frandom(frandom(-18.0,-3.5),frandom(18.0,3.5)),frandom(0.0,360.0),SXF_TRANSFERPOINTERS)
	Loop
	TehEnd:
	Stop //STAHP
	}
}

ACTOR BlueSpaceNukeParticleStorm5 : BlueSpaceNukeParticleStorm3 //Single particles constant spawn, shorter
{
	ReactionTime 50
}


ACTOR BlueSpaceNukeParticleStormReverse : SpaceNukeInheritance
{
	ReactionTime 70
	States
	{
	Spawn:
	TNT1 A 240
	Looplolololo:
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("BlueSpaceNukeReversalParticle", 0, 0, 0, FRandom(250.0, 225.0),FRandom(250.0, 225.0), FRandom(FRandom(250.0,225.0),Frandom(-250.0,-225.0)), FRandom(0.0,360.0), SXF_TRANSFERPOINTERS)
	Loop
	TehEnd:
	Stop //STAHP
	}
}

ACTOR BlueSpaceNukeWaver : SpaceNukeInheritance
{
	ReactionTime 16
	States
	{
	Spawn:
	TNT1 A 35
	Looplet:
	TNT1 A 0 A_PlaySound("SpaceNuke/Active",5,0.8,0)
	TNT1 AAAAAAAAAAAAA 0 A_SpawnItemEx("BlueSpaceNukeParticleGuided3",random(10,-10),random(10,-10),random(10,-10),frandom(190.0,215.0),frandom(190.0,215.0),frandom(frandom(-190.0,-215.0),frandom(190.0,215.0)),frandom(0.0,360.0),SXF_TRANSFERPOINTERS,32)
	TNT1 A 28 A_Countdown
	Loop
	}
}

//Phase two

Actor BlueSpaceNukeSphere
{
	Scale 0.2
	Alpha 0.0
	RenderStyle Add
	DamageType BlueTiberium
	Projectile
	+NOINTERACTION
	+NOGRAVITY
	+FORCERADIUSDMG
	+BLOODLESSIMPACT
	var int user_sasquatch;
	ReactionTime 35
	States
	{
	Spawn:
	TNT1 A 405 A_SetUserVar("user_sasquatch",0)
	PRNB A 0 A_SpawnItemEx("BlueSpaceNukeLightningStorm2")
	PRNB A 0 A_SpawnItemEx("BlueSpaceNukeParticleHugeSphere")
	Trolololo:
	"####" "#" 0 A_JumpIf(user_sasquatch==100,"Kapusta")
	"####" "#" 0 A_SetUserVar("user_sasquatch",user_sasquatch+1)
	"####" "#" 0 A_FadeIn(0.01)
	"####" "#" 0 A_Explode(50,512*ScaleX,0)
	"####" "#" 1 Bright A_SetScale(ScaleX+0.05,ScaleX)
	Loop
	Kapusta:
	"####" "#" 0 A_Explode(50,512*ScaleX,0)
	"####" "#" 1 Bright A_Countdown
	Loop
	Death:
	"####" "#" 0 A_AlertMonsters
	"####" "#" 0 A_SpawnItemEx("BlueSpaceNukeLightningStorm2",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	"####" "#" 0 A_SpawnItemEx("BlueSpaceNukeParticleStorm2",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	"####" "#" 0 A_SpawnItemEx("BlueSpaceNukeParticleStorm5",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	"####" "#" 0 A_SpawnItemEx("BlueSpaceNukeParticleStorm4",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	"####" "#" 0 A_SpawnItemEx("BlueSpaceNukeBlast",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	"####" "#" 0 A_SpawnItemEx("BlueSpaceNukeWaveGenerator",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	"####" "#" 0 A_SpawnItemEx("BlueSpaceNukeSoundBlaster",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	"####" "#" 0 A_SpawnItemEx("BlueSpaceNukeStarburst",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	//"####" "#" 0 A_SpawnItemEx("BlueSpaceNukeSuperExplosion",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Bigos:
	"####" "#" 0 A_Fadeout(0.02)
	"####" "#" 1 Bright A_SetScale(ScaleX-0.1,ScaleX)
	Loop
	}
}

ACTOR BlueSpaceNukeWaveGenerator : SpaceNukeInheritance
{
	+NOCLIP
	States
	{
	Spawn:
	TNT1 A 25
	TNT1 AAAAAAAA random(1,2) ACS_NamedExecute("SpaceNukeWave", 0, random(0, 65535), random(4096, 12288), 0)
	Stop
	}
}

ACTOR BlueSpaceMissileImpact : SpaceNukeInheritance
{
	DamageType BlueTiberium
	+FORCERADIUSDMG
	+BLOODLESSIMPACT
	+NOCLIP
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_Explode((3000),512,0)
	Rest:
	TNT1 A 0 A_SpawnItemEx("BlueSpaceMissileImpactLeftover",0,0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 0 A_PlaySound("SpaceMissile/Blast",5,1.0,0)
	TNT1 A 0 A_AlertMonsters
	TNT1 A 0 A_SpawnItemEx("BlueSpaceMissileRing",0,0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 AAA 0 A_SpawnItemEx("BlueSpaceMissileLightningSpawner",0,0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 AAAA random(1,2) ACS_NamedExecute("SpaceNukeWave", 0, random(0, 65535), random(4096, 12288), 1)
	TNT1 A 20
	Stop
	}
}

ACTOR BlueSpaceMissileImpact2 : BlueSpaceMissileImpact
{
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_Explode((600),384,0)
	TNT1 A 0 A_Jump(256,"Rest")
	Stop
	}
}

ACTOR BlueSpaceMissileRing : SpaceNukeInheritance
{
	Renderstyle Add
	Alpha 0.99
	Scale 0.5
	States
	{
	Spawn:
	SNSW A 0 NoDelay A_SetScale(ScaleX + frandom(0.5,0.9), ScaleX)
	SNSW A 1 Bright A_FadeOut(frandom(0.1,0.05))
	Loop
	}
}

ACTOR BlueSpaceMissileImpactLeftover : SpaceNukeInheritance
{
	Alpha 0.09
	Renderstyle Add
	Scale 10
	States
	{
	Spawn:
	SNSP F 0 A_FadeIn(frandom(0.05,0.1))
	"####" "#" 0 A_JumpIf(Alpha >= 0.9,"Main")
	"####" "#" 1 Bright A_SetScale(ScaleX+0.1,ScaleX)
	Loop
	Main:
	"####" "#" 0 A_JumpIf(ScaleX <= 0, "Null")
	"####" "#" 0 A_FadeOut(frandom(0.05,0.02))
	"####" "#" 1 Bright A_SetScale(ScaleX-0.25,ScaleX)
	Loop
	}
}

ACTOR BlueSpaceMissileLightningSpawner : SpaceNukeInheritance
{
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 AAAAAAAA random(1,7) A_SpawnItemEx("BlueSpaceNukeLightning",random(50,-50),random(50,-50),random(50,-50),frandom(0.5,2.0),frandom(0.5,2.0),frandom(frandom(0.5,2.0),frandom(-0.5,-2.0)),frandom(0.0,360.0),SXF_CLIENTSIDE)
	Stop
	}
}

ACTOR BlueSpaceNukeSoundBlaster : SpaceNukeInheritance
{
	States
	{
	Spawn:
	"####" "#" 25
	"####" "#" 0 A_PlaySound("SpaceNuke/BigBang",5,0.8,0,ATTN_NONE)
	Stop
	}
}

ACTOR BlueSpaceNukeStarburst : SpaceNukeInheritance
{
	ReactionTime 20
	States
	{
	Spawn:
	TNT1 A 25
	Looplolololo:
	TNT1 A 0 A_Countdown
	TNT1 AAAAAA 0 A_SpawnItemEx("BlueSpaceNukeParticle3",random(40,-40),random(40,-40),random(40,-40),frandom(190.0,215.0),frandom(190.0,215.0),frandom(frandom(-190.0,-215.0),frandom(190.0,215.0)),frandom(0.0,360.0),SXF_TRANSFERPOINTERS,32)
	TNT1 A random(2,5)
	Loop
	Death:
	Stop
	}
}

ACTOR BlueSpaceNukeSuperExplosion : SpaceNukeInheritance
{
	DamageType BlueTiberium
	var int User_Expand;
	ReactionTime 105
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_Explode(500,1024+(512*User_Expand),0)
	TNT1 A 0 A_SetUserVar("User_Expand", User_Expand + 1)
	TNT1 A 1 A_Countdown
	Loop
	Death:
	Stop
	}
}