serlaube: statt zweities die Familie erlauben

Statt der Moeglichkeit, Zweities zu erlauben, kann man nun
seine Familie erlauben.

Change-Id: I80a3c51be06b7bd7723f6c5b4e259a996c19987a
diff --git a/d/seher/haeuser/moebel/schluesselbrett.c b/d/seher/haeuser/moebel/schluesselbrett.c
index 93bace6..f39f04e 100644
--- a/d/seher/haeuser/moebel/schluesselbrett.c
+++ b/d/seher/haeuser/moebel/schluesselbrett.c
@@ -358,7 +358,7 @@
     CAP(QueryPronoun(WER))+" verfuegt ueber folgende Kommandos:")+
     "----------------------------------------------------------------------"
     "-------\n"
-    "serlaube [schluessel]brett [spielername|\"hausfreunde\"|\"zweities\"]\n"
+    "serlaube [schluessel]brett [spielername|\"hausfreunde\"|\"familie\"]\n"
     "  Erlaubt Personen, "+name(WEN,1)+" mitzubenutzen.\n"
     "  serlaube ohne Angabe eines Arguments listet alle Personen mit Zugriff "
       "auf\n  "+name(WEN,1)+" auf.\n\n"
@@ -420,17 +420,18 @@
     "-------------------------------------------------------------------"
     "----------\n";
 
-  if( zweitieerlaubnis!="" ) {
-    if( zweitieerlaubnis==geteuid(TP) )
-      str += BS("Alle Deine Zweities duerfen "+name(WEN,1)+" mitbenutzen.");
-    else
-      str += BS("Alle Zweities von "+CAP(zweitieerlaubnis)+" duerfen "
-        +name(WEN,1)+" mitbenutzen.");
-    str +=
-      "-------------------------------------------------------------------"
-      "----------\n";
+  if(familie)
+  {
+  if( "/secure/zweities"->QueryFamilie(TP) == familie)
+    str+=BS("Alle Deine Familienmitglieder duerfen "
+             +name(WEN,1)+" oeffnen/schliessen.");
+  else
+    str+=BS( "Alle Familienmitglieder von "+CAP(explode(familie,"_")[0])
+             +" duerfen " + name(WEN,1) + " oeffnen/schliessen.");
+  str+="-------------------------------------------------------------------"
+        "----------\n";
   }
-  
+
   strs=QueryProp("cnt_erlaubnis");
 
   if(sizeof(strs)) {
@@ -445,7 +446,9 @@
   str +=
     "==================================================================="
     "==========\n";
-  
+
+  write(str);
+
   return 1;
 }
 
diff --git a/d/seher/haeuser/moebel/swift_std_container.c b/d/seher/haeuser/moebel/swift_std_container.c
index 6d0a456..939646f 100644
--- a/d/seher/haeuser/moebel/swift_std_container.c
+++ b/d/seher/haeuser/moebel/swift_std_container.c
@@ -34,11 +34,11 @@
 
 #include "schrankladen.h"
 
-#define VERSION_STD "9"
+#define VERSION_STD "10"
 
 nosave int hauserlaubnis;
-nosave string zweitieerlaubnis;
-nosave string *erlaubnis;
+nosave string familie;
+nosave string *erlaubnis = ({});
 
 int erlaubt();
 
@@ -50,15 +50,10 @@
   SetProp(P_CNT_STATUS,CNT_STATUS_CLOSED);
   SetProp(P_TRANSPARENT, 0);
   SetProp(P_LOG_FILE,"seleven/schraenker"); // Seleven 06.04.2006
-  SetProp("cnt_hausfreunde", ({}) );
-  SetProp("cnt_erlaubnis", ({}) );
-  SetProp("cnt_zweitieerlaubnis", "" );
+  //TODO: Die ganzen cnt_* Props sollten besser eindeutige Praefixe sein,
+  //nicht das generische cnt_, was auch die Mudlib verwendet. :-( (Zesstra)
   SetProp("cnt_version_std", VERSION_STD);
 
-  hauserlaubnis=0;
-  zweitieerlaubnis="";
-  erlaubnis=({});
-
   set_next_reset(3600); // 1 x pro Std. Reset!
 
   AddCmd(({"oeffne"}), "oeffnen");
@@ -67,7 +62,6 @@
   AddCmd(({"skommandos"}), "skommandos");
   AddCmd(({"verschieb", "verschiebe"}), "verschieben");
   AddCmd(({"zertruemmer", "zertruemmere"}), "zertruemmern");
-  //Seleven 07.12.2005:
   AddCmd(({"sverstecke","sversteck"}),"verstecken");
   AddCmd(({"shole","shol"}),"zeigen");
 }
@@ -80,13 +74,42 @@
   return CAP(to_string(ETO->QueryOwner()));    // z.B.: Swift
 }
 
-
-
 static string QueryTP()
 {
   return CAP(geteuid(TP));  // z.B.: Swift
 }
 
+// Query- und Setmethoden fuer die internen Variablen
+static string _query_cnt_familie()
+{
+  return familie;
+}
+static string _set_cnt_familie(string f)
+{
+  familie = f;
+  return familie;
+}
+
+static string *_query_cnt_erlaubnis()
+{
+  return erlaubnis;
+}
+static string *_set_cnt_erlaubnis(string *val)
+{
+  erlaubnis = val;
+  return erlaubnis;
+}
+
+static int _query_cnt_hausfreunde()
+{
+  return hauserlaubnis;
+}
+static int _set_cnt_hausfreunde(int val)
+{
+  hauserlaubnis = val;
+  return hauserlaubnis;
+}
+
 int oeffnen(string str)
 {
   notify_fail("Was moechtest Du oeffnen?\n");
@@ -156,9 +179,9 @@
         QueryTP()) != -1 )                // Hausfreunde
       return 1;
   }
-  if(zweitieerlaubnis!="")                // Zweities
+  if(familie)                // Zweities
   {
-    if( TP->QueryProp(P_SECOND) == zweitieerlaubnis )
+    if( "/secure/zweities"->QueryFamilie(TP) == familie )
       return 1;
   }
   if( sizeof(erlaubnis) )
@@ -208,15 +231,18 @@
   else
     write(BS("Die Freunde Deines Hauses duerfen "+name(WEN,1)
       +" nicht oeffnen/schliessen."));
-  write("-----------------------------------------------------------------------------\n");
-  if(zweitieerlaubnis!="")
+  write("-------------------------------------------------------------------"
+        "----------\n");
+  if(familie)
   {
-  if( zweitieerlaubnis==geteuid(TP) )
-    write(BS( "Alle Deine Zweities duerfen "+name(WEN,1)+" oeffnen/schliessen."));
+  if( "/secure/zweities"->QueryFamilie(TP) == familie)
+    write(BS("Alle Deine Familienmitglieder duerfen "
+             +name(WEN,1)+" oeffnen/schliessen."));
   else
-    write(BS( "Alle Zweities von "+CAP(zweitieerlaubnis)+" duerfen "+name(WEN,1)
-      +" oeffnen/schliessen."));
-  write("-----------------------------------------------------------------------------\n");
+    write(BS( "Alle Familienmitglieder von "+CAP(explode(familie,"_")[0])
+             +" duerfen " + name(WEN,1) + " oeffnen/schliessen."));
+  write("-------------------------------------------------------------------"
+        "----------\n");
   }
   strs=QueryProp("cnt_erlaubnis");
   if(sizeof(strs))
@@ -242,7 +268,7 @@
 int erlaubnis(string str)
 {
   string *strs,wen,nf_str;
-  nf_str="Syntax: serlaube [Objekt-Id] [Spielername|\"hausfreunde\"|\"zweities\"]\n"
+  nf_str="Syntax: serlaube [Objekt-Id] [Spielername|\"hausfreunde\"|\"familie\"]\n"
         +"Bsp.:   serlaube "+QueryProp(P_IDS)[1]+" hausfreunde\n"
         +"        serlaube "+QueryProp(P_IDS)[1]+" zweities\n"
         +"        serlaube "+QueryProp(P_IDS)[1]+" geordi\n"
@@ -291,32 +317,32 @@
     if(hauserlaubnis)
     {
       hauserlaubnis=0;
-      SetProp("cnt_hausfreunde", ({}) );
+      write( BS("Die Freunde Deines Seherhauses duerfen "+name(WEN,1)
+                +" jetzt nicht mehr oeffnen/schliessen."));
     }
     else
     {
       hauserlaubnis=1;
-      SetProp("cnt_hausfreunde", SHVERWALTER->HausProp(LOWER(QueryHausbesitzer()), 2) );
+      write( BS("Die Freunde Deines Seherhauses duerfen "+name(WEN,1)
+                +" jetzt oeffnen/schliessen."));
     }
-    write( BS("Die Freunde Deines Seherhauses duerfen "+name(WEN,1)+" jetzt "
-      +(!hauserlaubnis?"nicht mehr ":"")+"oeffnen/schliessen."));
     return 1;
   }
-  if(wen=="zweities")
+  if(wen=="familie")
   {
-    if(zweitieerlaubnis!="")                        // Zweities erlaubt?
-      zweitieerlaubnis="";                          //   dann verbieten!
-    else                                            // ansonsten:
+    if(familie)                        // Zweities erlaubt?
     {
-      if( TP->QueryProp(P_SECOND) )                 // Selbst ein Zweitie?
-        zweitieerlaubnis=LOWER(TP->QueryProp(P_SECOND)); // Die Zweities vom Erstie erlauben!
-      else                                          // sonst:
-        zweitieerlaubnis=geteuid(TP);               //   Eigene Ersties erlauben!
+      familie = 0;                     //   dann verbieten!
+      write("Die Familienerlaubnis wurde geloescht.\n");
     }
-    SetProp("cnt_zweitieerlaubnis", zweitieerlaubnis );
-    if(zweitieerlaubnis!="")
-      write( BS(CAP(zweitieerlaubnis)+"'s Zweities duerfen "+name(WEN,1)+" jetzt "
-        +(zweitieerlaubnis==""?"nicht mehr ":"")+"oeffnen/schliessen."));
+    else                               // ansonsten neu erlauben
+    {
+      familie = "/secure/zweities"->QueryFamilie(TP);
+      write(BS("Alle Mitglieder der Familie "
+               +CAP(explode(familie,"_")[0])
+               +" duerfen "+name(WEN,1)+" jetzt oeffnen/schliessen."));
+
+    }
     return 1;
   }
   if( master()->find_userinfo(wen)) // Spieler gibt es auch!
@@ -357,18 +383,16 @@
     +"  oeffnet "+name(WEN,1)+"\n\n"
     +"schliesse [Objekt-Id]\n"
     +"  schliesst "+name(WEN,1)+"\n\n"
-    +"serlaube [Objekt-Id] [Spielername|\"hausfreunde\"|\"zweities\"]\n"
+    +"serlaube [Objekt-Id] [Spielername|\"hausfreunde\"|\"familie\"]\n"
     +"  Erlaubt Personen, "+name(WEN,1)+" mitzubenutzen.\n"
     +"  serlaube + Objekt-Id (ohne Spielername/hausfreunde)\n"
     +"  listet alle Personen mit Zugriff auf "+name(WEN,1)+"\n\n"
     +"verschiebe [Objekt-Id] nach [Ausgang]\n"
     +"  Damit kannst Du "+name(WEN,1)+" innerhalb Deines Seherhauses verschieben.\n\n"
-  //Seleven 07.12.2005
     +"sverstecke [Objekt-Id]\n"
     +"  Damit machst Du "+name(WEN,1)+" unsichtbar.\n"
     +"shole [Objekt-Id] hervor\n"
     +"  Damit machst Du "+name(WEN,1)+" wieder sichtbar.\n"
-  // Bis hier
     +"zertruemmer [Objekt-Id]\n"
     +"  Damit zerstoerst Du "+name(WEN,1)+".\n\n");
 
@@ -452,21 +476,6 @@
   return 1;
 }
 
-int props2vars()  // Fuer die Update-Funktion des Schrankmasters
-{
-  zweitieerlaubnis=QueryProp("cnt_zweitieerlaubnis")||"";
-  erlaubnis=QueryProp("cnt_erlaubnis")||({});
-  if( sizeof(QueryProp("cnt_hausfreunde")) )
-    hauserlaubnis=1;
-  else
-    hauserlaubnis=0;
-  if( QueryProp(P_CNT_STATUS) == CNT_STATUS_OPEN)
-    SetProp(P_TRANSPARENT, 1);
-  else
-    SetProp(P_TRANSPARENT, 0);
-  return 1;
-}
-
 void reset()
 {
   set_next_reset(3600); // 1 x pro Std. Reset!
@@ -491,11 +500,11 @@
     return 0;
   object cnt_neu=clone_object(load_name(ME));  // Neuen Schrank clonen
   cnt_neu->move( environment(), M_NOCHECK );  // In selben Raum wie alten schieben...
-  cnt_neu->SetProp("cnt_status", QueryProp("cnt_status") );
+  cnt_neu->SetProp(P_CNT_STATUS, QueryProp(P_CNT_STATUS) );
+  cnt_neu->SetProp(P_TRANSPARENT, QueryProp(P_TRANSPARENT) );
   cnt_neu->SetProp("cnt_hausfreunde", QueryProp("cnt_hausfreunde") );
   cnt_neu->SetProp("cnt_erlaubnis", QueryProp("cnt_erlaubnis") );
-  cnt_neu->SetProp("cnt_zweitieerlaubnis", QueryProp("cnt_zweitieerlaubnis") );
-  cnt_neu->props2vars();  // Schrank liest gesetzte Props aus in eigene Vars
+  cnt_neu->SetProp("cnt_familie", QueryProp("cnt_familie") );
   // Inventar bewegen
   foreach(object inv: all_inventory(this_object()))
   {