diff --git a/doc/sphinx/lfun/AddToMenu.rst b/doc/sphinx/lfun/AddToMenu.rst
index 29824f6..d2ae21f 100644
--- a/doc/sphinx/lfun/AddToMenu.rst
+++ b/doc/sphinx/lfun/AddToMenu.rst
@@ -251,6 +251,8 @@
            "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)
diff --git a/doc/sphinx/lfun/buffer_hp.rst b/doc/sphinx/lfun/buffer_hp.rst
index db0555c..d3ec7f2 100644
--- a/doc/sphinx/lfun/buffer_hp.rst
+++ b/doc/sphinx/lfun/buffer_hp.rst
@@ -50,47 +50,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/sphinx/lfun/eat_food.rst b/doc/sphinx/lfun/eat_food.rst
index 1b967ef..7613f93 100644
--- a/doc/sphinx/lfun/eat_food.rst
+++ b/doc/sphinx/lfun/eat_food.rst
@@ -78,12 +78,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.
