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

