Lpc Manpages

AddDetail()

FUNKTION:
     varargs void AddDetail(mixed keys, mixed desc, mixed desc_simple);

DEFINIERT IN:
     /std/thing/description.c

ARGUMENTE:
     keys
          String oder Array von Strings mit den Namen der Details oder
          Mapping in der Form von (["adj1#adj2:({"key1","key2"})])
     desc
          String, Array, Mapping oder Closure zur Beschreibung der Details.

     desc_simple
          Fuer P_SIMPLE_MODE. Eine Version von desc, ohne Ascii-Grafik,
          gedacht fuer Sehbehinderte.
          
BESCHREIBUNG:
     Die Beschreibung der Details keys wird gesetzt. Wie die Details bei der
     Untersuchung aussehen, haengt im wesentlichen vom Typ der Beschreibung
     desc ab:
     desc ist ein String.
          Beim Untersuchen wird dieser String, umgebrochen mit break_string,
          ausgegeben, wobei im Text vorhandene \n beruecksichtigt werden.
	  Wird dem Text ein \t (TAB) vorangestellt, so unterbleibt das
	  Formatieren.
     desc ist ein Array.
          Beim Untersuchen wird nur das erste Element, das ein String sein
          muss, ohne automatischen Umbruch ausgegeben.
     desc ist ein Mapping.
          Das Mapping muss folgenden Aufbau haben:

          ([ 0 : "Defaulttext", "rasse1" : "r1text", ... ]).

          Falls fuer die Rasse des das Detail untersuchenden Spielers ein
          Eintrag im Mapping existiert, wird der entsprechende Text
          zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
          rassenabhaengige Details moeglich. Siehe auch die Beispiele.
     desc ist eine Closure.
          In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
          zurueckgegeben. Die Closure bekommt dabei den Namen des Details
          als Parameter uebergeben.
     
     Die Beschreibung wird automatisch mit einem break_string auf 78 Zeichen
     versehen, sofern keine "\n" in der Beschreibung vorhanden sind.

     Ist desc_simple gesetzt, wird dieser alternative Text an den Spieler
     ausgegeben, wenn dieser P_SIMPLE_MODE gesetzt hat.
      
RUECKGABEWERT:
     keiner
     
BEISPIELE:
     Ein schlichtes Detail:

     AddDetail( ({ "sofa", "couch" }),
       "Eine kleine Couch." );
       
     Ein Detail mit selbstdefiniertem Umbruch:
     
     AddDetail( "zettel",
       ({ " Bin \n gleich \n wieder \n da! " }) );

     Ein rassenabhaengiges Detail:

     AddDetail( ({ "bett", "bettchen" }),
       ([DEFAULT_DETAIL: "Eine kleines Bettchen.\n", // Der Defaulttext
         "zwerg":  // Die Rasse wird klein geschrieben!
             "Das Bett laedt geradezu zu einem Nickerchen ein.\n" ]) );

     Und nun ein Detail mit Closure:

     AddDetail( ({ "hebel", "schalter" }), #'hebel );
     ...
     string hebel(string key)
     {
       if (hebel_betaetigt)
         return "Der "+capitalize(key)+" steht auf EIN.\n";
       else
         return "Der "+capitalize(key)+" steht auf AUS.\n";
     }

     Wie man sieht, ist die letzte Art ein verkappter
     AddSpecialDetail()-Aufruf (in Wirklichkeit ist es gerade andersherum).

SIEHE AUCH:
     RemoveDetail(), AddSpecialDetail(), AddReadDetail(), GetDetail(),
     room, break_string(), combine_mapping()