
AddFood()
*********


OBSOLETE LFUN
=============

   Diese Efun existiert nicht mehr. Bitte stattdessen den Hook
   H_HOOK_INSERT benutzen. (s. /doc/std/hooks)


FUNKTION
========

   void AddFood(string nameOfFood, mixed ids, int price, int heal,
                mixed myFunction)


BEMERKUNGEN
===========

   Die Funktion AddFood() sollte NICHT MEHR BENUTZT werden.
   Bitte AddToMenu() verwenden.

   Bestehende Aufrufe koennen wie folgt ersetzt werden:

   AddToMenu( nameOfFood,ids,
       ([ P_VALUE : price, P_FOOD : heal, P_HP : heal, P_SP : heal ]),
       min(heal, 5), myFunction, 0,0,0);


SIEHE AUCH
==========

   AddToMenu(), RemoveFromMenu(), AddDrink()

Last modified: Fri Mar 03 13:23:00 2000 by Paracelsus
