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


VERALTETE LFUN
==============

   Diese Lfun ist als veraltet gekennzeichnet (deprecated); ihre Nutzung
   loest daher eine Warnung aus. Bitte stattdessen AddToMenu() verwenden.


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: 2021-04-05, Arathorn
