
RemoveSmells()
**************


FUNKTION
========

   void RemoveSmells(string|string* keys);


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

   /std/thing/description.c


ARGUMENTE
=========

   keys
     String oder Array von Strings mit den zu entfernenden Details.


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

   Diese Funktion entspricht dem RemoveDetail() fuer Standarddetails,
   nur koennen hiermit Gerueche entfernt werden:
   Entfernt die in <keys> angegebenen Details aus der Liste der
   vorhandenen Details. Uebergibt man fuer <keys> eine 0, so werden
   saemtliche Details entfernt!


BEISPIEL
========

   Zuerst erzeugen wir ein kleines Detail, mit dem wir am Rauch riechen
   koennen. Das Feuer brennt langsam ab und das Detail wird wieder
   entfernt:

     AddSmells("rauch",* H U S T *\n");
     call_out(#'RemoveSmells, 100, "rauch");


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

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

20.01.2015, Zesstra
