Lpc Manpages

AddSmell()

FUNKTION:
     void AddSmell(mixed keys, mixed desc);

DEFINIERT IN:
     /std/thing/description.c

ARGUMENTE:
     keys
          String oder Array von Strings mit den Namen der Gerueche.
     desc
          String, Array, Mapping oder Closure zur Beschreibung der Gerueche.

BESCHREIBUNG:
     Die Beschreibung der Gerueche 'keys' wird gesetzt. Was der Spieler beim
     Schnuppern fuer Ausgaben bekommt, haengt im wesentlichen vom Typ der
     Beschreibung 'desc' ab:
     desc ist ein String.
          Beim Schnuppern 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 Schnuppern 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 den Geruch erschnuppernden Spielers ein
          Eintrag im Mapping existiert, wird der entsprechende Text
          zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
          rassenabhaengige Gerueche 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 Geruchs
          als Parameter uebergeben.
     Spielerbefehle sind 'schnupper(e)', schnupper(e) an', 'riech(e)' und
     'riech(e) an'.

RUECKGABEWERT:
     keiner
     
BEMERKUNGEN:
     Mit dem in /sys/room/description.h definierten speziellen 'Geruch'
     DEFAULT_SMELL laesst sich die Meldung setzen fuer den Fall, dass
     kein Geruch spezifiziert wurde. Der Defaultwert ist "Du schnupperst,
     riechst aber nichts.\n".

BEISPIELE:

     Hier stinkts:
     
     AddSmell(DEFAULT_SMELL, "Es stinkt!\n");
     
     Elfen koennen den Geruch identifizieren:

     AddSmell( ({ "gestank" }),
       ([ 0: "Es stinkt einfach nur.\n", // Der Defaulttext
         "elf":  // Die Rasse wird klein geschrieben!
                "Es riecht, als wenn im Keller eine Leiche laege.\n" ]) );

     Blumen mit Closures:

     AddSmell(DEFAULT_SMELL, "Es liegt ein Duft in der Luft...\n");
     AddSmell( ({ "duft" }), #'blume );
     ...
     string blume(string key)
     {
       if (rose_vorhanden)
         return "Es riecht nach Rosenduft.\n";
       else
         return "Es war wohl nur eine Taeuschung...\n";
     }

DOKUMENTIERT:
     24.05.2008 modifiziert von It@AnderLand

SIEHE AUCH:
     RemoveSmell(), GetSmell(), AddSound(), AddDetail(), AddReadDetail(),
     room, break_string()