diff --git a/doc/sphinx/man/lfun/drink_alcohol b/doc/sphinx/man/lfun/drink_alcohol
new file mode 100644
index 0000000..01d0a77
--- /dev/null
+++ b/doc/sphinx/man/lfun/drink_alcohol
@@ -0,0 +1,112 @@
+
+drink_alcohol()
+***************
+
+
+FUNKTION
+========
+
+   public varargs int drink_alcohol(int strength, int testonly, string mytext)
+
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   strength: wird zur aktuellen Saettigung P_ALCOHOL dazu addiert
+   testonly: Ist das Flag gesetzt, wird dem Spieler kein ALCOHOL zugefuehrt.
+             Darf nur zum Testen der Heilstelle verwendet werden und muss
+             im normalen Betrieb auf '0' stehen!
+   mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
+           darf sich hier was nettes ausdenken.
+           Achtung: Das unterdrueckt nicht die "Nuechtern"-Meldung, die bei
+           negativem strength auftreten kann, wenn P_ALCOHOL wieder 0 ist.
+
+
+BESCHREIBUNG
+============
+
+   Es wird geprueft, ob dem Spieler der angegebene Wert fuer 'strength'
+   auf seine aktuelle P_ALCOHOL addiert werden kann oder nicht. Falls
+   das moeglich ist und testonly = 0, wird P_ALCOHOL entsprechend
+   aktualisiert.
+
+   Sollen neben P_ALCOHOL noch weitere Props manipuliert werden - bspw. zur
+   Heilung eines Lebewesens - bietet sich die Funktion consume() an.
+
+
+RUECKGABEWERT
+=============
+
+   0 bei [potentiellem] Misserfolg (strength + P_ALCOHOL > P_MAX_ALCOHOL)
+   1 bei [potentiellem] Erfolg
+   * potentiell bezieht sich hier auf Nutzung mit 'testonly' != 0
+
+
+BEMERKUNG
+=========
+
+   drink_alocohol() bitte anstatt eigener Manipulationen von P_ALCOHOL und
+   P_MAX_ALCOHOL verwenden.
+
+   Achtung: Immer erst VOR einer Heilung ausfuehren und bei Erfolg heilen.
+
+   Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
+   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   werden.
+
+
+BEISPIEL
+========
+
+   int heilstelle() {
+     if(this_player()->drink_alcohol(10, 0,
+                                     "Du prustest in den Schnaps. "
+                                     "Der passt nicht mehr rein.\n")) {
+       // Platz fuer 10 "Alkohol" war noch, diese sind jetzt bereits addiert
+       // Nachricht an den Spieler:
+       tell_object(this_player(),
+                   break_string("Du trinkst den Schnaps aus.", 78));
+
+       // Nachricht an andere Livings im Raum
+       object ob = first_inventory(environment(this_player()));
+       do {
+         if(living(ob) && ob!=this_player())
+           ob->ReceiveMsg(this_player()->Name()+" trinkt einen Schnaps aus.",
+                          MT_LOOK|MT_LISTEN,
+                          MA_DRINK);
+         ob = next_inventory(ob);
+       } while(ob);
+
+       // Rassenabhaengige Heilung: Sofort oder in Schritten
+       // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
+       if(this_player()->QueryProp(P_REAL_RACE)=="Schnapsdrossel")
+         this_player()->heal_self(30);
+       else {
+         this_player()->buffer_hp(30,5);
+         this_player()->buffer_sp(30,5);
+       }
+     }
+
+     return 1;
+    }
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  consume, eat_food, drink_soft
+   Heilung:   heal_self, restore_spell_points, restore_hit_points,
+              buffer_hp, buffer_sp
+   Timing:    check_and_update_timed_key
+   Enttanken: defuel_drink, defuel_food
+   Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
+              P_DEFUEL_TIME_DRINK
+   Konzepte:  heilung, enttanken, food
+
+9. August 2015 Gloinson
