diff --git a/doc/sphinx/man/lfun/AddSpecialDetail b/doc/sphinx/man/lfun/AddSpecialDetail
new file mode 100644
index 0000000..3405eec
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddSpecialDetail
@@ -0,0 +1,87 @@
+
+AddSpecialDetail()
+******************
+
+
+VERALTET AddSpecialDetail()
+===========================
+
+
+FUNKTION
+========
+
+   void AddSpecialDetail(string|string* keys, string func);
+
+
+DEFINIERT IN
+============
+
+   /std/thing/description.c
+
+
+ARGUMENTE
+=========
+
+   keys
+     String oder Array von Strings mit den Namen der Details.
+   func
+     String mit dem Namen der Funktion, die zur Auswertung aufgerufen
+     wird.
+
+
+BESCHREIBUNG
+============
+
+   Es wird ein Detail hinzugefuegt, dessen Inhalt nicht von vornherein
+   feststeht, sondern von aeusseren Bedingungen abhaengt. Zu diesem
+   Zweck wird immer, wenn dieses Detail untersucht wird, die Funktion
+   func aufgerufen, um den aktuellen Zustand des Details zu bestimmen.
+   Der Funktion wird als Parameter das Schluesselwort uebergeben, mit
+   dem das Detail untersucht wurde.
+
+   VERALTET: Bitte AddDetail mit Closure benutzen.
+
+
+BEISPIELE
+=========
+
+   Ein zustandsabhaengiges Detail:
+
+     int hebel_betaetigt;
+     string hebel(string key);
+     ...
+     // ALT: AddSpecialDetail( ({ "hebel", "schalter" }), "hebel" );
+     AddDetail(({ "hebel", "schalter" }), #'hebel );
+     ...
+     string hebel(string key)
+     { if(hebel_betaetigt)
+         return "Der "+capitalize(key)+" steht auf EIN.\n";
+       else
+         return "Der "+capitalize(key)+" steht auf AUS.\n";
+     }
+
+   Man erhaelt verschiedene Ergebnisse beim Untersuchen, je nachdem
+   ob das Flag hebel_betaetigt gesetzt ist oder nicht.
+
+
+BEMERKUNG
+=========
+
+   Intern werden Details und SpecialDetails im selben Mapping
+   verwaltet.
+   Man kann statt dieser Funktion deshalb auch AddDetail mit Closures
+   nutzen.
+
+
+SIEHE AUCH
+==========
+
+   Setzen :   AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+   Veraltet:  RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: GetDetail(), break_string()
+
+20.01.2015, Zesstra
