Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/sys/thing/commands.h b/sys/thing/commands.h
new file mode 100644
index 0000000..2bb876d
--- /dev/null
+++ b/sys/thing/commands.h
@@ -0,0 +1,41 @@
+// MorgenGrauen MUDlib
+//
+// thing/commands.h -- command handling header
+//
+// $Id: commands.h 8707 2014-02-23 22:38:34Z Zesstra $
+
+#ifndef __THING_COMMANDS_H__
+#define __THING_COMMANDS_H__
+
+// properties
+
+#define P_COMMANDS           "commands"
+
+#endif // __THING_COMMANDS_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_COMMANDS_H_PROTO__
+#define __THING_COMMANDS_H_PROTO__
+
+// prototypes
+
+// add commands to the command list of the object
+varargs void AddCmd(mixed cmd, mixed func, mixed flag, mixed cmdid);
+
+// remove a command
+varargs int RemoveCmd(mixed cmd, int del_norule, mixed onlyid);
+// Set- und Query-Methoden
+static mapping _set_commands(mapping commands);
+static mapping _query_commands();
+
+
+// internal
+static int _execute(mixed fun, string str, mixed *parsed);
+static int _process_command(string str, string *noparsestr,mixed fun, mixed flag, mixed rule);
+
+public int _cl(string str);
+
+#endif // __THING_COMMANDS_H_PROTO__
+
+#endif	// NEED_PROTOYPES
diff --git a/sys/thing/description.h b/sys/thing/description.h
new file mode 100644
index 0000000..029f445
--- /dev/null
+++ b/sys/thing/description.h
@@ -0,0 +1,128 @@
+// MorgenGrauen MUDlib
+//
+// thing/description.h -- header
+//
+// $Id: description.h 9208 2015-05-10 20:54:06Z Zesstra $
+// MorgenGrauen MUDlib
+//
+// thing/description.h -- header
+//
+// $Id: description.h 9208 2015-05-10 20:54:06Z Zesstra $
+ 
+#ifndef __THING_DESCRIPTION_H__
+#define __THING_DESCRIPTION_H__
+
+// properties
+#define P_NAME               "name"       // name of the object
+#define P_NAME_ADJ           "name_adj"   // adjective of the name
+#define P_SHORT              "short"      // short desciption of the object
+#define P_LONG               "long"       // long description of the object
+#define P_IDS                "ids"        // identifier of the object
+#define P_ADJECTIVES         "adjectives" // adjectives of the object
+#define P_SHOW_INV           "show_inv"   // Show in inventory of player
+#define P_CLASS              "class"      // class, like undead or explosive
+
+#define P_KILL_MSG           "kill_msg"
+#define P_KILL_NAME          "kill_name"
+
+#define P_HEAL               "heal"
+#define P_COMBATCMDS         "combatcmds"
+
+#define P_VALUE              "value"
+#define P_NOBUY              "nobuy"
+#define P_NOSELL             "nosell"
+#define P_MAGIC              "magic"
+#define P_NOMAGIC            "nomagic"
+
+#define P_LOG_FILE           "log_file"   // bugs in anderes repfile umleiten
+
+#define P_LIGHT              "light"
+#define P_TOTAL_LIGHT        "total_light"
+
+#define P_CURSED             "cursed"
+#define P_KEEP_ON_SELL       "keep_on_sell"
+
+#define P_CLONER             "cloner"
+#define P_CLONE_TIME         "clone_time"
+
+/* read_msg ist auch fuer nicht fernwest-kundige lesbar */
+#define P_READ_MSG           "read_msg"
+#define P_FW_ALWAYS_READABLE "fw_always_readable"
+#define P_DETAILS            "details"
+#define P_SPECIAL_DETAILS    "special_details"
+#define P_READ_DETAILS       "read_details"
+#define P_SMELLS             "smell_details"
+#define P_SOUNDS             "sound_details"
+#define P_TOUCH_DETAILS      "p_lib_touch_details"
+#ifndef P_INVIS
+#define P_INVIS              "invis"
+#endif
+
+#define SENSE_DEFAULT "\ndefault"
+#define SENSE_VIEW  0
+#define SENSE_SMELL 1
+#define SENSE_SOUND 2
+#define SENSE_TOUCH 3
+#define SENSE_READ  4
+
+#endif // __THING_DESCRIPTION_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_DESCRIPTION_H_PROTO__
+#define __THING_DESCRIPTION_H_PROTO__
+
+// prototypes
+// check if the objects can by identified by str
+varargs int id(string str, int lvl);
+
+// check IDs vs. string*
+int match_ids(string *list);
+
+// add an id to the current object
+void AddId(string|string* str);
+
+// remove an id from the object
+void RemoveId(string|string* str);
+
+// add an adjective to describe the object
+void AddAdjective(string|string* str);
+
+// remove an adjective from the object
+void RemoveAdjective(string|string* str);
+
+// get the name with casus and demonstrative
+varargs string name(int casus, int demon);
+varargs string Name(int casus, int demon);
+
+// check if object is member of a class
+int is_class_member(string|string* str);
+
+// add object to a class
+void AddToClass(string str);
+
+// add a detail to object
+public void AddDetail( string|string* keys, string|string*|mapping|closure descr );
+public void AddReadDetail( string|string* keys, string|string*|mapping|closure descr );
+public void AddSmells( string|string* keys, string|string*|mapping|closure descr );
+public void AddSounds( string|string* keys, string|string*|mapping|closure descr );
+public void AddTouchDetail( string|string* keys, string|string*|mapping|closure descr );
+
+// remove a detail from object
+public varargs void RemoveDetail( string|string* keys );
+public varargs void RemoveSmells( string|string* keys );
+public varargs void RemoveSounds( string|string* keys );
+public varargs void RemoveReadDetail( string|string* keys );
+public varargs void RemoveTouchDetail( string|string* keys );
+
+// add a special detail to object
+void AddSpecialDetail(string|string* keys, string functionname );
+
+// remove a special detail to object
+void RemoveSpecialDetail( string|string* keys );
+
+static void GiveEP(int type, string key);
+
+#endif // __THING_DESCRIPTION_H_PROTO__
+
+#endif	// NEED_PROTOYPES
diff --git a/sys/thing/language.h b/sys/thing/language.h
new file mode 100644
index 0000000..51afd86
--- /dev/null
+++ b/sys/thing/language.h
@@ -0,0 +1,79 @@
+// MorgenGrauen MUDlib
+//
+// thing/language.h -- language handling
+//
+// $Id: language.h 6330 2007-05-26 17:53:21Z Zesstra $
+ 
+#ifndef __THING_LANGUAGE_H__
+#define __THING_LANGUAGE_H__
+
+// properties
+#define P_ARTICLE            "article"
+#define P_GENDER             "gender"
+#define P_PLURAL             "plural"
+
+// special defines
+
+#define WER 	0
+#define WESSEN 	1
+#define WEM 	2
+#define WEN 	3
+#define RAW     99   // name without article
+
+#define NEUTER 		0
+#define MALE 		1
+#define FEMALE 		2
+
+#define SINGULAR 	0
+#define PLURAL 		1
+
+#endif // __THING_LANGUAGE_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_LANGUAGE_H_PROTO__
+#define __THING_LANGUAGE_H_PROTO__
+
+// prototypes
+
+// Artikel im passenden Fall sowie demonst. bzw undemonst. zurueck-
+// geben. force ueberschreibt das SetArticle-Flag.
+public varargs string QueryArticle(int casus, int dem, int force);
+
+// Empfehle einen Artikel fuer das Objekt, getestet wird, ob ausser
+// diesem Objekt sich ein anderes Objekt mit der id im selben
+// Raum befindet.
+public varargs int SuggestArticle(string id);
+
+// Gib ein Pronomen zurueck, welches ausdrueckt, das ein Objekt diesem
+// Objekt gehoert. Dabei ist what das Geschlecht des Objektes.
+public varargs string QueryPossPronoun(mixed what, int casus, int number);
+
+// Er/Sie/Es u.ae. zurueckgeben.
+public varargs string QueryPronoun(int casus);
+
+// Du im passenden Fall zurueckgeben.
+public varargs string QueryDu(int casus,int gender, int zahl);
+
+// Geschlecht in Worten zurueckgeben (maennlich, weiblich, saechlich)
+public string QueryGenderString();
+
+// Deklination eines Adjektivs
+public varargs string DeclAdj(mixed adj, int casus, int demon);
+
+// Query- und Set-Methoden
+static int _set_article(int fl);
+static int _query_article();
+static int _set_gender(int i);
+
+// Interna
+static int QueryAFlag();
+
+#endif // __THING_LANGUAGE_H_PROTO__
+
+#endif // NEED_PROTOYPES
+
+
+
+
+
diff --git a/sys/thing/lighttypes.h b/sys/thing/lighttypes.h
new file mode 100644
index 0000000..dae95d5
--- /dev/null
+++ b/sys/thing/lighttypes.h
@@ -0,0 +1,83 @@
+// MorgenGrauen MUDlib
+//
+// lighttypes.h -- Welche Typen von Licht gibt es im MorgenGrauen? 
+//
+// $Id: lighttypes.h,v 1.2 2004/06/12 14:00:48 Vanion Exp $
+ 
+#ifndef __THING_LIGHTTYPES_H__
+#define __THING_LIGHTTYPES_H__
+
+#define P_LIGHT_TYPE   "light_type"  // Welches Licht herrscht hier vor?
+
+// Mode-Parameter fuer CheckLightType
+#define LT_CHECK_ANY     0 
+#define LT_CHECK_ALL     1
+#define LT_CHECK_MATCH   2
+#define LT_CHECK_NONE    3
+
+// Basislichttypen
+#define LT_MISC          0  // Unbestimmt
+
+// Natuerliche Lichtquellen (Tag)
+#define LT_SUN           1  // Sonnenschein
+#define LT_DIFFUSE       2  // Indirektes Tageslicht
+
+// Natuerliche Lichtquellen (Nacht)
+#define LT_MOON          4  // Mondlicht
+#define LT_STARS         8  // Sternenlicht
+
+// Drei besonders oft vorkommende Typen offenen Lichts
+#define LT_CANDLE       16  // Kerzenlicht
+#define LT_TORCH        32  // Fackelschein
+#define LT_OPEN_FIRE    64  // Lagerfeuer etc.
+
+// Magische erzeugtes Leuchten, wird nicht naeher definiert.
+#define LT_MAGIC       128  // Magische Lichtquelle
+
+// Alles was so gluehen kann: Von Gluehbirne bis zu Phosphor
+#define LT_GLOWING     256  // Selbstleuchtende Lichtquellen
+
+// Ein Raum kann auch explizit auf Dunkel gesetzt werden.
+// Eine Mischung mit anderen Typen scheint aber wenig sinnvoll.
+#define LT_DARKNESS    512  // Dunkelheit
+
+// Gemischte Typen, sie dienen dazu, komfortabel Abfragen auf Lichttypen 
+// zu implementieren. Beim setzen sollte immer besser auf die genaueren 
+// Lichttypen zurueckgegriffen werden.
+
+// Tageslicht im allgemeinen
+#define LT_DAYLIGHT    (LT_SUN|LT_DIFFUSE)
+
+// Da es verschiedene Typen offenen Feuers gibt, wird hier
+// noch ein Abfragetyp definiert.
+#define LT_FIRE        (LT_CANDLE|LT_TORCH|LT_OPEN_FIRE)
+
+// Natuerliches Licht
+#define LT_NATURAL     (LT_DAYLIGHT|LT_STARS|LT_MOON)
+
+// Kuenstliches Licht
+#define LT_ARTIFICIAL   (LT_MAGIC|LT_FIRE|LT_GLOWING)
+
+#endif // _THING_LIGHTTYPES_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_LIGHTTYPES_H_PROTO__
+#define __THING_LIGHTTYPES_H_PROTO__
+
+// Diese Doku wird noch entfernt, wenn die Manpage erstellt worden ist.
+// 
+// Eine Funktion, mit der das Abfagen eines oder mehrerer Lichttypen 
+// moeglich ist, ist im std/thing/description definiert. Beispiel: 
+// 
+// thing->CheckLightType(LT_DAYLIGHT) 
+//       gibt true wenn ein Tageslichttyp gesetzt ist.
+//
+// thing->CheckLightType(LT_SUN|LT_MOON) 
+//       gibt true, wenn einer der beiden Himmelskoerper leuchtet.
+
+varargs int CheckLightType(int lighttype, int mode);
+
+#endif // __THING_LIGHTTYPES_H_PROTO__
+
+#endif // NEED_PROTOTYPES
diff --git a/sys/thing/material.h b/sys/thing/material.h
new file mode 100644
index 0000000..927969a
--- /dev/null
+++ b/sys/thing/material.h
@@ -0,0 +1,32 @@
+// MorgenGrauen MUDlib
+//
+// thing/material.h -- material handling header
+//
+// $Id: material.h 6930 2008-08-09 09:20:16Z Zesstra $
+
+#ifndef __THING_MATERIAL_H__
+#define __THING_MATERIAL_H__
+
+#define P_MATERIAL              "material"
+#define MATERIALDB              "/secure/materialdb"
+#define P_MATERIAL_KNOWLEDGE    "material_knowledge"
+#define MATERIAL_SYMMETRIC_RECOGNIZABILITY "mat_sym_recoc"
+
+// Materialien nicht beim Laden durch MatDB includen
+// TODO: besser recoc-propertydefinitionen woanders rein und Materialien hier
+// immer includen
+#ifndef _SKIP_MATERIALS_
+#include <materials.h>
+#endif
+
+#ifdef NEED_PROTOTYPES
+#ifndef __THING_MATERIAL_H_PROTO__
+#define __THING_MATERIAL_H_PROTO__
+
+int QueryMaterial(string mat);
+int QueryMaterialGroup(string matgroup);
+string MaterialList(int casus, mixed idinf);
+
+#endif // __THING_MATERIAL_H_PROTO__
+#endif // NEED_PROTOTYPES
+#endif // __THING_MATERIAL_H__
diff --git a/sys/thing/moving.h b/sys/thing/moving.h
new file mode 100644
index 0000000..46e14a7
--- /dev/null
+++ b/sys/thing/moving.h
@@ -0,0 +1,43 @@
+// MorgenGrauen MUDlib
+//
+// thing/moving.h -- object moving
+//
+// $Id: moving.h 8892 2014-08-04 19:48:28Z Zesstra $
+ 
+#ifndef __THING_MOVING_H__
+#define __THING_MOVING_H__
+
+// properties
+#define P_NEVERDROP           "neverdrop"
+#define P_NODROP              "nodrop"    // can't be dropped
+#define P_NOGET               "noget"     // can't be taken
+
+#define P_NOINSERT_MSG        "noinsert_msg"      // Fehlermeldung bei ME_CANT_BE_INSERTED
+#define P_NOLEAVE_MSG         "noleave_msg"       // Fehlermeldung bei ME_CANT_LEAVE_ENV
+#define P_ENV_TOO_HEAVY_MSG   "env_too_heavy_msg" // Fehlermeldung bei ME_TOO_HEAVY_FOR_ENV
+#define P_TOO_MANY_MSG        "too_many_msg"      // Fehlermeldung bei ME_TOO_MANY_OBJECTS
+#define P_TOO_HEAVY_MSG       "too_heavy_msg"     // Fehlermeldung bei ME_TOO_HEAVY
+
+#define P_LAST_MOVE           "last_move"
+#define P_LAST_CONTENT_CHANGE "last_content_change"
+
+#define P_SENSITIVE     "sensitive" // should be registered as sensitive object
+
+
+#endif // __THING_MOVING_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_MOVING_H_PROTO__
+#define __THING_MOVING_H_PROTO__
+
+// prototypes
+// move the object from current position to dest using the method
+public varargs int move(object|string dest, int method);
+
+// remove the object return 1 for successful destruction
+public varargs int remove(int silent);
+
+#endif // __THING_MOVING_H_PROTO__
+
+#endif //  // NEED_PROTOYPES
diff --git a/sys/thing/properties.h b/sys/thing/properties.h
new file mode 100644
index 0000000..1a59522
--- /dev/null
+++ b/sys/thing/properties.h
@@ -0,0 +1,63 @@
+// MorgenGrauen MUDlib
+//
+// thing/properties.h -- contains property definitions and prototypes
+//
+// $Id: properties.h,v 3.5 2003/08/07 15:09:33 Rikus Exp $
+
+#ifndef __THING_PROPERTIES_H__
+#define __THING_PROPERTIES_H__
+
+// special defines
+
+#define F_VALUE         0
+#define F_MODE          1
+#define F_SET_METHOD    2
+#define F_QUERY_METHOD  3
+#define F_MODE_AS       4
+#define F_MODE_AD       5
+
+#define SAVE            64
+#define PROTECTED       128  // only this_object() can change the values
+#define SECURED         256  // like PROTECTED, but never resetable
+#define NOSETMETHOD     512  // Keine Set-Methode => Nicht mofifizierbar
+#define SETMNOTFOUND	1024 // Keine Set-Methode gefunden
+#define QUERYMNOTFOUND	2048 // Keine Query-Methode gefunden
+#define QUERYCACHED	4096
+#define SETCACHED	8192
+
+#endif // __THING_PROPERTIES_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_PROPERTIES_H_PROTO__
+#define __THING_PROPERTIES_H_PROTO__
+
+// prototypes
+
+// (E)UID-Methods
+//static mixed _query_uid();
+//static mixed _query_euid();
+
+// Property-Initialisation
+protected void InitializeProperties();
+
+// direct property access
+public varargs mixed Set(string name, mixed Value, int Type, int extern);
+public varargs mixed Query(string name, int Type);
+
+// filtered property access
+public mixed SetProp(string name, mixed Value);
+public mixed QueryProp(string name);
+
+// global property handling
+public void SetProperties(mapping props);
+public mapping QueryProperties();
+
+// misc/interna
+public mixed *__query_properties();
+public void _set_save_data(mixed data);
+public mixed _get_save_data();
+
+#endif // __THING_PROPERTIES_H_PROTO__
+
+#endif // NEED_PROTOTYPES
diff --git a/sys/thing/restrictions.h b/sys/thing/restrictions.h
new file mode 100644
index 0000000..ea14401
--- /dev/null
+++ b/sys/thing/restrictions.h
@@ -0,0 +1,27 @@
+// MorgenGrauen MUDlib
+//
+// thing/restrictions.h -- restrictions of the object (weight)
+//
+// $Id: restrictions.h,v 3.3 2000/08/15 12:29:20 Paracelsus Exp $
+ 
+#ifndef __THING_RESTRICTIONS_H__
+#define __THING_RESTRICTIONS_H__
+
+// properties
+#define P_WEIGHT             "weight"       // weight of an object
+#define P_TOTAL_WEIGHT       "total_weight" // weight with all objects inside
+
+#endif // __THING_RESTRICTIONS_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_RESTRICTIONS_H_PROTO__
+#define __THING_RESTRICTIONS_H_PROTO__
+
+static void _set_weight(int weight);
+static mapping _set_extern_attributes_modifier(mapping xmod);
+static mapping _set_extern_health_modifier(mapping xmod);
+
+#endif // __THING_RESTRICTIONS_H_PROTO__
+
+#endif	// NEED_PROTOYPES
diff --git a/sys/thing/sockets.h b/sys/thing/sockets.h
new file mode 100644
index 0000000..a5a9cbb
--- /dev/null
+++ b/sys/thing/sockets.h
@@ -0,0 +1,79 @@
+// MorgenGrauen MUDlib
+/** @file
+  Konstanten, Prototypen und Properties fuer sockelbare Items.
+* Langbeschreibung...
+* @author Zesstra + Arathorn
+* @date xx.05.2008
+* @version $Id$
+*/
+
+/* Changelog:
+*/
+
+#ifndef _SOCKETS_H_
+#define _SOCKETS_H_
+
+/** Speichert die Sockel und deren Inhalt, die ein Item hat.
+  ([ TYP1: ({ITEM1, ITEM2}),
+     TYP2: ({-1}) ]) \n
+     ITEM1 = ([ P_SOCKET_PROPS, 
+                BLUE_NAME: load_name(),
+                DESCRIPTION: name(WER) ])
+  @internal
+ */
+#define P_SOCKETS      "_sockets"
+
+/** Speichert ein Mapping von Prop-Modifikatoren.
+  Die in diesem Mapping enthaltenen Props werden beim Einsetzen im Item mit
+  dem Sockel um den angegebenen Wert modifiziert.
+  */
+#define P_SOCKET_PROPS "_socket_props"
+
+/** Sockeltyp, in den das Item eingesetzt werden kann.
+  Alle anderen Sockel sind inkompatibel.
+  */
+#define P_SOCKET_TYPE  "_socket_type"
+
+/** Einschraenkungen, denen der gesockelte Gegenstand nach dem Einsetzen
+    zusaetzlich unterliegt. 
+    Wird P_RESTRICTIONS hinzugefuegt. Mapping a la P_RESTRICTIONS.
+ */
+#define P_SOCKET_RESTR_USE    "_socket_restr_use"
+
+/** Einschraenkungen, denen das Lebewesen unterliegt, welches das Item in 
+  den Sockel einbauen soll/will.
+  Mapping a la P_RESTRICTIONS.
+  */
+#define P_SOCKET_RESTR_MOUNT  "_socket_restr_mount"
+
+// Sockeltypen
+// TODO: gueltige Sockeltypen definieren festlegen, welche Props sie aendern
+// duerfen.
+#define VALID_SOCKET_TYPES ({})
+
+// Rueckgabewerte
+#define SOCKET_OK                1
+#define SOCKET_NO_OBJECT        -1
+#define SOCKET_NO_DATA          -2
+#define SOCKET_INVALID_TYPE     -3
+#define SOCKET_NO_SOCKETS       -4
+#define SOCKET_NONE_AVAILABLE   -5
+#define SOCKET_NO_EXPERTISE     -6
+#define SOCKET_ITEM_INUSE       -7
+
+// sym. Konstante fuer freien Sockel
+#define SOCKET_FREE             -1
+
+#endif // _SOCKETS_H_
+
+#ifdef NEED_PROTOTYPES
+#ifndef _SOCKETS_H_PROTOTYPES_
+#define _SOCKETS_H_PROTOTYPES_
+// public Interface 
+public int   MountSocketItem(object item);
+public int   TestSocketItem(object item);
+public mixed GetSocketInfo();
+
+#endif // _SOCKETS_H_PROTOTYPES_
+#endif // NEED_PROTOTYPES
+
diff --git a/sys/thing/util.h b/sys/thing/util.h
new file mode 100644
index 0000000..053f499
--- /dev/null
+++ b/sys/thing/util.h
@@ -0,0 +1,25 @@
+// MorgenGrauen MUDlib
+//
+// sys/thing/util.h -- Headerfile fuer /std/thing/util.c
+//
+// $Id: util.h 4707 2006-09-23 10:18:15Z root $
+
+#ifndef __THING_UTIL_H__
+#define __THING_UTIL_H__
+
+#endif // __THING_UTIL_H__
+
+#ifdef NEED_PROTOTYPES
+
+#ifndef __THING_UTIL_H_PROTO__
+#define __THING_UTIL_H_PROTO__
+
+public void ShowPropList(string *props);
+static void PrettyDump(mixed x);
+static void DumpArray(mixed *x);
+static void DumpMapping(mapping x);
+static void DumpKeyValPair(mapping x, mixed key, int size);
+
+#endif // __THING_UTIL_H_PROTO__
+
+#endif // NEED_PROTOTYPES
\ No newline at end of file