Fehlende Files fuer Mailsystem ergaenzt.

Change-Id: Ia51a607d71ac86a12e957ae0f2c604f190581314
diff --git a/p/service/loco/std/mailcabin.c b/p/service/loco/std/mailcabin.c
new file mode 100644
index 0000000..bd91261
--- /dev/null
+++ b/p/service/loco/std/mailcabin.c
@@ -0,0 +1,105 @@
+/* Eine Schreibkabine, in der man einigermassen ungestoert seine Post
+   lesen und schreiben kann.
+
+   (C) 1993/94 by Loco@Morgengrauen
+
+   Verwendung ausserhalb von Morgengrauen ist gestattet unter folgenden
+   Bedingungen:
+   - Benutzung erfolgt auf eigene Gefahr. Jegliche Verantwortung wird
+     abgelehnt.
+   - Auch in veraenderten oder abgeleiteten Objekten muss ein Hinweis auf
+     die Herkunft erhalten bleiben.
+   Ein Update-Service besteht nicht.
+
+   Fuer Fragen, Hinweise und Vorschlaege bitte mich in Morgengrauen oder 
+   Nightfall ansprechen.
+*/
+
+#pragma strong_types,save_types
+
+#include "/mail/post.h"
+#include <config.h>
+#include <properties.h>
+#include <language.h>
+#include <moving.h>
+
+inherit STDPOST;
+inherit "/std/thing/moving";
+inherit "/std/thing/commands";
+
+protected void create() {
+  post::create();
+  commands::create();
+  SetProp(P_NAME,"Schreibkabine");
+  SetProp(P_GENDER,FEMALE);
+  SetProp(P_SHORT,"Eine Schreibkabine");
+  SetProp(P_INT_LONG,"\
+In dieser Kabine kannst Du ungestoert Post lesen und schreiben. Niemand anders\n\
+kann hier rein, solange Du drin bist, dafuer waere die Kabine auch viel zu eng.\n\
+Tippe einfach 'post' oder 'mail', bzw 'mail <spieler>' zum Schreiben.\n\
+Mit 'raus' kommst Du wieder raus.\n");
+  SetProp(P_NOGET,"Versuch mal, eine festmontierte Kabine auszubauen!\n");
+  AddId("kabine");
+  AddId("schreibkabine");
+  AddId("postkabine");
+
+}
+
+int besetzt() {
+  mixed in,i;
+  in=all_inventory(this_object());
+  for (i=0;i<sizeof(in);i++) if (living(in[i]) && in[i]!=this_player()) return 1;
+  return 0;
+}
+
+public varargs string long() {
+  return "\
+Eine kleine Ein-Personen-Kabine, in der Du ungestoert Deine Post lesen und\n\
+schreiben kannst. Du kannst sie betreten. \n\
+"+( besetzt() ? "Diese Kabine ist allerdings besetzt.\n" : "");
+}
+
+string int_short(mixed viewer, mixed viewpoint) {
+  return (environment()->QueryProp(P_INT_SHORT))+" (Kabine)\n";
+}
+
+public varargs int move(mixed dest, int method, string dir, string textout, string textin) 
+{
+  int r;
+  r=(::move(dest,method));
+  AddExit("raus",object_name(environment()));
+  return r;
+}
+
+void init() {
+  (commands::init());
+  if (environment(this_player())==environment(this_object())) {
+    add_action("rein","betrete");
+    add_action("rein","betritt");
+    return;
+  }
+  if (besetzt()) {
+    this_player()->move(environment(this_object()),M_GO,0,"passt hier nicht mehr rein","macht die Tuer einer Kabine auf, aber die ist schon besetzt");
+    return;
+  }
+  if (environment(this_player())==this_object()) {
+    (post::init());
+    add_action("do_mail","mail");
+    add_action("do_mail","post");
+    return;
+  } 
+}
+
+int rein(string str) {
+  if (!str || !id(str)) {
+    notify_fail("Wo willst Du denn rein?\n");
+    return 0;
+  }
+  if (besetzt()) {
+    notify_fail("BESETZT!\n");
+    return 0;
+  }
+  this_player()->move(this_object(),M_GO,0,"betritt eine Schreibkabine","betritt die Kabine");
+  return 1;
+}
+