diff --git a/doc/lfun/AddToMenu b/doc/lfun/AddToMenu
index 01d46b6..c983647 100644
--- a/doc/lfun/AddToMenu
+++ b/doc/lfun/AddToMenu
@@ -249,7 +249,11 @@
       "Der unsichtbare Kneipier schneidet einem hilflosen Opa ein "
       "Stueck aus dessen Keule und braet diese fuer @WEN1."}));
 
+
 LISTE DER ALTEN PLATZHALTER (DEPRECATED):
+=========================================
+
+::
    &&  - pl->name(WER,2) &1& - pl->name(WER,2) &2& -
    pl->name(WESSEN,2) &3& - pl->name(WEM,2) &4& - pl->name(WEN,2) &1#
    - capitalize(pl->name(WER,2)) &2# - capitalize(pl->name(WESSEN,2))
diff --git a/doc/lfun/buffer_hp b/doc/lfun/buffer_hp
index 181751c..db9ba79 100644
--- a/doc/lfun/buffer_hp
+++ b/doc/lfun/buffer_hp
@@ -49,47 +49,44 @@
 ========
 
    #define TP this_player()
-   ...
+   #define BS(x) break_string(x, 78)
 
    int heilung=1;
-   ...
 
-   create()
+   protected void create()
    {
-    ::create();
-    SetProp(P_NAME,"Heilpflanze");
-    ...
+     ::create();
+     SetProp(P_NAME,"Heilpflanze");
+     ...
 
-    AddCmd("iss","eat");
+     AddCmd("iss&@ID", "eat", "WAS willst Du essen?");
    }
 
    int eat(string str)
    {
-     notify_fail("WAS willst Du essen?\n");
-     if ( !str || !id(str) )
-      return 0;
-     ...
-
-     if ( !TP->eat_food(25) )
-      return 1;
-
-     TP->buffer_hp(20,5);
-     TP->buffer_sp(80,10);
-     heilung--;
-     write(BS("Du fuehlst langsam, wie Deine Kraefte zurueckkehren."));
-
+     if ( TP->eat_food(25) )
+     {
+       TP->buffer_hp(20,5);
+       TP->buffer_sp(80,10);
+       heilung--;
+       tell_object(this_player(), BS("Du fuehlst langsam, wie Deine Kraefte "
+           "zurueckkehren."));
+     }
+     // Wenn der Spieler nichts mehr essen kann, wird die Meldung von
+     // eat_food() erzeugt.
      return 1;
    }
 
-   reset()
+   void reset()
    {
      heilung=1;
      ::reset();
    }
 
-   Es wird durch eat_food getestet, ob der Spieler noch genuegend essen kann.
-   Wenn ja, kriegt unser Held die 25 automatisch oben drauf und ausserdem
-   20 LP in 5-LP-Schritten und 80 KP in 10-LP-Schritten gutgeschrieben.
+   Es wird durch eat_food() getestet, ob der Spieler noch genuegend essen
+   kann. Wenn ja, kriegt unser Held die 25 automatisch oben drauf und
+   ausserdem 20 LP in 5-LP-Schritten und 80 KP in 10-KP-Schritten
+   gutgeschrieben.
 
 
 SIEHE AUCH
diff --git a/doc/lfun/eat_food b/doc/lfun/eat_food
index 32327e2..9cf54b3 100644
--- a/doc/lfun/eat_food
+++ b/doc/lfun/eat_food
@@ -79,12 +79,9 @@
                  "dem Keks herum und fuehlst Dich gleich viel besser.", 78));
 
      // alle Lebewesen im Raum bekommen das auch mit
-     foreach(object ob:
-             (filter(all_inventory(environment(this_player())), #'living) -
-              ({this_player()})))
-       ob->ReceiveMsg(this_player()->Name()+" knuspert einen Keks weg.",
-                      MT_LOOK|MT_LISTEN,
-                      MA_EAT);
+     tell_room(environment(this_player()),
+         this_player()->Name()+" knuspert einen Keks weg.\n",
+         ({this_player()}));
 
      // Rassenabhaengige Heilung: Sofort oder in Schritten
      // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
