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
+//