AddDrink()
**********


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

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


FUNKTION
========

   void AddDrink(string nameOfDrink, mixed ids, int price, int heal,
                 int strength, int soak, mixed myFunction);


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

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

   Bestehende Aufrufe koennen wie folgt ersetzt werden:

   AddToMenu(nameOfDrink, ids,
     ([ P_VALUE : price, P_DRINK : soak, P_ALCOHOL : strength,
        P_HP : heal/2, P_SP : heal/2 ]),
        min(heal/2, 5), myFunction, 0, 0, 0);


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

   AddToMenu(), RemoveFromMenu(), AddFood()

Last modified: 2021-04-05, Arathorn
