
AddToMenu()
***********


FUNKTION
========

   varargs string AddToMenu(string  menuetext,
                            mixed   ids,
                            mapping minfo,
                            mixed   rate,
                            mixed   msg,
                            mixed   refresh,
                            mixed   delay,
                            mixed   d_msg);


DEFINIERT IN
============

   /std/pub.c


ARGUMENTE
=========

   Die Erlaeuterung der Parameter beschraenkt sich im Folgenden
   zunaechst auf die Grundfunktionalitaet bei Verwendung fester
   Werte. Die Moeglichkeiten zur Realisierung dynamischen Verhaltens
   sind in den Fussnoten zu den einzelnen Parametern beschrieben.

   menuetext
     Der Text steht als kurze Beschreibung im Menue.
   ids
     String oder Array von Strings, mit denen sich die Speise bzw. das
     Getraenk beim Bestellen ansprechen laesst.
   minfo
     Mapping mit Eintraegen fuer:
     P_HP      LP-Heilung in Punkten [*]
     P_SP      KP-Heilung in Punkten [*]
     P_FOOD    Saettigungswirkung der Speise [*]
     P_DRINK   Saettigungswirkung des Getraenks [*]
     P_ALCOHOL Alkoholgehalt des Getraenks [*]
     P_VALUE   Preis der Speise bzw. des Getraenks [*]
   rate [*]
     Heilrate in Punkten pro HeartBeat.
   msg [**]
     Meldung beim Essen:
     Array mit 2 Strings: (1) fuer Empfaenger, (2) fuer Andere.
     Verfuegbare Platzhalter sind weiter unten im Abschnitt "Beispiel"
     dokumentiert.
   refresh
     Mapping mit Eintraegen fuer:
       PR_USER (Kontingent fuer einzelnen Spieler) [*]
       PR_ALL  (Zusatzkontingent fuer alle) [*]
     Alternativ: 0 fuer unbegrenzte Verfuegbarkeit
     Einem Key muessen dabei zwei Werte zugeordnet werden:
     Der Erste gibt die Hoehe des Kontingents an, der Zweite legt
     fest, alle wieviel reset()s das Kontingent wieder aufgefuellt
     wird.
     Verwendung des Mappings erfordert Inkludieren von pub.h.
   delay [*]
     Zahl der Sekunden, um die verzoegert die Heilung eintritt,
     z.B. weil das Essen erst zubereitet werden muss.
   d_msg [**]
     Meldung beim Bestellen, falls die Heilung verzoegert wird
     Array mit 2 Strings: (1) fuer Empfaenger, (2) fuer Andere.



   [*] Dieser Parameter kann statt eines festen Zahlenwerts mit
       folgenden Werten gefuellt werden:

       1) Mapping <racemodifier> der Form:
              ([ 0 : <standardwert> ,
               <rasse_1> : <wert_1>,
               ... ,
               <rasse_n> : <wert_n> ]).
          Die Eintraege in diesem Mapping werden gegen die Rasse des
          bestellenden Spielers geprueft und entsprechend die
          zugehoerigen Werte verwendet.
       2) string <func>: Aufruf erfolgt mittels
            call_other(this_object(), func, empfaenger);
          gerufen (aber: siehe Hinweise).
       3) closure <func>: Aufruf erfolgt mittels
            funcall(func, empfaenger);
       4) Array der Form  ({string <obj>, string <func>}) oder
                          ({object <obj>, string <func>})
          Aufruf erfolgt mittels
            call_other(obj, func, empfaenger);
          (aber: siehe Hinweise). <obj> ist folglich als Objektpointer
          oder dessen object_name() anzugeben. <func> wird mittels
          function_exists() auf Existenz ueberprueft.

          HINWEISE: im Falle von Lieferverzoegerung ("delay") und
          Preis (P_VALUE) wird bei allen Funktionsaufrufen NICHT der
          Empfaenger, sondern der Zahler uebergeben.
          Im Falle der Kontingent-Liste ("refresh") kann nur die
          verfuegbare Menge modifiziert werden, nicht die Zeit
          bis zum Wieder-Auffuellen.

   [**] Zur Erzeugung variabler Meldungen koennen folgende Werte
        eingetragen werden:

        1) closure <func>: Aufruf erfolgt mittels
             funcall(func, zahler, empfaenger, ident, minfo);
        2) string <func>: Aufruf erfolgt mittels
             call_other(this_object(), func, zahler, empfaenger,
                        ident, minfo);
        <func> bekommt Zahler und Empfaenger als Objektpointer,
        ident als String und minfo als Mapping mit den
        jeweiligen Heilwerten uebergeben. minfo entspricht hierbei
        den Daten, die als dritter Parameter an AddToMenu()
        uebergeben wurden.
        HINWEIS: wenn in das minfo-Mapping keine int-Festwerte
        eingetragen wurden, werden diese gemaess den Regeln unter [*]
        geprueft; Funktionen/Closures werden ggf. ausgewertet und
        deren Rueckgabewerte an die Funktion <func> uebergeben.
        WICHTIG: Die Rueckgabewerte der Funktion werden nicht
        ausgewertet. Jeder, der anstatt einer Meldung einen
        Funktionsaufruf programmiert, muss fuer die Ausgabe der
        Meldungen selbst sorgen.


BESCHREIBUNG
============

   Mit dieser Funktion werden Speisen oder Getraenke in die Karte
   von Kneipen und Restaurants eingefuegt.


RUECKGABEWERT
=============

   Rueckgabewert ist ein String "menuentry%d", wobei %d eine Nummer
   ist, die darueber Auskunft gibt, den wievielten Eintrag in die
   interne Karte der Kneipe diese Speise bzw. dieses Getraenk
   darstellt. Im Prinzip handelt es sich bei dem String um einen Key
   fuer ein Mapping, in dem die Speisen bzw. Getraenke gespeichert
   sind.


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

   Die aelteren Funktionen 'AddDrink' bzw. 'AddFood' werden zwar mithilfe
   dieser maechtigeren Funktion aus Gruenden der Abwaertskompatibilitaet
   simuliert, sollen aber nicht mehr eingesetzt werden.



   Die alten Platzhalter && etc. (s.u.) werden weiterhin unterstuetzt,
   sollten aber fuer bessere Wartbarkeit nicht mehr verwendet werden.



   Fuer das Testen der Kneipe gibt es in jeder Kneipe den Befehl
   'pubinit'. Hiermit lassen sich die Speisen und Getraenke durch-
   checken. Steht in der Ausgabe bei einem Getraenk/Essen ein FAIL,
   so wird die entsprechende Speise (oder Getraenk) NICHT an Spieler
   verkauft. Ausnahmen fuer Speisen/Getraenke mit hoeheren maximalen
   Werten sind durch Balance-EM zu genehmigen.


BEISPIEL
========

   include <pub.h>

   create()
   {
   AddToMenu("'Opa's Drachenkeule'",({"drachenkeule","keule"}),
   ([P_HP:63,P_SP:63,P_FOOD:9,P_VALUE:528]), 5,
   ({"Du isst die Keule mit einem schlechten Gewissen.",
     "@WER1 isst die Keule mit einem schlechten Gewissen."}),
   ([ PR_USER : 4; 1 , PR_ALL : 20; 3 ]), 9,
   ({"Der unsichtbare Kneipier schneidet einem Rentner ein grosses "
     "Stueck aus dessen Keule und bereitet sie Dir zu. Komisch, muss "
     "wohl ein Tippfehler auf der Karte gewesen sein.",
     "Der unsichtbare Kneipier schneidet einem hilflosen Opa ein "
     "Stueck aus dessen Keule und braet diese fuer @WEN1."}) );
   }

   1) Name der Speise (des Getraenks) auf der Karte (bei menue).

      AddToMenu("'Opa's Drachenkeule'",

   2) ids mit denen sich bestellen laesst (z.B. "kaufe keule").

      ({"drachen","drachenkeule","keule"}),

   3) Heilung fuer LP und KP, Saettigung (P_FOOD oder P_DRINK,
      P_ALCOHOL nach Belieben setzen), Preis (P_VALUE).
      HP und SP muessen nicht gleich sein. Speisen und Getraenke,
      die nur eines von beiden heilen, sind auch moeglich.

      ([P_HP:63,P_SP:63,P_FOOD:9,P_VALUE:528]),

   4) Heilung pro Heartbeat (in diesem Beispiel je 5 KP/LP).



      5,

   5) Meldungen fuer Spieler und Umstehende die bei Genuss ausgege-
      ben werden (also NICHT der Bestell-Text).

      ({"Du isst die Keule mit einem schlechten Gewissen.",
        "@WER1 isst die Keule mit einem schlechten Gewissen."}),

      Die Ausgabe-Strings werden vor der Ausgabe mit dem Empfaenger
      als Objekt an replace_personal() uebergeben. Fuer die
      moeglichen Platzhalter siehe dort.



   6) Die Speise ist in ihrer Anzahl begrenzt. Fuer jeden Spieler
      sind 4 Keulen pro reset() da. Ausserdem gibt es noch einen
      "Notvorrat" von 20 Keulen, der alle 3 reset()s aufgefuellt
      wird. Aus diesem (so noch vorhanden) werden die Spieler
      versorgt, wenn ihr "persoenlicher Vorrat" aufgebraucht ist.

      ([ PR_USER : 4; 1 , PR_ALL : 20; 3 ]),



      HINWEIS: bei Benutzung des Mappings muss <pub.h> inkludiert
      werden!



      Wenn man keine reset-abhaengigen Speisen haben moechte, traegt
      man hier eine 0 ein.

   7) Die Zahl ist die Wartezeit in Sekunden, die der Wirt z.B. fuer
      die Zubereitung und Auslieferung an den Spieler braucht.

      9,



   8) Letztendlich die Meldungen an Spieler und Umstehende, die bei Be-
      stellung (hier 'kaufe keule') ausgegeben werden.

      ({"Der unsichtbare Kneipier schneidet einem Rentner ein grosses "
      "Stueck aus dessen Keule und bereitet sie Dir zu. Komisch, muss "
      "wohl ein Tippfehler auf der Karte gewesen sein.",
      "Der unsichtbare Kneipier schneidet einem hilflosen Opa ein "
      "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) &3& - pl->name(WEM,2) &4& - pl->name(WEN,2) &1#
   - capitalize(pl->name(WER,2)) &2# - capitalize(pl->name(WESSEN,2))
   &3# - capitalize(pl->name(WEM,2)) &4# - capitalize(pl->name(WEN,2))
   &!  - pl->QueryPronoun(WER) &5& - pl->QueryPronoun(WE); &6& -
   pl->QueryPronoun(WESSEN) &7& - pl->QueryPronoun(WEM) &8& -
   pl->QueryPronoun(WEN) &5# - capitalize(pl->QueryPronoun(WER)) &6# -
   capitalize(pl->QueryPronoun(WESSEN)) &7# -
   capitalize(pl->QueryPronoun(WEM)) &8# -
   capitalize(pl->QueryPronoun(WEN))


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

   AddFood(), AddDrink(), /sys/pub.h
   RemoveFromMenu(), replace_personal()

Last modified: Sam, 01. Okt 2011, 23:40 by Arathorn
