RemoveSpecialDetail()
*********************


VERALTET RemoveSpecialDetail()
==============================


FUNKTION
========

   void RemoveSpecialDetail(string|string* keys);


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

   /std/thing/description.c


ARGUMENTE
=========

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


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

   Entfernt die in keys angegebenen Details aus der Liste der
   vorhandenen SpecialDetails.

   VERALTET: Bitte RemoveDetail() benutzen.


BEMERKUNGEN
===========

   Uebergibt man fuer keys eine 0, so werden saemtliche SpecialDetails
   entfernt!
   Da intern Details und SpecialDetails im gleichen Mapping verwaltet
   werden, lassen sich mit dieser Funktion auch Details entfernen.
   Man sollte diese Funktion deshalb nicht mehr verwenden, siehe
   AddDetail mit Closures.


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(), P_READ_MSG
   Sonstiges: GetDetail(), break_string()

20.01.2015, Zesstra
