
AddSpecialDetail()
******************


VERALTET AddSpecialDetail()
===========================


FUNKTION
========

   void AddSpecialDetail(string|string* keys, string func);


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

   /std/thing/description.c


ARGUMENTE
=========

   keys
     String oder Array von Strings mit den Namen der Details.
   func
     String mit dem Namen der Funktion, die zur Auswertung aufgerufen
     wird.


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

   Es wird ein Detail hinzugefuegt, dessen Inhalt nicht von vornherein
   feststeht, sondern von aeusseren Bedingungen abhaengt. Zu diesem
   Zweck wird immer, wenn dieses Detail untersucht wird, die Funktion
   func aufgerufen, um den aktuellen Zustand des Details zu bestimmen.
   Der Funktion wird als Parameter das Schluesselwort uebergeben, mit
   dem das Detail untersucht wurde.

   VERALTET: Bitte AddDetail mit Closure benutzen.


BEISPIELE
=========

   Ein zustandsabhaengiges Detail:

     int hebel_betaetigt;
     string hebel(string key);
     ...
     // ALT: AddSpecialDetail( ({ "hebel", "schalter" }), "hebel" );
     AddDetail(({ "hebel", "schalter" }), #'hebel );
     ...
     string hebel(string key)
     { if(hebel_betaetigt)
         return "Der "+capitalize(key)+" steht auf EIN.\n";
       else
         return "Der "+capitalize(key)+" steht auf AUS.\n";
     }

   Man erhaelt verschiedene Ergebnisse beim Untersuchen, je nachdem
   ob das Flag hebel_betaetigt gesetzt ist oder nicht.


BEMERKUNG
=========

   Intern werden Details und SpecialDetails im selben Mapping
   verwaltet.
   Man kann statt dieser Funktion deshalb auch AddDetail mit Closures
   nutzen.


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

20.01.2015, Zesstra
