blob: 0282818a159155c6566e4ce1d70a37ab08ba8dfd [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001//
2// raum0.c -- Der Eingangsraum des Hauses
3//
4// Grundobjekt (c) 1994 Boing@MorgenGrauen
5// Abschliessen und Rauswerfen von Jof
6// Fuer Aenderungen ab dem 06.10.94 verantwortlich: Wargon
7// Fuer Aenderungen ab dem 01.01.04 verantwortlich: Vanion
8//
9// $Date: 1996/02/21 18:13:41 $
10// $Revision: 2.5 $
11/* $Log: raum0.c,v $
12 * Revision 2.5 1996/02/21 18:13:41 Wargon
13 * *** empty log message ***
14 *
15 * Revision 2.4 1995/06/29 08:54:57 Wargon
16 * Neuer Befehl: "spion" zeigt, wer vor der Tuer steht.
17 *
18 * Revision 2.3 1995/06/28 08:59:25 Wargon
19 * init() meldet dem Hausbesitzer Spielerrueckmeldungen.
20 *
21 * Revision 2.2 1995/02/22 21:30:12 Wargon
22 * "uebersicht" jetzt auch fuer Wargon ueberall moeglich. ;)
23 *
24 * Revision 2.1 1995/02/04 14:31:47 Wargon
25 * AddItem(truhe) rausgenommen. Wird nun in Load() erledigt (siehe raum.c).
26 *
27 * Revision 2.0 1995/02/01 20:38:24 Wargon
28 * Von raum.c abgekoppelt.
29 *
30 */
31/*
32Letzte Aenderung: Vanion, 29. Feb 2004
33 - "uebersicht erlaubt" zeigt nun nur an, wer erlaubt ist.
34*/
35
36#include "haus.h"
37#include <wizlevels.h>
38#include <properties.h>
39#include <moving.h>
40
41inherit RAUM;
42
43void create()
44{
45 if (!clonep(this_object()) && object_name(this_object())==(PATH+"raum0")) {
46 set_next_reset(-1);
47 return;
48 }
49 ::create();
50
51 Set(H_REPORT, 0);
52 Set(H_REPORT, SAVE, F_MODE);
53
54 AddCmd( "erlaube", "erlauben" );
55 AddCmd( "verbiete", "verbieten" );
56 AddCmd( "oeffne", "oeffne" );
57 AddCmd( ({ "schliess", "schliesse" }), "schliesse" );
58 AddCmd( "spion", "spion" );
59}
60
61void notifyRep(int r)
62{
63 printf("Seit Deinem letzten Besuch gab es %s Rueckmeldung%s von anderen Spielern\nin Deinem Haus.\n", (r==1) ? "eine" : to_string(r), (r==1) ? "" : "en");
64}
65
66void init()
67{
68 int r;
69
70 ::init();
71
72 if (tp_owner_check() && r=Query(H_REPORT)) {
73 call_out("notifyRep", 0, r);
74 Set(H_REPORT, 0);
75 Save();
76 }
77}
78
79int oeffne(string str)
80{
81 return (HAUSNAME(QueryOwner()))->oeffne(str);
82}
83
84int schliesse(string str)
85{
86 return (HAUSNAME(QueryOwner()))->schliesse(str);
87}
88
89varargs int
90uebersicht(string str, string pre)
91{
92 if ( !(tp_owner_check() || IS_MAINTAINER(this_player())) )
93 return 0;
94
95 pre = "\n"+arr_out(VERWALTER->HausProp(QueryOwner(), HP_ALLOWED),
96 "Nur Du kannst Dein Haus auf- und abschliessen.\n",
97 "Du und %s koennen Dein Haus auf- und abschliessen.\n",
98 "Neben Dir koennen noch folgende Personen Dein Haus auf- und abschliessen:\n", 1 );
99
100 if (str=="erlaubt")
101 {
102 this_player()->More(pre);
103 return 1;
104 }
105
106 return ::uebersicht(str, pre);
107}
108
109int
110erlauben(string str)
111{
112 string *erlaubt;
113
114 if (!tp_owner_check()) {
115 notify_fail( "Du kannst hier gar nichts erlauben!\n" );
116 return 0;
117 }
118
119 if (!(str=UP_ARGS(this_player())) || str == "") {
120 notify_fail( "Wem willst denn das Auf- und Abschliessen Deines Hauses erlauben?\n" );
121 return 0;
122 }
123
124 erlaubt = VERWALTER->Erlaube(QueryOwner(),
125 map((regexplode(str, "[, ]")-({","," ",""})), #'capitalize));
126 arr_out(erlaubt, "Nur Du kannst Dein Haus auf- und abschliessen.\n",
127 "Du und %s koennen Dein Haus auf- und abschliessen.\n",
128 "Neben Dir koennen noch folgende Personen Dein Haus auf- und abschliessen:\n" );
129 return 1;
130}
131
132int
133verbieten(string str)
134{
135 string *erlaubt;
136
137 if (!tp_owner_check()) {
138 notify_fail( "Du kannst hier gar nichts verbieten!\n" );
139 return 0;
140 }
141
142 if (!(str=UP_ARGS(this_player())) || str == "") {
143 notify_fail( "Wem willst denn das Auf- und Abschliessen Deines Hauses verbieten?\n" );
144 return 0;
145 }
146 erlaubt = VERWALTER->Verbiete(QueryOwner(),
147 map((regexplode(str, "[, ]")-({","," ",""})), #'capitalize));
148 arr_out(erlaubt, "Nur Du kannst Dein Haus auf- und abschliessen.\n",
149 "Du und %s koennen Dein Haus auf- und abschliessen.\n",
150 "Neben Dir koennen noch folgende Personen Dein Haus auf- und abschliessen:\n" );
151 return 1;
152}
153
154int
155spion(string str)
156{
157 object env, *inv;
158 string ow;
159
160 ow = QueryOwner();
161 str = VERWALTER->HausProp(ow, HP_ENV);
162 call_other(str, "???");
163 env = find_object(str);
164 inv = all_inventory(env);
165 if (env = present("\n"+ow+"haus", env))
166 inv -= ({ env });
167 if (sizeof(inv))
168 printf( "Vor dem Haus siehst Du:\n%s", make_invlist(this_player(), inv));
169 else
170 printf( "Vor dem Haus ist nichts und niemand zu sehen.\n" );
171
172 return 1;
173}