Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/obj/uhr.c b/obj/uhr.c
new file mode 100644
index 0000000..194b6ea
--- /dev/null
+++ b/obj/uhr.c
@@ -0,0 +1,86 @@
+#pragma no_clone
+#pragma no_inherit
+#pragma no_shadow
+#pragma strong_types
+
+#include <properties.h>
+#include <events.h>
+#include <time.h>
+
+private string ulog = "";
+
+void WaitForQuarterHour() {
+  while(remove_call_out("QuarterReached")!=-1);
+  call_out("QuarterReached",900-(time() % 900));
+}
+
+void create() {
+  WaitForQuarterHour();
+}
+
+/* Ueberprueft die als Parameter "str" uebergebene Uhrmeldung.
+   Rueckgabewerte: 0 fuer fehlerhafte Parameter,
+                   1 fuer korrekten Aufbau. */
+int CheckClockMsg(string str)
+{
+  int i = strstr(str, "%", 0);
+  /* Mehr als 1x %d enthalten, mehr als 1x % enthalten, oder auf das einzige
+     enthaltene % folgt kein "d". */
+  if ( sizeof(explode(str,"%d")) > 2 ||
+       sizeof(explode(str,"%")) > 2 ||
+       (i>-1 && ( i==sizeof(str)-1 || str[i+1] != 'd')))
+    return 0;
+  else
+    return 1;
+}
+
+void QuarterReached() {
+  int std, minuten;
+  string str, format;
+  int off;
+
+  int *lt=localtime(time());
+  minuten=lt[TM_MIN];
+  std=lt[TM_HOUR];
+  mapping edata = mkmapping(
+        ({TM_SEC, TM_MIN, TM_HOUR, TM_MDAY, TM_MON, TM_YEAR, TM_WDAY, TM_YDAY,
+            TM_ISDST}),
+        lt);
+
+  // Clock-Event triggern
+  EVENTD->TriggerEvent(EVT_LIB_CLOCK, edata); 
+
+  // bei Datumswechsel DATECHANGE-Event ausloesen.
+  if (std==0 && minuten < 15) {      
+      EVENTD->TriggerEvent(EVT_LIB_DATECHANGE, edata);
+  }
+
+  if (minuten <= 2) {
+    foreach(object u : users()) {
+      if((off=to_int(u->QueryProp(P_TIMEZONE)))<0)off+=24;
+      off=(std+off)%24;
+      format=u->QueryProp(P_CLOCKMSG)||"Du hoerst die Uhr schlagen: "
+	                               "Es ist jetzt %d Uhr.\n";
+      if ( !CheckClockMsg(format) )
+      {
+	tell_object(u, break_string(
+	  "So kann ich nicht arbeiten! Deine Uhrmeldung funktioniert so "
+	  "nicht. Bitte korrigiere das.", 78, "Die Uhr teilt Dir mit: "));
+	continue;
+      }
+      if (strstr(format,"%d",0)==-1)
+        str=format;
+      else
+        str=sprintf(format,off);
+      if (str!="") tell_object(u,str);
+    }
+  }
+  str = "";
+  if (minuten < 10) {
+    log_file("USER_STATISTIK", ulog);
+    ulog = sprintf("\n%s%02d: ",(!std?("# "+lt[TM_WDAY]+":\n"):""),std);
+  }
+  ulog += sprintf("%4d",sizeof(users()));
+  WaitForQuarterHour();
+}
+