class SquareKeyType : Key
{
	Default
	{
		Inventory.PickupSound "misc/k_pkup";
		Radius 20;
		Height 32;
		+NOTDMATCH;
		+FLOATBOB;
	}
}

class TriangleKey : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTKEYTRIANGLE";
	}
	States
	{
	Spawn:
		TKEY A 10;
		TKEY A 10 Bright;
		Loop;
	}
}

class CircleKey : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTKEYCIRCLE";
	}
	States
	{
	Spawn:
		CKEY A 10;
		CKEY A 10 Bright;
		Loop;
	}
}

class SquareKey : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTKEYSQUARE";
	}
	States
	{
	Spawn:
		SKEY A 10;
		SKEY A 10 Bright;
		Loop;
	}
}

class PyramidKey : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTKEYPYRAMID";
	}
	States
	{
	Spawn:
		TKEY B 10;
		TKEY B 10 Bright;
		Loop;
	}
}

class SphereKey : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTKEYSPHERE";
	}
	States
	{
	Spawn:
		CKEY B 10;
		CKEY B 10 Bright;
		Loop;
	}
}

class CubeKey : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTKEYCUBE";
	}
	States
	{
	Spawn:
		SKEY B 10;
		SKEY B 10 Bright;
		Loop;
	}
}

class HexagonKey : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTKEYHEXAGON";
	}
	States
	{
	Spawn:
		HKEY A 10;
		HKEY A 10 Bright;
		Loop;
	}
}

class RhombusKey : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTKEYRHOMBUS";
	}
	States
	{
	Spawn:
		RKEY A 10;
		RKEY A 10 Bright;
		Loop;
	}
}

class TrapezoidKey : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTKEYTRAPEZOID";
	}
	States
	{
	Spawn:
		ZKEY A 10;
		ZKEY A 10 Bright;
		Loop;
	}
}

class StarRune : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTRUNESTAR";
	}
	States
	{
	Spawn:
		SRUN A 10;
		SRUN A 10 Bright;
		Loop;
	}
}

class CrescentRune : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTRUNECRESCENT";
	}
	States
	{
	Spawn:
		CRUN A 10;
		CRUN A 10 Bright;
		Loop;
	}
}

class DiamondRune : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTRUNEDIAMOND";
	}
	States
	{
	Spawn:
		DRUN A 10;
		DRUN A 10 Bright;
		Loop;
	}
}

class SquareSecurityKeyType : SquareKeyType
{
	Default
	{
		Inventory.PickupSound "password/approved";
	}
}

class FloppyDiskPassword : SquareSecurityKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTDISKPASSWORD";
		Inventory.Icon "STKEYSF1";
	}
	States
	{
	Spawn:
		FLOP A -1;
		Stop;
	}
}

class FloppyDiskSecurityCode : SquareSecurityKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTDISKSECURITY";
		Inventory.Icon "STKEYSF2";
	}
	States
	{
	Spawn:
		FLOP B -1;
		Stop;
	}
}

class FloppyDiskLaunchCode : SquareSecurityKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTDISKLAUNCH";
		Inventory.Icon "STKEYSF3";
	}
	States
	{
	Spawn:
		FLOP C -1;
		Stop;
	}
}

class FactoryDisc : SquareSecurityKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTFACTORYDISC";
		Inventory.Icon "STKEYSCD";
	}
	States
	{
	Spawn:
		DISC A -1;
		Stop;
	}
}

class OctagonKey : SquareKeyType
{
	Default
	{
		Inventory.PickupMessage "$GOTKEYOCTAGON";
		Inventory.PickupSound "misc/pk_pkup";
	}
	States
	{
	Spawn:
		OKEY A 10;
		OKEY B 10 Bright;
		Loop;
	}
}

class FakeKey : SquareKeyType
{
	States
	{
	Spawn:
		TNT1 A 1;
		Stop;
	}
}
