SetAttr()
*********


FUNKTION
========

   public 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

Letzte Aenderung: 22.12.2016, Bugfix
