Check auf multiples create() verlegt

Da das nur nur in /std/thing relevant ist, wird der Check
nun in description.c gemacht.
Das hat den Vorteil, dass dann auch ein Ueberschreiben
von P_CLONER mit neuen Daten vermieden wird, was nun
gar nicht sein darf. ;-)

Change-Id: Iabce9c53cabb38641b9e8e1b373423c0084442b4
diff --git a/std/thing.c b/std/thing.c
index 6198675..908b6c1 100644
--- a/std/thing.c
+++ b/std/thing.c
@@ -23,13 +23,6 @@
 {
   seteuid(getuid());
   properties::create();
-  // Wenn das Objekt jetzt schon ein gueltiges P_CLONER hat, wurde create()
-  // zweimal gerufen. Dies ist ein Fehler und vermutlich ist das Objekt
-  // jetzt kaputt.
-  if (stringp(QueryProp(P_CLONER)))
-      catch(raise_error("create() wurde ein zweites Mal gerufen. Dieses "
-            "Objekt ist nun vermutlich kaputt.\n"); publish);
-
   light::create();
   commands::create();
   description::create();
diff --git a/std/thing/description.c b/std/thing/description.c
index afbb16e..b5db0d8 100644
--- a/std/thing/description.c
+++ b/std/thing/description.c
@@ -68,25 +68,36 @@
   // Aenderungen an dieser Prop sind tabu.
   Set( P_CLONE_TIME, NOSETMETHOD|SECURED, F_MODE_AS );
 
-  // Id des Cloners und des Besitzers kommen nach P_CLONER
-  if (objectp( tp=this_interactive()||this_player() ))
+  // Wenn das Objekt bereits ein P_CLONER hat, wurde create() zweimal gerufen.
+  // Dies ist ein Fehler und vermutlich ist das Objekt jetzt kaputt. In jedem
+  // Fall wird das alte P_CLONER nicht ueberschrieben.
+  if (Query(P_CLONER, F_MODE))
   {
-    tpid=geteuid(tp);
-    if (!(tpid=geteuid(tp))) tpid=getuid(tp);
+      catch(raise_error("create() wurde ein zweites Mal gerufen. Dieses "
+            "Objekt ist nun vermutlich kaputt.\n"); publish);
   }
   else
-    tpid="UNKNOWN";
-
-  if (previous_object())
   {
-    if (!(poid = geteuid(previous_object())))
-      poid = getuid(previous_object());
-  }
-  else
-    poid="UNKNOWN";
+    // Id des Cloners und des Besitzers kommen nach P_CLONER
+    if (objectp( tp=this_interactive()||this_player() ))
+    {
+      tpid=geteuid(tp);
+      if (!(tpid=geteuid(tp))) tpid=getuid(tp);
+    }
+    else
+      tpid="UNKNOWN";
 
-  Set( P_CLONER, (poid != tpid ? poid+":"+tpid: tpid) );
-  Set( P_CLONER, NOSETMETHOD|SECURED, F_MODE_AS );
+    if (previous_object())
+    {
+      if (!(poid = geteuid(previous_object())))
+        poid = getuid(previous_object());
+    }
+    else
+      poid="UNKNOWN";
+
+    Set( P_CLONER, (poid != tpid ? poid+":"+tpid: tpid) );
+    Set( P_CLONER, NOSETMETHOD|SECURED, F_MODE_AS );
+  }
 
   // Gibt es FPs ?
   explore = (mixed *)EPMASTER->QueryExplore();