long()
======

FUNKTION
--------
::

     varargs string long(int mode);

DEFINIERT IN
------------
::

     /std/thing/description.c

ARGUMENTE
---------
::

     int mode		- Modifikatoren fuer die Anzeige, falls this_object()
			  ein Container ist
			  (siehe "man make_invlist")

BESCHREIBUNG
------------
::

     Der Inhalt der Property P_LONG wird ausgewertet und zurueckgegeben.
     Falls das Objekt ein Container und transparent (offen) ist, wird
     zudem make_invlist() auf den Inhalt zurueckgegeben.

RUeCKGABEWERT
-------------
::

     Die Langbeschreibung des Objektes.

BEMERKUNGEN
-----------
::

     Durch Ueberladen von long() lassen sich noch weitere Eigenschaften des
     Objektes anzeigen. Behaelter koennen zum Beispiel noch ihren Inhalt
     anzeigen, Lebewesen ihren Gesundheitszustand, o.ae.

SIEHE AUCH
----------
::

     Aehnliches:	short()
     Properties:	P_LONG, P_INVIS, P_TRANSPARENT
     Sonstiges:		make_invlist()

11. Mai 2004 Gloinson

