RemoveSounds()

FUNKTION:
    void RemoveSounds(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 Gerauesche 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:
    Wir lassen etwas Musik spielen und wenn wir den Plattenspieler
    ausmachen, dann endet sie und man hoert auch nichts mehr:

      int ausmachen(string str);
      ...
      AddSounds(({"musik","hip-hop"}) ,"Klingt nach Hip-Hop...\n");
      AddCmd("mach|mache&plattenspieler&aus", #'ausmachen,
             "Was willst du (aus)machen?|Willst du den ausmachen?^");
      ...
      int ausmachen(string str) {
        if(!GetDetail("musik", 0, SENSE_SOUND)) // existiert Musikdetail ?
          return("Der Plattenspieler laeuft doch gar nicht!\n", 1);
        RemoveSounds(0);
         return 1;
      }

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

8. Juli 2011 Gloinson
