P_NAME_ADJ

NAME:
     P_NAME_ADJ "name_adj"

DEFINIERT IN:
     <thing/description.h>

BESCHREIBUNG:
     Diese Property enthaelt ein oder mehrere Adjektive in Form eines Arrays
     von Strings. Es ist nur der Wortstamm anzugeben! Die Adjektive werden
     von der Funktion name() dekliniert und vor den Namen gesetzt, wirken
     also als Aufzaehlung von Adjektiven vor dem Namen.

     Die hier angegebenen Adjektive dienen nur zur Ausgabe! Soll sich das
     Objekt auch ueber Adjektive ansprechen lassen, muss man diese mit
     AddAdjective() uebergeben.

     Soll das Objekt nur ein einzelnes Namensadjektiv besitzen, kann man dem
     SetProp()-Aufruf auch einen String uebergeben; gespeichert wird die
     Property aber in jedem Fall als Array.

     Wenn ein Adjektiv unregelmaessig ist, kann man die vier Faelle auch
     als Array uebergeben. Man muss dann aber Arrays schachteln, damit von den
     mehrfachen Adjektiven unterschieden werden kann.
	
BEISPIELE:
     SetProp(P_NAME, "Hut");
     SetProp(P_NAME_ADJ, "alt");

     name(WESSEN,1)      => "des alten Huts"


     // Zwei Adjektive, gleichrangig zu Substantiv
     SetProp(P_NAME_ADJ, ({"alt", "gammelig"}));

     name(WESSEN,1)      => "des alten, gammeligen Huts"


     // Zwei Adjektive, erstes ist Attribut zu zweitem
     falsch:  SetProp(P_NAME_ADJ, ({"gruen", "gestreift"}));
              name(WESSEN,1)      => "des gruenen, gestreiften Huts"
     richtig: SetProp(P_NAME_ADJ, ({"gruen gestreift"}));
              name(WESSEN,1)      => "des gruen gestreiften Huts"

     // Unregelmaessiges Adjektiv
     SetProp( P_NAME_ADJ,({({"rosa","rosa","rosa","rosa"})});
              name(WESSEN,1)         => "des rosa Huts"
     // Ohne inneres Array haette man 4 mal rosa als Adjektiv
     // => "des rosaen, rosaen, rosaen, rosaen Huts"

SIEHE AUCH:
     /std/thing/description.c, name(), P_NAME, DeclAdj()

23.April 2007 Rumata
