GetDetail()

FUNKTION:
    varargs string GetDetail(string key, string race, int sense)

DEFINIERT IN:
    /std/thing/description.c

ARGUMENTE:
    key
      Das zu ermittelnde Detail.
    race
      Rasse des ermittelnden Objektes (falls es ein Lebewesen ist).
    sense
      Die Art des zu untersuchenden Details:
        Untersuchen, Riechen, Hoeren, Tasten.

BESCHREIBUNG:
    Die Beschreibung des gewuenschten Details wird ermittelt. Dabei
    werden rassenspezifische Details beruecksichtigt. Es gibt hierbei
    verschiedene Detailarten, deren Typ man in <sense> angibt:
      SENSE_VIEW    - Fuer Defaultdetails zum Untersuchen.
      SENSE_SMELL   - Fuer Details, die man riechen kann.
      SENSE_SOUND   - Fuer Details, die man hoeren kann.
      SENSE_TOUCH   - Fuer Details, die man abtasten kann.
      SENSE_READ    - Fuer Details, die man lesen kann.

    Dabei ist 0 == SENSE_VIEW.

RUeCKGABEWERT:
    Die Beschreibung des Details oder 0, wenn es dieses Detail nicht
    gibt.

BEISPIEL:
    Im folgenden wird ein kleines Testdetail generiert:
      AddDetail("test","Das ist ein Test!\n");
    Im folgenden wird das Detail entfernt, wenn es existiert. Dies ist
    eigentlich nicht noetig, da RemoveDetail() damit zurechtkommt, aber
    eventuell sind ja noch weitere Aktionen noetig.
      if(GetDetail("test"))
      { RemoveDetail("test");
        ...
      }
    Ein Geruch kann man folgendermassen erzeugen:
      AddSmells("gold",
        ([0      :"Gold kann man nicht riechen!\n",
          "zwerg":"Deine trainierte Nase riecht es muehelos!\n"]));
    Die Abfrage des Details gestaltet sich recht einfach:
      GetDetail("gold","zwerg",SENSE_SMELL);
    Die Funktion liefert das Detail fuer den Zwerg.
      GetDetail("gold",0,SENSE_SMELL);
    Die Funktion liefert das Detail fuer die restlichen Rassen.
      GetDetail("gold",0,SENSE_SOUND);
    Ein Sounddetail mit dem Namen "gold" existiert nicht, die Funktion
    liefert 0 zurueck.

SIEHE AUCH:
    Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
               AddTouchDetail()
    Loeschen:  RemoveReadDetail(), RemoveSmells(), RemoveDetail(),
               RemoveSounds(), RemoveTouchDetail()
    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
               P_TOUCH_DETAILS, P_SPECIAL_DETAILS
    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
    Sonstiges: break_string()

27. Jan 2013 Gloinson
