blob: 134d28d1f7b326743b506c306990fffabdc46877 [file] [log] [blame]
/* 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;
}
public varargs void init(object origin) {
(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;
}