
P_NAME
******


NAME
====

   P_NAME "name"


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

   <thing/description.h>


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

   In dieser Property wird der Name eines Objektes vermerkt. Wenn der Name
   regelmaessig dekliniert wird, reicht ein einfacher String. Wird der
   Name unregelmaessig dekliniert, so kann man ein Array von vier Strings
   mit dem Namen im Nominativ, Genitiv, Dativ und Akkusativ (in dieser
   Reihenfolge) angeben.

   Die Funktion name() behandelt recht viele Sonderfaelle; man sollte den
   Namen also erst einmal in der Form eines einzelnen Strings pruefen.

   Eine Sonderrolle nehmen Unit-Objekte ein: Hier kann man einen Namen
   fuer den Singular und einen Namen fuer den Plural vergeben.

   Setzt man P_NAME eines Unit-Objekts auf einen einfachen String, so wird
   dieser als Name sowohl im Singular als auch im Plural verwendet.

   Uebergibt man ein Array von Strings, so wird der erste Eintrag fuer den
   Singular und der zweite Eintrag fuer den Plural benutzt.

   Bei Unit-Objekten ist es nicht moeglich, auch noch zwischen den
   verschiedenen Faellen zu unterscheiden.


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

   Diese Property sollte nur den reinen Namen enthalten; will man dem
   Namen noch Adjektive voranstellen, so sollte man dies mit P_NAME_ADJ
   bewerkstelligen, also statt

   SetProp(P_NAME, ({ "alter Hut", "alten Huts",
                      "alten Hut", "alten Hut" }) );

   besser

   SetProp(P_NAME, "Hut");
   SetProp(P_NAME_ADJ, "alt");

   Bei Lebewesen wird lower_case(P_NAME) (bei Arrays das erste Element
   daraus) automatisch als LivingName gesetzt.


BEISPIELE
=========

   Ein regelmaessig deklinierbarer Name:

   SetProp(P_NAME, "Arkshat");

   Hier ein Beispiel fuer einen unregelmaessig deklinierbaren Namen:

   SetProp(P_NAME, ({ "Drache", "Drachen", "Drachen", "Drachen" }));

   Und schliesslich der Name eines allseits bekannten Unit-Objektes:

   SetProp(P_NAME, ({ "Muenze", "Muenzen" }));


SIEHE AUCH
==========

   /std/thing/description.c, name(), P_NAME_ADJ, set_living_name(),
   find_living(), find_livings()

Last modified: 19. Okt. 2015, Arathorn.
