Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/obj/topliste.c b/obj/topliste.c
new file mode 100644
index 0000000..230c546
--- /dev/null
+++ b/obj/topliste.c
@@ -0,0 +1,116 @@
+inherit "/std/thing";
+
+#include <properties.h>
+#include <language.h>
+
+// ({Funktionsname, ({argumente}), tttel })
+nosave <string|mixed*>* watdenn;
+
+string _liesliste();
+
+protected void create()
+{
+  if (!clonep(this_object())) return;
+  ::create();
+  SetProp(P_SHORT,"Die Top-Liste, Top-Spielerliste, Top-Seherliste und "
+      "Top-Hardcoreliste");
+  SetProp(P_WEIGHT,0);
+  SetProp(P_GENDER,FEMALE);
+  SetProp(P_WEIGHT,20);
+  AddId(({"liste","topliste","top-liste",
+          "topspielerliste","top-spielerliste","topspieler","spielerliste",
+          "topseherliste","top-seherliste","topseher","seherliste",
+          "tophardcoreliste","top-hardcoreliste","tophardcore","hardcoreliste"}));
+  SetProp(P_NAME,"Liste");
+  SetProp(P_NOGET,"Die ist an der Wand festgenagelt.\n");
+  AddReadDetail(SENSE_DEFAULT, #'_liesliste);
+}
+
+#define NAME     0
+#define LEP      1
+#define QP       2
+#define XP       3
+#define LEVEL    4
+#define AGE      5
+#define RACE     6
+#define GUILD    7
+#define WIZLEVEL 8
+#define HARDCORE 9
+public string format_list(< <string|int>* >* list)
+{
+  int idx;
+  //string res="      Name         Level  AP  Erfahrung    Alter     Gilde\n";
+  string res = sprintf(
+      "%c%:4s  %:11-s  %:5|s %:5|s %:4|s %:12|s %:12|s  %:14-s\n",
+      ' ', "", "Name", "", "Level", "AP", "Erfahrung","Alter","Gilde");
+
+  foreach(<string|int>* entry: list)
+  {
+    ++idx;
+    entry[AGE] *= 2;
+    int tage = entry[AGE]/86400;
+    int stunden = (entry[AGE] % 86400) / 3600;
+    int minuten = (entry[AGE] % 3600) / 60;
+    res +=
+    sprintf("%c%:4d. %:11-s  %:5-s %:5d %:4d %:12d %:4dd, %:2'0'd:%:2'0'd  %:14-s\n",
+            (entry[WIZLEVEL]>0 ? '*' : ' '),
+            idx, capitalize(entry[NAME]),
+            (entry[HARDCORE]>1 ? "(RIP)" : ""),
+            entry[LEVEL],
+            entry[QP], entry[XP],
+            tage, stunden, minuten,
+            capitalize(entry[GUILD]));
+  }
+  return res;
+}
+
+private string get_list(<string|mixed*>* was)
+{
+  if (was == 0)
+    was=({"Liste", ({}), " "*28 + "Liste der Topspieler !\n\n" });
+
+  < <string|int>* >* list = "/secure/topliste"->(was[0])(was[1]...);
+  
+  return was[2] + format_list(list);
+}
+
+varargs int id(string str,int lvl)
+{
+  if (!::id(str,lvl))
+    return 0;
+
+  if (strstr(str,"seher")>=0)
+    watdenn=({"SeherListe", ({ }), " "*29 + "Liste der Topseher !\n\n" });
+  else if (strstr(str,"spieler")>=0)
+    watdenn=({"SpielerListe", ({ }),
+               " "*21 + "Liste der Topspieler (Keine Seher) !\n\n" });
+  else if (strstr(str,"hardcore")>=0)
+    watdenn=({"HardcoreListe", ({ }),
+               " "*22 + "Liste der mutigsten aller Helden !\n\n" });
+  else
+    watdenn=({"Liste", ({ }), " "*28 + "Liste der Topspieler !\n\n" });
+  
+  return 1;
+}
+
+string _query_long()
+{
+  if (this_player()) this_player()->More(get_list(watdenn));
+  watdenn=0;
+  return "";
+}
+
+varargs string long(int mode)
+{
+  if (this_player()) this_player()->More(get_list(watdenn));
+  watdenn=0;
+  return "";
+}
+
+string _liesliste()
+{
+  if (this_player()) this_player()->More(get_list(watdenn));
+  watdenn=0;
+  return "";
+}
+