class SandmanCasing : Actor
{
	Default
	{
		Radius 3;
		Height 5;
		Speed 15;
		Scale 0.3;
		//DamageFunction (1*random(1,2));
		BounceSound "Casing/SandmanShell";
		//Obituary "%o was unfortunate enough to get caught in %k's violent casing rain.";
		Gravity 1.0;
		BounceType 'Doom';
		BounceCount 6;
		BounceFactor 0.6;
		Projectile;
		+ROLLSPRITE
		+ROLLCENTER
		-NOGRAVITY
		+BOUNCEONACTORS
		+BOUNCEONCEILINGS
		+BLOODLESSIMPACT
		+NOTONAUTOMAP
	}
	
	States
	{
	Spawn:
		CAS1 A 0 NoDelay {
			A_SetRoll(Roll - frandom(15.0,45.0), SPF_INTERPOLATE);
		}
		Goto Roflcopter;
	Roflcopter:
		CAS1 A 1 A_SetRoll(Roll - 15.0, SPF_INTERPOLATE);
		Loop;
	Death:
		CAS1 A 0 A_SpawnItemEx("SandmanCasingLiedown",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_TRANSFERROLL);
		stop;
	}
}

class SandmanCasingMirrored : BuellerCasing //T'was left handed!
{
	States
	{
	Spawn:
		CAS1 A 0 NoDelay {
			A_SetRoll(Roll + frandom(15.0,45.0), SPF_INTERPOLATE);
		}
		Goto Roflcopter;
	Roflcopter:
		CAS1 A 1 A_SetRoll(Roll + 15.0, SPF_INTERPOLATE);
		Loop;
	}
}

class SandmanCasingLiedown : Actor
{
	Default
	{
		Scale 0.3;
		-NOGRAVITY
		+NOTONAUTOMAP
		+ROLLSPRITE
		+ROLLCENTER
	}
	
	States
	{
	Spawn:
		CAS1 A 210 A_CheckSight("Fadying");
		Loop;
	Fadying:
		CAS1 A 1 A_FadeOut(0.1);
		Wait;
   }
}

class SandmanCasingSpawner : Actor
{
	Default
	{
		Speed 25;
		Projectile;
		+NOCLIP
		+NOTONAUTOMAP
	}
	
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_JumpIf(GetCvar("GC_ToasterMode"), "Null");
		TNT1 A 0 A_SpawnProjectile("SandmanCasing",0,0,random(-100,-80),CMF_AIMDIRECTION,random(-15,15));
		Stop;
	}
}

class SandmanCasingSpawnerLeft : BuellerCasingSpawner
{
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_JumpIf(GetCvar("GC_ToasterMode"), "Null");
		TNT1 A 0 A_SpawnProjectile("SandmanCasingMirrored",0,0,random(100,80),CMF_AIMDIRECTION,random(-15,15));
		Stop;
	}
}