Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/p/daemon/classdb.c b/p/daemon/classdb.c
new file mode 100644
index 0000000..2db40ae
--- /dev/null
+++ b/p/daemon/classdb.c
@@ -0,0 +1,91 @@
+// MorgenGrauen MUDlib
+//
+// /obj/classd.c -- master object for classes.
+//
+// Soll irgendwann mal Klassen aehnlich der Material-DB verwalten, momentan
+// machts es erstmal einfach eine Ersetzung von Aliasen und ein Hinzufuegen
+// von impliziten Klassen.
+//
+// $Id$
+#pragma strict_types,save_types
+#pragma no_clone, no_shadow, no_inherit
+#pragma verbose_errors,combine_strings
+#pragma pedantic, range_check, warn_deprecated
+
+#include <class.h>
+
+// Mapping von Aliasen fuer Klassen. Aliase duerfen nicht rekursiv sein.
+private nosave mapping classaliases =
+  ([
+   ]);
+// Mapping von impliziten Klassen fuer eine gegebene Klasse. Implizite Klassen
+// sind als Array von Klassennamen gegeben. Implizite Klassen duerfen zur Zeit
+// nicht rekursiv sein und keine Aliase enthalten.
+private nosave mapping implicitclasses =
+  ([
+     CL_ZOMBIE:       ({CL_UNDEAD}),
+     CL_SKELETON:     ({CL_UNDEAD}),
+     CL_GHOUL:        ({CL_UNDEAD}),
+     CL_VAMPIRE:      ({CL_UNDEAD}),
+     CL_HOBGOBLIN:    ({CL_GOBLIN}),
+     CL_MAMMAL_LAND:  ({CL_MAMMAL, CL_ANIMAL}),
+     CL_MAMMAL_WATER: ({CL_MAMMAL, CL_ANIMAL}),
+     CL_SNAKE:        ({CL_REPTILE}),
+     CL_ARACHNID:     ({CL_ANIMAL}),
+     CL_BIRD:         ({CL_ANIMAL}),
+     CL_FISH:         ({CL_ANIMAL}),
+     CL_FROG:         ({CL_ANIMAL}),
+     CL_INSECT:       ({CL_ANIMAL}),
+     CL_MAMMAL:       ({CL_ANIMAL}),
+     CL_REPTILE:      ({CL_ANIMAL}),
+     CL_SNAKE:        ({CL_ANIMAL}),
+     CL_GOLEM:        ({CL_CONSTRUCT}),
+   ]);
+
+protected void create() {
+}
+
+/** Gibt den Alias der Klasse <cls> zurueck.
+ * @param[in] cls string - Klassenname
+ * @return string* - Alias von Klasse <cls>
+ */
+public string * QueryClassAlias(string cls) {
+  if (!stringp(cls))
+      raise_error(sprintf(
+            "Got wrong argument, expected string, got %.50O\n",cls));
+  return copy(classaliases[cls]) || cls;
+}
+
+/** Gibt die impliziten Klassen der Klasse <cls> zurueck.
+ * @param[in] cls string - Klassenname
+ * @return string* - Liste von impliziten Klassen von <cls>
+ */
+public string * QueryImplicitClasses(string cls) {
+  if (!stringp(cls))
+      raise_error(sprintf(
+            "Got wrong argument, expected string, got %.50O\n", cls));
+  return copy(implicitclasses[cls]) || ({});
+}
+
+/** Adds implicit classes to the classes given in <classes>.
+ * Ausserdem werden Klassenaliase aufgeloest.
+ * @param[in] classes string* - Klassenliste.
+ * @return string* - neue Klassenliste
+ * @attention Kann das uebergebene Array aendern. Das Ergebnisarray muss nicht
+ * unique sein, sondern kann Dubletten enthalten.
+ */
+public string * AddImplicitClasses(string *classes) {
+  if (!pointerp(classes))
+      raise_error(sprintf(
+          "Got wrong argument, expected array, got %.50O\n",classes));
+  foreach(string cls : &classes) {
+      // zuerst Aliase ersetzen
+      if (member(classaliases, cls))
+          cls = classaliases[cls];
+      // dann implizite Klassen addieren.
+      if (member(implicitclasses, cls))
+          classes += implicitclasses[cls];
+  }
+  return classes;
+}
+