
AddInfo()
*********


FUNKTION
========

   varargs void AddInfo( frage, meldung
      [, indent [, [silent [, casebased] ] ] );


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

   /std/npc/info.c


ARGUMENTE
=========

   string/string* frage
      Schluesseltext(e) auf die Informationen gegeben werden sollen.

   string/closure meldung
      Information, die gegeben werden soll; wenn 'meldung' eine
      Closure ist, wird der gerufenen Funktion nichts uebergeben.

   string indent
      Text, der sich bei mehrzeiligen Meldungen wiederholen soll.

   int/string silent
      Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.

   string/closure casebased
      Closure mit Returnwert string oder int. Bekommt nichts
      uebergeben.


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

   Wenn ein Spieler ein NPC mittels "frage <monstername> nach <frage>"
   nach einer Information mit dem Schluessel 'frage' fragt, so wird
   die entsprechende 'meldung' ausgegeben (oder die Closure in
   'meldung' gerufen und der zurueckgegebene Text ausgegeben). Der
   Meldung wird der Name des Monsters vorangestellt.

   Frage:
      Schluessel muessen kleingeschrieben sein, koennen aber
      Leerzeichen enthalten.

   Meldung:
      Wenn kein 'indent' angegeben ist, muss man die Meldung selbst
      umbrechen.

   Indent:
      Wird ein 'indent' angegeben so wird jeder Zeile hinter dem
      Monsternamen noch das 'indent' vorangesetzt. Ein typisches
      indent ist "sagt: ".

   Silent:
      Bei 'silent'==1 erfolgt keine Textausgabe der Antwortmeldung im
      Raum, ist 'silent' ein String, so wird jener an alle anderen
      Spieler ausser dem Fragesteller im Raum ausgegeben. Dem
      ausgegebenen Text wird der Name des NPCs als Indent
      vorangestellt.

   Casebased:
      Die als Closure angegebene Methode entscheidet, ob oder wie der
      NPC auf diese Frage antworten soll:

      # return 0:    normale Antwort mit "meldung"

      # return 1:    keine Antwort/Antwort mit DEFAULT_NOINFO

      # return string: Antwort mit string unter Beruecksichtigung
      eines indent

   Die Strings von 'silent' und 'meldung' werden geparsed. Dabei
   koennen die @[...]-Tags von replace_personal() verwendet werden,
   Objekt 1 ist this_player(). Ersetzte String am Satzanfang werden
   automatisch gross geschrieben. AddInfo() konvertiert die alten
   Schluesselworte @WER, @WESSEN, @WEM, @WEN zu denen von
   replace_personal(), jedoch nicht in den Rueckgabe- werten von
   Closures.

   Mittels der in <npc.h> definierten Frage DEFAULT_INFO kann eine
   Meldung gesetzt werden, die gegeben werden soll, wenn der Spieler
   etwas fragt, auf das keine Antwort vorgegeben ist (das loest
   SetProp(P_DEFAULT_INFO, <text>) ab).


BEISPIELE
=========

   Siehe auch: /doc/beispiele/AddInfo/

   // Beispiel 1: ### eine Standardantwort setzen ###
   AddInfo(DEFAULT_INFO, "starrt Dir boese in die Augen.\n");
   // identisch zu
   // obsolet: SetProp(P_DEFAULT_INFO, "starrt Dir boese in die Augen.\n");

   // Beispiel 2: einfache Beispiele, auch mit casebased
   AddInfo(({"knete","kohle"}),
       "sagt: ich habe so etwas nicht.\n");
   AddInfo("geld",
       "Ich habe zwar kein Geld, aber [...] blablabla [...]",
       "sagt: ");
   AddInfo("muenzen",
       "fluestert: Du willst Geld?\n",
       0,
       "fluestert @WEM1 etwas zu.\n");

   // "frage monster nach geld": alle im Raum hoeren
   //  Das Monster sagt: Ich habe zwar kein Geld, aber [...]
   //  Das Monster sagt: [...] blablabla [...]

   // "frage monster nach muenzen":
   // - der Fragensteller hoert:
   //   "Das Monster fluestert: Du willst Geld?"
   // - alle andere hoeren:
   //   "Das Monster fluestert <Fragenstellernamen> etwas zu."

   // Beispiel 3: dynamisch
   // ein Prototyp, damit wir die Methode bekannt machen
   protected string query_kekse();

   AddInfo(({"keks","kekse"}),
       #'query_kekse,        // ein Verweis auf die Funktion
       "sagt: ");

   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!");
   }
   // "frage monster nach keks":
   // - wenn es noch Kekse hat, hoeren alle:
   //   "Das Monster sagt: Ich hab noch welche. Aetsch!
   // - sonst:
   //   "Das Monster sagt: "Menno. Keine mehr da!

   // Beispiel 4: dynamischer
   // ein Prototyp, damit wir die Methode bekannt machen
   protected string query_kekse();
   protected mixed case_fighting();

   AddInfo(({"keks","kekse"}),
       #'query_kekse,"        // ein Verweis auf die Funktion
       "sagt: ",
       0,                     // nicht silent :)
       #'case_fighting);      // noch ein Funktionsverweis

   protected string query_kekse() {
     if(present("keks"))
       return("Ich hab noch welche. Aetsch!");
     return("Menno. Keine mehr da!");
   }

   protected mixed case_fighting() {
     if(InFight())
       return("Keine Zeit fuer Kekse. Muss kaempfen.");
     return 0;
   }

   // "frage monster nach keks":
   // - wenn es kaempft, hoeren alle:
   //   "Das Monster sagt: Keine Zeit fuer Kekse. Muss kaempfen.
   // - sonst, wenn es noch Kekse hat, hoeren alle:
   //   "Das Monster sagt: Ich hab noch welche. Aetsch!
   // - sonst:
   //   "Das Monster sagt: "Menno. Keine mehr da!

   // Beispiel 5: ### dynamisch und komplex ###
   // ein Prototyp, damit wir die Methode bekannt machen
   protected string question_gold();

   // "gold" wird eine Closure auf die Methode question_gold()
   // zugewiesen, ausserdem soll es still bleiben (wir informieren
   // den Restraum selbst)
   AddInfo("gold", #'question_gold, "murmelt: ", 1);

   // los gehts, wir generieren unsere Antwort selbst
   protected string question_gold() {
     // wieviel Kohle hat der Spieler
     int money = this_player()->QueryMoney();
     string* valuables = ({});

     // Wertgegenstaende suchen, d.h. Material kein Gold,
     // Objekt kein Geld, und auch nicht unsichtbar
     foreach(object o : deep_inventory(this_player()))
     {
       if ( o->QueryMaterial(MAT_GOLD)>0 &&
            load_name(o) != "/items/money" &&
            o->QueryProp(P_SHORT) &&
            !o->QueryProp(P_INVIS) )
       {
         valuables += ({o->Name(WER,1)});
       }
     }

     // das geht an alle anderen im Raum, silent bietet sich hier
     // nicht an, weil es mehrere Moeglichkeiten gibt
     send_room(environment(),
       sprintf("%s murmelt %s etwas zu%s.",
               Name(WER,1),
               this_player()->name(WEM,1),
               (money || sizeof(valuables))?
                 " 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 diversen
     // Verzweigungen fuer dessen Besitztum.
     string reply = "Ich hab kein Gold bei mir.";
     string verb = sizeof(valuables) ? "ist" : "sind";
     if ( money )
     {
       reply += " Aber Du hast ja jede Menge Kohle bei dir, so etwa "+
                money+" Muenzen.";
       if ( sizeof(valuables) )
         reply += sprintf(" Ausserdem %s auch noch %s aus Gold.",
                    verb, CountUp(valuables));
     }
     else if ( sizeof(valuables) )
     {
         reply += sprintf(
           " Aber Du hast ja ein paar Wertsachen dabei: %s %s aus Gold.",
           CountUp(valuables), verb);
     }
     return reply;
   }

   // "frage monster nach gold"
   // - der Fragesteller hoert zB:
   //   Das Monster murmelt: Ich hab kein Gold bei mir. Aber Du hast ja
   //   Das Monster murmelt: jede Menge Kohle bei Dir, so etwa <number>
   //   Das Monster murmelt: Muenzen. Ausserdem ist/sind noch <object1>
   //   Das Monster murmelt: und <object2> aus Gold."
   // - die Umstehenden hoeren:
   //   "Das Monster murmelt @WEM1 etwas zu."
   //   oder
   //   "Das Monster murmelt @WEM1 etwas zu und glotzt ihn/sie gierig an."


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

   Verwandt:
      AddSpecialInfo(), RemoveInfo()

   Props:
      P_PRE_INFO

   Files:
      /std/npc/info.c

   Loggen:
      P_LOG_INFO

   Interna:
      GetInfoArr() , do_frage()

7. Mar 2017 Gloinson
