SetAttr()
FUNKTION:
     private static int SetAttr(string attr, int val)

DEFINIERT IN:
     /std/living/attributes.c

ARGUMENTE:
     attr       - zu setzendes Attribut
     val        - Wert

BESCHREIBUNG:
     Filtert den Wert durch _filterattr(). Dadurch werden STR, INT, CON, DEX
     auf 20 begrenzt. Setzt dann das Attribut.
     Offsets werden hier nicht beruecksichtigt, QueryAttribute() gibt also
     val + etwaige Offsets/Modifier zurueck.

RUeCKGABEWERT:
     Tatsaechlich gesetzter Wert.

BEMERKUNGEN:
     Wird von SetAttribute() und SetRealAttribute() aufgerufen.

SIEHE AUCH:
     QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
     SetAttribute(), SetRealAttribute(), UpdateAttributes(),
     TestAttributeLock(),
     P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
     P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c

13.Nov.2002, Gloinson