
	
class Ceiling_Lamp: Actor
	{
		default
		{
			radius 8;
			height 16;
			Activation THINGSPEC_Switch;
			+USESPECIAL
			+NOGRAVITY
			+SPAWNCEILING
		}
		override void Activate(Actor Activator)
		{
			SetStateLabel("Active");
		}
		override void Deactivate(Actor Activator)
		{
			SetStateLabel("Spawn");
		}
		States
			{
				Spawn:
					CLOF A -1;
					Stop;
				Active:
					CLON A -1;
					Stop;
			}
	}
	
class Magma_ball: Inventory
	{
		default
		{
			+INVENTORY.INVBAR
			radius 8;
			height 17;
			Inventory.PickupMessage "\ciPicked up a magma ball.";
		}
		States
			{
				Spawn:
					MGBL A 14;
					MGBL B 14;
					Loop;
			}
	}
	
class Antimatter: PedestalItem
	{
		default
		{
			+INVENTORY.INVBAR
			PedestalItem.LineId 48;
			radius 8;
			height 16;
			Inventory.PickupMessage "\ciA piece of antimatter. Pedestal item.";
		}
		States
			{
				Spawn:
					ANTI A -1;
					Stop;
			}
	}
	
class Actionfigur: PedestalItem
{
	default
	{
		+INVENTORY.INVBAR
			PedestalItem.LineId 54;
			radius 16;
			height 16;
			Inventory.PickupMessage  "\cyThe Action figurine. Pedestal Item.";
	}
	States
		{
			Spawn:
				ACTN A -1;
				Stop;
		}
}

class Palmsapling: PedestalItem
{
	default
	{
		+INVENTORY.INVBAR
		PedestalItem.LineId 53;
		radius 16;
		height 17;
		Inventory.PickupMessage "\cdA small palmtree-sapling. Pedestal Item.";
	}
	States
	{
		Spawn:
			PALM A -1;
			Stop;
	}
}

class Fuse: Inventory
	{
		default
		{
			+INVENTORY.INVBAR
			Inventory.PickupMessage "\cdA fuse. FInd another socket.";
		}
		States
		{
			Spawn:
				FUSE A -1;
				Stop;
		}
	}
	
class Money: Inventory
	{
		default
		{
			+INVENTORY.INVBAR
			radius 16;
			height 10;
			Inventory.PickupMessage "\cdYou just found 200$. Find a store.";
		}
		States
		{
			Spawn:
				200D A -1;
				Stop;
		}
	}

Class Pedestal : Actor{
	Class<PedestalItem> curitem;
	Default{
		Radius 16;
		Height 32;
		+SOLID;
	}
	Override bool Used(Actor user){
		If(curitem)
		{
			ACS_NamedExecute("PedestalSwitch",0,0);
			user.GiveInventory(curitem,1);
			curitem = null;
			sprite = default.spawnstate.sprite;
			Return true;
		}
		user.A_Print("The pedestal is empty");
		Return false;
	}
	States{
	Spawn:
		TNT1 A -1;
		Stop;
	}
}

Class PedestalItem : Inventory{
	int lineid; property LineId : lineid;
	Default{
		+INVENTORY.INVBAR;
	}
	Override bool Use(bool pickup){
		For(let i = BlockThingsIterator.Create(owner,96); i.Next();){
			If(!(i.thing is "Pedestal")||owner.Distance3D(i.thing)>96||!i.thing.CheckSight(owner)){Continue;}
			let pedestal = Pedestal(i.thing);
			If(pedestal.curitem){owner.A_Print("The pedestal is occupied"); Return false;}
			pedestal.target = owner;
			If(pedestal.CheckIfInTargetLOS(45)){
				ACS_NamedExecute("PedestalSwitch",0,lineid);
				pedestal.sprite = self.default.spawnstate.sprite;
				pedestal.curitem = self.GetClass();
				Return true;
			}
		}
		owner.A_Print("Can't use that here");
		Return false;
	}
}

Class Antique_Figurine : PedestalItem
{
	Default
	{
		PedestalItem.LineId 26;
		+INVENTORY.INVBAR
	}
	States
	{
	Spawn:
		FGUR A 14;
		FGUR B 14;
		Loop;
	}
}

Class Baum1: Actor
{
	default
	{
		height 192;
		radius 16;
		+SOLID
	}
	States
	{
	Spawn:
		BAUM A -1;
		Stop;
	}
}

Class Busch1: Actor
{
	default
	{
		height 64;
		radius 32;
		+SOLID
	}
	States
	{
	Spawn:
		BUSH A -1;
		Stop;
	}
}

Class Baum2: Actor
{
	default
	{
		height 192;
		radius 16;
		+SOLID
	}
	States
	{
	Spawn:
		BAUM B -1;
		Stop;
	}
}

Class Busch2: Actor
{
	default
	{
		height 64;
		radius 16;
		+SOLID
	}
	States
	{
	Spawn:
		BUSH B -1;
		Stop;
	}
}


Class Professor: Actor
{
	default
	{
		height 64;
		radius 16;
		scale 0.9;
		+SOLID
		+NEVERTARGET
		-COUNTKILL
		+INVULNERABLE
		-ISMONSTER
	}
	States
	{
		Spawn:
			PROF A 105;
			Prof CB 4;
			Loop;
	}
}
class Bed: Actor
{
	default
	{
		Height 16;
		radius 64;
		+NEVERTARGET
		-COUNTKILL
		+INVULNERABLE
		-ISMONSTER
	}
	States
	{
		TNT1 A -1;
		Stop;
	}
}

class Mirrorbreaker : Inventory
{
	default
	{
		scale 0.5;
		height 16;
		radius 16;
		+INVENTORY.INVBAR
		Inventory.PickupMessage "\ckThe Mirrorbreaker. That glass is not an obstacle anymore.";
	}
	States
	{
		Spawn:
			MRBR AB 8;
			MRBR C 16;
			Loop;
	}
}

class Double_Jump : Inventory
{
	default
	{
		height 32;
		radius 22;
		Inventory.PickupMessage "\ckDouble jump. You can jump twice!";
	}
	States
	{
		Spawn:
			2JMP A -1;
			Stop;
	}
}

class Moxie : Actor
{
	default
	{
		height 57;
		radius 20;
		+SOLID
		+NEVERTARGET
		-COUNTKILL
		+INVULNERABLE
		-ISMONSTER
	}
	States
	{
		Spawn:
			MOXI AB 18;
			Loop;
	}
}

class Powerbracelet : Inventory
{
	default
	{
		height 32;
		radius 22;
		scale 0.5;
		Inventory.PickupMessage "\ckYou got the Power-bracelet. You can push big blocks now.";
	}
	States
	{
		Spawn:
			PWRB A -1;
			Stop;
	}
}

class Muenze : inventory
{
	default
	{
		height 16;
		radius 16;
		Inventory.PickupMessage "\ckAn old coin. It is very old. It makes me sleepy.";
	}
	States
	{
		Spawn:
			MNZE A -1;
			Stop;
	}
}

class Palme : Actor
{
	default
	{
		height 160;
		radius 8;
		+SOLID
	}
	States
	{
		Spawn:
			PMTR A -1;
			Stop;
	}
}

class Note : Actor
{
	default
	{
		height 16;
		radius 8;
	}
	States
	{
		Spawn:
			NOTE A -1;
			Stop;
	}
}