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. 
