diff --git a/doc/sphinx/lfun/AddVItem.rst b/doc/sphinx/lfun/AddVItem.rst
new file mode 100644
index 0000000..c76a070
--- /dev/null
+++ b/doc/sphinx/lfun/AddVItem.rst
@@ -0,0 +1,181 @@
+AddvItem()
+==========
+
+FUNKTION
+--------
+
+  public varargs void AddvItem(string key, int refresh, mapping shadowprops,
+                               string path, mapping props)
+
+
+DEFINIERT IN
+------------
+
+  /std/container/vitems.c
+
+ARGUMENTE
+---------
+
+  key
+    Eindeutige Bezeichnung des vItems und mit dieser wieder loeschbar. Das
+    vItem wird im Raum auch unter dieser ID ansprechbar sein.
+  refresh
+    Refresheinstellungen des vItems, nachdem es mitgenommen wurde
+  shadowprops
+    Properties des vItems *im Raum* (optional, wenn <path> genutzt)
+  path
+    Vorlage/Templat des vItems und Blueprint fuer Clones (optional)
+  props
+    Properties, welche in Clones von der Vorlage gesetzt werden (optional)
+
+BESCHREIBUNG
+------------
+
+  Dem Container/Raum wird ein virtuelles Item hinzugefuegt. Dieses ist
+  kein im Container vorhandenes reales Objekt, kann aber (weitgehend) wie ein
+  solches untersucht und behandelt werden.
+
+  Falls das vItem ein reales Objekt als Templat hat (d.h. <path> angegeben
+  wird), kann das vItem standardmaessig mitgenommen werden, es wird dafuer
+  automatisch erzeugt. (Das Mitnehmen ist aber wie immer mit P_NOGET
+  verhinderbar.)
+
+  Das Mapping <shadowprops> enthaelt die Properties, welche das vItem
+  im Container beschreiben. Hat das vItem ein Templat, werden alle
+  Properties, welche *nicht* in <shadowprops> enthalten sind, aus dem
+  Templat entnommen. Auf diese Weise kann man einem Objekt im Raum
+  unterschiedliche Eigenschaften geben.
+
+  Wird ein vItem mitgenommen, wird <path> geclont und die im Argument <props>
+  angegebenen Properties in ihm gesetzt. Auf diese Weise kann man das
+  genommene Objekt noch individuell konfigurieren.
+
+  Zu beachten ist: in <shadowprops> enthaltene Properties *ersetzen* (nicht
+  ergaenzen) im Regelfall diejenigen im Templat *und* in <props>. In <props>
+  enthaltene Properties *ersetzen* wiederum diejenigen im Templat.
+  Ausnahmen sind Properties, welche ein Mapping oder ein Array enthalten:
+  Deren Inhalt wird *hinzugefuegt*. Dies betrifft insbesondere die Properties:
+  P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS, P_IDS,
+  P_CLASS, P_ADJECTIVES.
+  Will man dies nicht, kann man den Propertynamen so angeben:
+  VI_PROP_RESET(P_DETAILS), was dazu fuehrt, dass P_DETAILS vor dem
+  Hinzufuegen geloescht wird.
+
+  Nachdem ein vItem mitgenommen wurde, ist es im Raum nicht mehr ansprechbar.
+  Es wird es je nach <refresh> wieder verfuegbar:
+
+    - VI_REFRESH_NONE
+      Es wird erst nach dem Neuladen/Neuerstellen des Containers wieder
+      verfuegbar.
+    - VI_REFRESH_ALWAYS
+      Es wird mit dem naechsten Reset wieder verfuegbar. *Vorsicht!*
+    - VI_REFRESH_REMOVE
+      Es wird mit dem naechsten Reset wieder verfuegbar, wenn das geclonte
+      Objekt nicht mehr im Raum ist.
+    - VI_REFRESH_DESTRUCT
+      Es wird mit dem naechsten Reset wieder verfuegbar, wenn das geclonte
+      Objekt nicht mehr existiert.
+    - VI_REFRESH_MOVE_HOME
+      Das geclonte Objekt wird im naechsten Reset 'zurueckgeholt', d.h.
+      zerstoert und das vItem ist wieder im Raum verfuegbar.
+    - VI_REFRESH_INSTANT
+      Es ist abweichend vom Normalverhalten sofort nach Mitnehmen wieder
+      verfuegbar und mitnehmbar. **Vorsicht!**
+
+
+BEMERKUNGEN
+-----------
+
+  * vItems koennen geschachtelt werden, falls es sich um vItems mit Vorlagen
+    handelt.
+  * vItems sind verhaeltnismaessig aufwendig. Sie sollten nur verwendet
+    werden, wenn sie einen Mehrwert ggue. einfachen Details haben. Es bringt
+    nichts, jedes Detail gegen ein vItem zu ersetzen.
+  * Es kann aber praktisch sein, komplexe Detailbaeume an einem vItem zu
+    verankern, wenn man diesen Detailbaum ein- oder ausblenden will.
+
+BEISPIELE
+---------
+
+  .. code-block:: pike
+
+  // Ein einfaches VItem ohne Templat, nicht nehmbar
+  AddVItem("regal", VI_REFRESH_NONE,
+           ([P_LONG: "Das Wandregal hat 3 schwarze Bretter.",
+             P_GENDER: NEUTER,
+             P_IDS: ({"wandregal"}), // "regal" hat es automatisch
+             P_DETAILS: ([
+               "bretter": "Die Regelbretter sind ganz zerkratzt.\n",
+               "kratzer": "Da war wohl jemand achtlos.\n"
+             ]),
+             P_TOUCH_DETAILS: ([
+               SENSE_DEFAULT: "Du erspuerste tiefe Kratzer.\n",
+               "kratzer": Oha, die Kratzer sind ganz schoen tief!\n",
+             ]),
+             P_READ_DETAILS: ([SENSE_DEFAULT:
+               "Auf dem Regal ist eingraviert: 'Dies ist ein vItem-Test.'\n"
+             ]),
+             P_SMELLS: ([SENSE_DEFAULT:
+               "Das Regal riecht gar nicht. Wirklich nicht.\n"]),
+           ]) );
+
+  // Ein VItem mit Templat, nehmbar
+  AddVItem("schaufel", VI_REFRESH_REMOVE, 0, "/items/schaufel");
+
+  // Ein VItem mit Templat, nicht nehmbar
+  AddVItem("schaufel", VI_REFRESH_NONE, ([P_NOGET:1]), "/items/schaufel");
+
+  // Ein VItem, welches P_DETAIL komplett ueberschreibt und alle Details
+  // loescht.
+  AddVItem("schaufel", VI_REFRESH_REMOVE,
+           ([VI_PROP_RESET(P_DETAILS): ([]) ]),
+           "/items/schaufel");
+
+  // Eine Zwiebel im Raum, eine andere Beschreibung hat als die im
+  // Spielerinventar
+  AddVItem("zwiebel", VI_REFRESH_REMOVE,
+           ([P_LONG: "Die Zwiebel sieht etwas vertrocknet aus.\n",
+             P_DETAILS: ([ ({"blatt","blaetter"}): "Sie haengen herab.\n"]),
+           ]),
+           "/items/kraeuter/zwiebel",
+           // Die hier gesammelte Zwiebel ist besonders toll
+           ([P_ZWIEBEL_TYP: EXTRA_STARK]) );
+
+  // Eine modifizierte Eisenstange
+  AddVItem("eisstange", VI_REFRESH_REMOVE,
+           0,
+           "/items/eisenstange",
+           ([P_LONG:BS("Diese Eisstange eignet sich hervorragend dazu, "
+                       "mit ihr auf jemanden einzuschlagen.\n"),
+             P_SHORT:"Ein Eisstange.",
+             P_NAME: "Eisstange",
+             VI_PROP_RESET(P_IDS): ({"stange", "eisstange"}),
+             VI_PROP_RESET(P_MATERIAL): ([MAT_ICE: 100]),
+             VI_PROP_RESET(P_DAM_TYPE): ({DT_BLUDGEON, DT_COLD}),
+             P_WEIGHT: 5000,
+             P_VALUE: 500,
+             VI_PROP_RESET(P_SMELLS): ([SENSE_DEFAULT:
+               "Das Eis riecht nach Vanille!\n"]),
+            ])
+          );
+
+  // Ein Ueberraschungs-Ei - verwandelt sich beim Nehmen in was anderes.
+  // (Keine tolle Idee, soll nur zeigen, dass es geht.)
+  AddVItem("ue-ei", VI_REFRESH_REMOVE,
+         ([P_SHORT:"Ein Ue-Ei.",
+           P_LONG: BS("Da liegt tatsaechlich ein Ue-Ei auf dem Boden. "
+             "Wenn man es nimmt, verwandelt es sich in etwas anderes."),
+           VI_PROP_RESET(P_IDS): ({"ue-ei","ei"}),
+           ]),
+         "/items/schaufel"
+        );
+
+
+SIEHE AUCH
+----------
+
+  :doc:`RemoveVItem`, :doc:`AddItem`, :doc:`RemoveItem`
+  :doc:`../std/vitems`
+
+Last modified: 03.04.2019, Zesstra
+
