diff --git a/doc/lfun/drink_alcohol b/doc/lfun/drink_alcohol
new file mode 100644
index 0000000..28ed1dd
--- /dev/null
+++ b/doc/lfun/drink_alcohol
@@ -0,0 +1,83 @@
+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
