Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/obj/mliste.c b/obj/mliste.c
new file mode 100644
index 0000000..9f955d5
--- /dev/null
+++ b/obj/mliste.c
@@ -0,0 +1,106 @@
+inherit "/std/thing/properties";
+
+#include <defines.h>
+#include <properties.h>
+#include <sys_debug.h>
+
+#define EM_DATA   "/etc/Erzmagier"
+#define MAGIER    "/etc/Magierliste"
+#define MASTER    "/secure/master"
+#define WIZ_HOME  "/players"
+
+#define REM   0   // RegionsErzMagier
+#define MAG   1   // Normale Magier
+
+private mapping domains, build_domains;
+private int Finished, today;
+void MagierListe();
+
+private mapping _query_Magierliste() { return domains; }
+
+void create()
+{
+  ::create();
+  seteuid(getuid());
+  Set("Magierliste", #'_query_Magierliste/*'*/, F_QUERY_METHOD);
+  call_out("reset", 0);
+}
+
+void reset()
+{
+  if (today >= time()/86400)
+    return;
+
+  today=time()/86400;
+  MagierListe();
+}
+
+void ProcessList(mixed names)
+{
+  mixed Dname;
+  int i;
+  i = 5;
+
+  while(i-- && sizeof(names))
+  {
+    if(!pointerp(Dname = MASTER->get_domain_homes(names[0])))
+      Dname = ({Dname});
+    if(!sizeof(Dname)) Dname = ({"Keine Region"});
+    while(sizeof(Dname))
+    {
+      if(!build_domains[Dname[0]])
+      {
+        build_domains[Dname[0], REM] = ({});
+        build_domains[Dname[0], MAG] = ({});
+      }
+      if(Dname[0]!="Keine Region" && MASTER->domain_master(names[0], Dname[0]))
+        build_domains[Dname[0], REM] += ({names[0]});
+      else
+        build_domains[Dname[0], MAG] += ({names[0]});
+      Dname = Dname[1..];
+    }
+    names = names[1..];
+  }
+  if(sizeof(names)) call_out("ProcessList", 0, names);
+  else { Finished = 1; MagierListe(); }
+}
+
+void MagierListe()
+{
+  string output;
+  mixed d;
+
+  if(!Finished)
+  {
+    if(find_call_out("ProcessList") == -1)
+    {
+      Finished = 0;
+      build_domains = m_allocate(0,2);
+      call_out("ProcessList", 0, get_dir(WIZ_HOME+"/*") - ({".", "..", ".readme"}));
+    }
+    call_out("MagierListe", 20, 1);
+    return;
+  }
+  while(remove_call_out("Magierliste") !=  -1);
+
+  if (!build_domains)
+    return;
+
+  output = "Magierliste von MorgenGrauen vom "+dtime(time())+"\n";
+
+  domains = deep_copy(build_domains);
+  build_domains=0;
+  for(d = m_indices(domains); sizeof(d); d = d[1..])
+  {
+    output += "REGION: "+capitalize(d[0])
+             +" REM: "
+             +implode(map(domains[d[0], REM], #'capitalize), ", ")
+             +" ("+sizeof(domains[d[0], REM]+domains[d[0], MAG])
+             +" Magier)\n"
+             + break_string(implode(map(domains[d[0], MAG],#'capitalize),
+                                    ", "), 62, 8)
+             +"\n";
+  }
+  rm(MAGIER);
+  write_file(MAGIER, output);
+}