diff --git a/doc/sphinx/man/lfun/SetSpellFatigue b/doc/sphinx/man/lfun/SetSpellFatigue
new file mode 100644
index 0000000..f2c5861
--- /dev/null
+++ b/doc/sphinx/man/lfun/SetSpellFatigue
@@ -0,0 +1,99 @@
+
+SetSpellFatigue()
+*****************
+
+
+FUNKTION
+========
+
+   public varargs int SetSpellFatigue(int duration, string key)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skills.c
+   /std/player/skills.c
+   /sys/living/skills.h
+
+
+ARGUMENTE
+=========
+
+   int duration: Wie lang soll die Spruchermuedung andauern?
+   string key  : Eindeutiger Name des Spruches, einer Gruppe von Spruechen
+                 oder 0 fuer die globale Spruchermuedung.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion dient zum Verwalten von individuellen Spruchermuedungen
+   (Spellfatigue, Spruchsperren).
+   Hiermit lassen sich unabhaengige Ermuedungen/Sperren fuer einzelne
+   Sprueche oder Gruppen von Spruechen gestalten.
+
+   <duration> ist die Zeit (in Sekunden), welche die Spruchermuedung
+   anhalten soll (nicht die Endzeit).
+
+   Wird <key> nicht angegeben oder ist 0, wird die globale Spruchsperre
+   gesetzt (identisch zu der Property P_NEXT_SPELL_TIME), anderenfalls die
+   unter <key> gespeicherte Spruchermuedung.
+   Setzt man einen Eintrag ohne Angabe von <key> bedeutet dies damit auch,
+   dass der Wert von P_NEXT_SPELL_TIME geaendert wird.
+
+
+RUeCKGABEWERT
+=============
+
+   -1    Der Eintrag <key> ist noch nicht abgelaufen, es wurde _keine_
+         neue Spruchermuedung/-Sperre gespeichert.
+
+   >0    Eintrag wurde gespeichert, Rueckgabewert ist die Zeit, zu der die
+         Sperre ablaeuft.
+
+
+BEISPIELE
+=========
+
+   Ein Spell gehoert zu einer Gruppe von Spells mit dem Namen 'extrasuess'.
+   Er darf nur ausgefuehrt werden, wenn seit 5s kein anderer Spruch aus der
+   Gruppe ausgefuehrt wurde.
+   if (CalculateSpellSuccess(...) > x) {
+     // Spellfatigue setzen (und Erfolg pruefen!)
+     if (ob->SetSpellFatigue(5, "extrasuess") > -1) {
+       tell_object(ob, "Du fuetterst " + enemy->Name(WEN) + " mit einem "
+         "Stueck suesser Schokotorte.\n");
+       ...
+     }
+     else {
+       // Sauerei! Zu ermuedet fuer diesen Spruch. Fehlermdeldung ...
+     }
+   }
+   Dieses setzt natuerlich voraus, dass alle anderen Sprueche der Gruppe
+   "extrasuess" den gleichen <key> pruefen und setzen.
+   (Will man vor CalculateSpellSuccess() wissen, ob der Spruch ueberhaupt
+    gewirkt werden duerfte, sollte man hierzu dann CheckSpellFatigue()
+    verwenden.)
+
+
+BEMERKUNGEN
+===========
+
+   Die genauen Zeitdauern koennen von Spielern beeinflusst werden, sie
+   unterliegen der jeweiligen Einstellung von 'spruchermuedung', d.h. koennen
+   auf volle 2s aufgerundet werden. (Dies ist nicht der Fall bei NPC.)
+   Auch wenn diese Funktion zum Verwalten von beliebigen Zeitsperren genutzt
+   werden koennen, beschraenkt euch bitte auf Spruchermuedungen und benutzt
+   ansonsten check_and_update_timed_key(). Falls ihr diesbzgl. weitere/andere
+   Wuensche habt, sprecht den/die Mudlib-EM an.
+
+
+SIEHE AUCH
+==========
+
+   CheckSpellFatigue(L), DeleteSpellFatigue(L)
+   P_NEXT_SPELL_TIME
+   spruchermuedung
+
+27.03.2010, Zesstra
