Doku: AddInfo und IsGuildMember korrigiert

* AddInfo durchgesehen und mit Beispiel versehen
* Code-Tag in IsGuildMember korrigiert

Change-Id: I709ac1178c59872cf2019e0ef2964edf224d5f08
diff --git a/doc/beispiele/AddInfo/monster.c b/doc/beispiele/AddInfo/monster.c
new file mode 100644
index 0000000..5ffe117
--- /dev/null
+++ b/doc/beispiele/AddInfo/monster.c
@@ -0,0 +1,99 @@
+#pragma strong_types, save_types, rtt_checks, pedantic
+inherit "std/npc";
+
+#include <properties.h>
+
+protected string query_kekse();
+protected string question_gold();
+
+protected void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+
+  SetProp(P_SHORT, "Ein Monster");
+  SetProp(P_LONG, break_string(
+    "Das Monster sieht dich hungrig an. "
+    "Wahrscheinlich will es Geld oder Kekse.", 78));
+  SetProp(P_NAME, "Monster");
+  SetProp(P_GENDER, NEUTER);
+  AddId("monster");
+
+  SetProp(P_RACE, "Monster");
+  SetProp(P_XP, 0);
+  SetProp(P_BODY, 50);
+  SetProp(P_SIZE, random(20)+110);
+
+  // Beispiel 1
+  AddInfo(DEFAULT_INFO, "starrt Dir boese in die Augen.\n");
+
+  // Beispiel 2
+  AddInfo(({"knete","kohle"}),
+    "sagt: ich habe so etwas nicht.");
+  AddInfo("geld",
+    "Ich habe zwar kein Geld, aber [...] blablabla [...] blub muh quak "
+    "lorem blupsum Umbruch now!",
+    "sagt: ");
+  AddInfo("muenzen",
+    "fluestert: Du willst Geld?",
+    0,
+    "fluestert @WEM etwas zu.");
+
+  // Beispiel 3
+  AddInfo(({"keks","kekse"}),
+    #'query_kekse,        // ein Verweis auf die Funktion
+    "sagt: ");
+
+  // Beispiel 5
+  AddInfo("gold", #'question_gold, "murmelt: ", 1);
+}
+
+protected string query_kekse() {
+  if(present("keks", this_object()))
+    return("Ich hab noch welche. Aetsch!");
+  else if(present("keks", environment()))
+    return("Da liegt einer!");
+  return("Menno. Keine mehr da!");
+}
+
+protected string question_gold() {
+  // wieviel Kohle hat der Spieler
+  int money = this_player()->QueryMoney();
+  string *y = map(deep_inventory(this_player()),
+                function string(object o) {
+                  if(o->QueryMaterial(MAT_GOLD)>0 &&
+                     strstr(object_name(o),"/items/money")<0 &&
+                     o->QueryProp(P_NAME))
+                    return o->name(WER,1);
+                })-({0});
+
+  // das geht an alle anderen im Raum, silent bietet sich hier
+  // nicht an, weil es mehrere Moeglichkeiten gibt
+  send_room(environment(),
+    (Name(WER,1)+" murmelt "+
+     this_player()->name(WEM,1)+
+     " etwas zu"+
+     ((money || sizeof(y))?
+       " und glotzt "+this_player()->QueryPronoun(WEN)+" gierig an.":
+       ".")),
+    MT_LOOK|MT_LISTEN,
+    MA_EMOTE, 0, ({this_player()}));
+
+  // und hier die Antwort an den Spieler selbst, mit vielen
+  // Verzweigungen fuer dessen Besitztum
+  return("Ich hab kein Gold bei mir."+
+    ((money || sizeof(y))?
+      " Aber du "+
+      (money?
+        "hast ja jede Menge Kohle bei dir, so etwa "+money+
+        " Muenzen."+
+        (sizeof(y)?
+          " Ausserdem "+
+          ((sizeof(y)==1)?"ist":"sind")+
+          " auch noch "+CountUp(y)+" aus Gold.":
+          ""):
+        (sizeof(y)?"hast ja ein paar Wertsachen dabei: "+
+        CountUp(y)+
+        (sizeof(y)==1?" ist":" sind")+
+        " aus Gold.":"")):
+      ""));
+}
\ No newline at end of file