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;
+}
+