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/goldklumpen.c b/doc/beispiele/AddInfo/goldklumpen.c
new file mode 100644
index 0000000..a1319e1
--- /dev/null
+++ b/doc/beispiele/AddInfo/goldklumpen.c
@@ -0,0 +1,22 @@
+#pragma strong_types, save_types, rtt_checks, pedantic
+inherit "/std/thing";
+
+#include <properties.h>
+
+protected void create() {
+  if(!clonep(this_object())) return;
+  ::create();
+
+  AddId(({"klumpen", "goldklumpen"}));
+
+  SetProp(P_NAME, "Goldklumpen");
+  SetProp(P_SHORT, "Ein Goldklumpen");
+  SetProp(P_LONG, break_string(
+    "Ein Klumpen Gold. Heb ihn doch auf und frage ein Monster "
+    "nach Gold.", 78));
+
+  SetProp(P_GENDER, MALE);
+  SetProp(P_WEIGHT, 200);
+  SetProp(P_VALUE, 0);
+  SetProp(P_MATERIAL, MAT_GOLD);
+}
diff --git a/doc/beispiele/AddInfo/keks.c b/doc/beispiele/AddInfo/keks.c
new file mode 100644
index 0000000..d0f2ea1
--- /dev/null
+++ b/doc/beispiele/AddInfo/keks.c
@@ -0,0 +1,24 @@
+#pragma strong_types, save_types, rtt_checks, pedantic
+inherit "/std/thing";
+
+#include <properties.h>
+
+protected void create() {
+  if(!clonep(this_object())) return;
+  ::create();
+
+  AddId(({"keks"}));
+
+  SetProp(P_NAME, "Keks");
+  SetProp(P_SHORT, "Ein Keks");
+  SetProp(P_LONG, break_string(
+    "Ein leckerer Keks. Gib ihn doch einem Monster.",78));
+
+  SetProp(P_GENDER, MALE);
+  SetProp(P_WEIGHT, 20);
+  SetProp(P_VALUE, 0);
+  SetProp(P_MATERIAL, MAT_MISC_PLANT);
+
+  AddCmd("iss|mampf|friss&@ID&\n", 0,
+         "Was willst du essen?|Sieht nicht lecker genug aus.^");
+}
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
diff --git a/doc/beispiele/AddInfo/raum.c b/doc/beispiele/AddInfo/raum.c
new file mode 100644
index 0000000..e1570c5
--- /dev/null
+++ b/doc/beispiele/AddInfo/raum.c
@@ -0,0 +1,20 @@
+#pragma strong_types, save_types, rtt_checks, pedantic, no_clone
+inherit "/std/room";
+
+#include <config.h>
+#include <properties.h>
+
+protected void create() {
+  ::create();
+
+  SetProp(P_INT_LONG, "Ein leerer Raum.\n");
+  SetProp(P_INT_SHORT, "Im leeren Raum");
+  SetProp(P_LIGHT, 1);
+
+  AddItem(__PATH__(0)"monster", REFRESH_REMOVE);
+  AddItem(__PATH__(0)"keks", REFRESH_REMOVE);
+  AddItem(__PATH__(0)"goldklumpen", REFRESH_REMOVE);
+  AddItem(__PATH__(0)"zuhoerer", REFRESH_REMOVE);
+
+  AddExit("gilde", "/gilden/abenteurer");
+}
diff --git a/doc/beispiele/AddInfo/zuhoerer.c b/doc/beispiele/AddInfo/zuhoerer.c
new file mode 100644
index 0000000..b46a59c
--- /dev/null
+++ b/doc/beispiele/AddInfo/zuhoerer.c
@@ -0,0 +1,47 @@
+#pragma strong_types, save_types, rtt_checks, pedantic
+inherit "std/npc";
+
+#include <properties.h>
+
+protected void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+
+  SetProp(P_SHORT, "Ein Beobachter");
+  SetProp(P_LONG, break_string(
+    "Der Beobachter hoert und sieht zu.", 78));
+  SetProp(P_NAME, "Beobachter");
+  SetProp(P_GENDER, MALE);
+  AddId("beobachter");
+
+  SetProp(P_RACE, "Beobachter");
+  SetProp(P_XP, 0);
+  SetProp(P_BODY, 50);
+}
+
+private string buf = "";
+
+void empty_buffer() {
+  tell_room(environment(),
+    "\nDer Zuhoerer murmelt: 'Folgendes habe ich gesehen'\n***\n"+
+    buf+
+    "***\n",
+    ({this_object()}));
+  buf = "";
+}
+
+public varargs int ReceiveMsg(string msg, int msg_typ, string msg_action,
+  string msg_prefix, mixed origin) {
+  if (msg_typ & MSG_DONT_WRAP)
+    buf+=sprintf("%s%s", msg_prefix||"", msg);
+  else
+    buf+=sprintf("%s%s\n", msg_prefix||"", msg);
+  if(find_call_out("empty_buffer")<0)
+    call_out("empty_buffer", 1);
+}
+
+void catch_tell(string msg) {
+  buf+=msg;
+  if(find_call_out("empty_buffer")<0)
+    call_out("empty_buffer", 1);
+}