diff --git a/doc/efun/inherit_list b/doc/efun/inherit_list
new file mode 100644
index 0000000..97c738e
--- /dev/null
+++ b/doc/efun/inherit_list
@@ -0,0 +1,60 @@
+SYNOPSIS
+        #include <sys/inherit_list.h>
+
+        string *inherit_list();
+        string *inherit_list(object ob);
+        string *inherit_list(object ob, int flags);
+
+BESCHREIBUNG
+        Liefert die Namen von allen Dateien, die von <ob> geerbt werden,
+        inklusive <ob>s eigener Dateiname. Wird <ob> nicht angegeben, wird
+        standarndmaessig das aktuelle Objekt verwendet.
+
+        Der Wert von <flags> bestimmt die Struktur des Rueckgabewertes:
+          - <flag> = INHLIST_FLAT (0, default):
+            inherit_list() liefert ein Array von Dateinamen, beginnend mit dem
+            Namen von <ob> selbst, gefolgt von den Namen aller geerbten
+            Objekten.
+          - <flag> = INHLIST_TREE (1):
+            inherit_list() liefert ein Array von Dateinamen, beginnend mit dem
+            Namen von <ob> selbst. Wenn ein geerbte File selbst keine Files
+            erbt, wird sein Name direkt in das Ergebnis eingetragen. Wenn ein
+            geerbtes File selbst Files erbt, wird ein Untervektor erzeugt, in
+            dem die Inherits eingetragen werden. Der Untervektor hat die
+            gleiche Struktur wie der Haupvektor.
+          - <flag> = INHLIST_TAG_VIRTUAL (2):
+            Alle Namen im Ergebnisvektor haben ein leeres Tag "  " (zwei
+            Leerschlaege) fuer normale Inherits und "v " fuer virtuelle
+            Inherits als Praefix vorangestellt.
+
+        Alle Flags koennen mit einem binaeren Oder | verbunden werden, wobei
+        INHLIST_FLAT und INHLIST_TREE sich gegenseitig ausschliessen.
+
+        Wenn ein Objekt, inklusive <ob>, einem replace_programm() unterworfen
+        war, spiegeln die gelieferten Dateinamen das effektiv aktive Programm
+        wider.
+
+        Die Inheritpfade, die geliefert werden, beginnen immer mit '/'
+        (absolute Pfade), auch wenn der Treiber im COMPAT Modus laeuft.
+
+BEISPIEL
+        Gegeben folgende Vererbungsstruktur:
+
+            / c - d
+          a
+            \ b
+
+        Wobei d virtuell geerbt wird, ergeben sich folgende Resultate:
+
+            inherit_list(a) -> ({ "a", "c", "b", "d" })
+            inherit_list(c) -> ({ "c", "d" })
+            inherit_list(a, 1) -> ({ "a", ({ "c", "d" }), "b" })
+            inherit_list(a, 3) -> ({ "  a", ({ " c", "v d" }), "  b" })
+
+AENDERUNGEN
+        Vor 3.2.8, begannen die gelieferten Namen niemals mit einem '/'.
+        LDMud 3.2.9 fuehrte die Baumstruktur (_TREE) und Tags fuer virtuelle
+            Inherits ("v ") ein.
+
+SIEHE AUCH
+        debug_info(E), include_list(E)
