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

