Virtuelle Environments abfragen.

AllVirtualEnvironments() zum Abfragen der virtuellen
Environments von virtuellen Items. Funktioniert
aequivalent zur efun all_environment().
Das erste Environment ist der Erzeuger des vItems, gefolgt
dann von entweder den weiteren virtuellen Environments oder
der richtigen Environments.

Change-Id: Ieaabf0edc108542b3f4a38881048ef2056954736
diff --git a/obj/vitem_shadow.c b/obj/vitem_shadow.c
index 6599288..fcb8e2d 100644
--- a/obj/vitem_shadow.c
+++ b/obj/vitem_shadow.c
@@ -19,9 +19,11 @@
 // Zielobjekt beschattet.
 mapping props;
 
+object cloner;
 
 protected void create()
 {
+  cloner=previous_object();
   set_next_reset(7200);
 }
 
@@ -341,4 +343,16 @@
   return ::locate_objects(complex_desc, info);
 }
 
+public object *AllVirtualEnvironments()
+{
+  if (cloner)
+  {
+    object *cloner_envs = all_environment(cloner)
+                          || cloner->AllVirtualEnvironments();
+    if (cloner_envs)
+      return ({cloner}) + cloner_envs;
+    return ({cloner});
+  }
+  return 0;
+}