Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/d/seher/haeuser/modules/haustuer.c b/d/seher/haeuser/modules/haustuer.c
new file mode 100644
index 0000000..b9d8784
--- /dev/null
+++ b/d/seher/haeuser/modules/haustuer.c
@@ -0,0 +1,215 @@
+// haustuer.c -- Beschreibung, Oeffnen und Schliessen
+//
+// (c) 1995 Wargon@MorgenGrauen
+//
+// $Id: haustuer.c,v 1.1.1.1 2000/08/20 20:22:42 mud Exp $
+//
+
+#define NEED_PROTOTYPES
+#include "../haus.h"
+#include <properties.h>
+#include <thing/properties.h>
+#include <thing/description.h>
+#include <thing/commands.h>
+
+static int validHouse = 0;
+static string owner;
+
+void create()
+{
+ Set( H_DOOR, "Die Haustuer ist %s.\n" );
+ Set( H_DOORSTAT, 0);
+ Set( H_DOORLSTAT, ({ "geoeffnet", "geschlossen", 0, "abgeschlossen" }));
+
+ Set( H_DOOR, SAVE, F_MODE);
+ Set( H_DOORSTAT, SAVE, F_MODE);
+ Set( H_DOORLSTAT, SAVE, F_MODE);
+
+ AddCmd( ({"schliess", "schliesse"}), "schliesse");
+ AddCmd("oeffne","oeffne");
+
+ owner = getuid(this_object());
+}
+
+varargs string long(int mode)
+{
+ return sprintf(Query(H_DOOR), Query(H_DOORLSTAT)[Query(H_DOORSTAT)]);
+}
+
+static string SetTuerOwner(string o)
+{
+ validHouse=1;
+ Set( H_DOORSTAT, D_CLOSED | D_LOCKED);
+ return owner=o;
+}
+
+int oeffne(string str)
+{
+ int doorstat;
+
+ notify_fail("Was willst Du oeffnen?\n");
+ doorstat = Query(H_DOORSTAT);
+
+ if (!id(str) && str != "tuer" && str != "haustuer")
+ return 0;
+
+ if (!(doorstat & D_CLOSED)) {
+ notify_fail(capitalize(name(WER,1))+" ist gar nicht geschlossen!\n");
+ return 0;
+ }
+ if (doorstat & D_LOCKED) {
+ notify_fail(capitalize(name(WER,1))+" ist abgeschlossen.\n");
+ return 0;
+ }
+
+ doorstat &= ~D_CLOSED;
+ Set(H_DOORSTAT, doorstat & ~D_CLOSED);
+
+ write("Du oeffnest "+name(WEN,1)+" von "+capitalize(owner)+".\n");
+ tell_room(environment(this_object()),
+ sprintf("%s oeffnet %s von %s.\n",
+ this_player()->name(WER),
+ name(WEN,1),
+ capitalize(owner) ),
+ ({this_player()}));
+ if (validHouse) {
+ tell_room(find_object(RAUMNAME(owner,0))||this_object(),
+ this_player()->name(WER)+" oeffnet "+name(WEN)+".\n",
+ ({this_player()}));
+ Save();
+ }
+ return 1;
+}
+
+private int close_door()
+{
+ if (Query(H_DOORSTAT) & D_CLOSED) {
+ notify_fail(capitalize(name(WER,1))+" ist doch schon zu!\n");
+ return 0;
+ }
+ Set(H_DOORSTAT, Query(H_DOORSTAT) | D_CLOSED);
+
+ write("Du schliesst "+name(WEN,1)+" von "+capitalize(owner)+".\n");
+ tell_room(environment(this_object()),
+ sprintf( "%s schliesst %s von %s.\n",
+ capitalize(this_player()->name(WER)),
+ name(WEN,1), capitalize(owner)),
+ ({this_player()}));
+ if (validHouse) {
+ tell_room(find_object(RAUMNAME(owner,0))||this_object(),
+ capitalize(this_player()->name(WER))+" schliesst "+name(WEN)+".\n",
+ ({this_player()}));
+ Save();
+ }
+ return 1;
+}
+
+private int lock_door()
+{
+ object tp, home;
+ string nam;
+ int doorstat;
+
+ tp = this_player();
+ nam = capitalize(tp->name(WER));
+
+ if (validHouse) {
+ call_other(RAUMNAME(owner,0), "???");
+ home = find_object(RAUMNAME(owner,0));
+
+ if (!home->allowed_check(this_player())) {
+ notify_fail("Du darfst "+name(WEN,1)+" von "+capitalize(owner)+" aber nicht abschliessen.\n");
+ return 0;
+ }
+ }
+ if ((doorstat = Query(H_DOORSTAT)) & D_LOCKED) {
+ notify_fail("Die Tuer ist abgeschlossen.\n");
+ return 0;
+ }
+ doorstat |= (D_LOCKED|D_CLOSED);
+ write("Du schliesst "+name(WEN)+" ab.\n");
+ Set(H_DOORSTAT, doorstat);
+ tell_room(environment(this_object()),
+ sprintf( "%s schliesst %s ab.\n",
+ nam,
+ (getuid(tp)==owner ?
+ (tp->QueryPossPronoun(this_object(), WEN)+" "+name(RAW)) :
+ name(WEN,1) )),
+ ({tp}));
+ if (validHouse) {
+ tell_room(home, nam+" schliesst "+name(WEN)+" ab.\n",({tp}));
+ Save();
+ }
+ return 1;
+}
+
+private int unlock_door()
+{
+ object tp, home;
+ string nam;
+ int doorstat;
+
+ tp = this_player();
+ nam = capitalize(tp->name(WER));
+
+ if (validHouse) {
+ call_other(RAUMNAME(owner,0), "???");
+ home = find_object(RAUMNAME(owner,0));
+
+ if (!home->allowed_check(this_player())) {
+ notify_fail("Du darfst "+name(WEN,1)+" von "+capitalize(owner)+" aber nicht aufschliessen.\n");
+ return 0;
+ }
+ }
+
+ if (!((doorstat = Query(H_DOORSTAT)) & D_LOCKED)) {
+ notify_fail("Die Tuer ist nicht abgeschlossen.\n");
+ return 0;
+ }
+
+ Set(H_DOORSTAT, doorstat & ~D_LOCKED);
+ write("Du schliesst "+name(WEN)+" auf.\n");
+ tell_room(environment(this_object()),
+ sprintf("%s schliesst %s auf.\n",
+ nam,
+ (getuid(tp)==owner ?
+ (tp->QueryPossPronoun(this_object(), WEN)+" "+name(RAW)) :
+ name(WEN,1) )),
+ ({tp}));
+ if(validHouse) {
+ tell_room(home,nam+" schliesst "+name(WEN)+" auf.\n",({tp}));
+ Save();
+ }
+ return 1;
+}
+
+int schliesse(string str)
+{
+ string was, wen, *s;
+
+ notify_fail("Was willst Du schliessen ?\n");
+ if (!str||str=="")
+ return 0;
+ s = old_explode(str, " ");
+ if ((was = s[<1]) == "auf" || was == "ab")
+ s = s[0..<2];
+ else
+ was = 0;
+
+ wen=implode(s, " ");
+ if (!id(wen) && wen != "tuer" && wen != "haustuer")
+ return 0;
+ if (!was || was=="")
+ return close_door();
+ switch (was)
+ {
+ case "auf": return unlock_door();
+ case "ab": return lock_door();
+ }
+ return 0;
+}
+
+// $Log: haustuer.c,v $
+// Revision 1.1.1.1 2000/08/20 20:22:42 mud
+// Ins CVS eingecheckt
+//