
// Dirt clump (spawned by spike) --------------------------------------------

class DirtClump : Actor
{
	Default
	{
		+NOBLOCKMAP
		+NOTELEPORT
	}
	States
	{
	Spawn:
		TSPK C 20;
		Loop;
	}
}

// Spike (thrust floor) -----------------------------------------------------

class ThrustFloor : Actor native
{
	Default
	{
		Radius 20;
		Height 128;
	}

	native void A_ThrustRaise();
	native void A_ThrustImpale();
	native void A_ThrustLower();
	native void A_ThrustInitDn();
	native void A_ThrustInitUp();

	States
	{
	ThrustRaising:
		TSPK A 2 A_ThrustRaise;
		Loop;
	BloodThrustRaising:
		TSPK B 2 A_ThrustRaise;
		Loop;
	ThrustLower:
		TSPK A 2 A_ThrustLower;
		Loop;
	BloodThrustLower:
		TSPK B 2 A_ThrustLower;
		Loop;
	ThrustInit1:
		TSPK A 3;
		TSPK A 4 A_ThrustInitDn;
		TSPK A -1;
		Loop;
	BloodThrustInit1:
		TSPK B 3;
		TSPK B 4 A_ThrustInitDn;
		TSPK B -1;
		Loop;
	ThrustInit2:
		TSPK A 3;
		TSPK A 4 A_ThrustInitUp;
		TSPK A 10;
		Loop;
	BloodThrustInit2:
		TSPK B 3;
		TSPK B 4 A_ThrustInitUp;
		TSPK B 10;
		Loop;
	ThrustRaise:
		TSPK A 8 A_ThrustRaise;
		TSPK A 6 A_ThrustRaise;
		TSPK A 4 A_ThrustRaise;
		TSPK A 3 A_SetSolid;
		TSPK A 2 A_ThrustImpale;
		Loop;
	BloodThrustRaise:
		TSPK B 8 A_ThrustRaise;
		TSPK B 6 A_ThrustRaise;
		TSPK B 4 A_ThrustRaise;
		TSPK B 3 A_SetSolid;
		TSPK B 2 A_ThrustImpale;
		Loop;
	}
}

// Spike up -----------------------------------------------------------------

class ThrustFloorUp : ThrustFloor
{
	Default
	{
		+SOLID
		+NOTELEPORT +FLOORCLIP
	}
	States
	{
	Spawn:
		Goto ThrustInit2;
	}
}

// Spike down ---------------------------------------------------------------

class ThrustFloorDown : ThrustFloor
{
	Default
	{
		+NOTELEPORT +FLOORCLIP
		+INVISIBLE
	}
	States
	{
	Spawn:
		Goto ThrustInit1;
	}
}
