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