Automatisch erzeugte Manpages.

Damit nicht jeder sphinx auf dem Rechner haben muss,
behalten wir bis auf weiteres die aus den .rst
erzeugten Manpoages auch im Repo.

Change-Id: Id556c0d11cf5f79659d8350952ce1c014d81ea44
diff --git a/doc/sphinx/man/lfun/AddToMenu b/doc/sphinx/man/lfun/AddToMenu
new file mode 100644
index 0000000..01d46b6
--- /dev/null
+++ b/doc/sphinx/man/lfun/AddToMenu
@@ -0,0 +1,271 @@
+
+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