SetRealAttribute()
******************


FUNKTION
========

   int SetRealAttribute(string attr, int val)


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

   /std/living/attributes.c


ARGUMENTE
=========

   attr       - zu setzendes Attribut
   val        - Wert


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

   Setzt den realen Wert des Attributes, d.h. das reine Attribut,
   wenn moeglich. Lediglich eine Alias-Methode fuer SetAttr().
   (QueryAttribute() gibt also val + etwaige Offsets/Modifier zurueck)


RUeCKGABEWERT
=============

   Den gesetzten Wert.


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

   Bitte nicht auf Spieler anwenden!


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

   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
   SetTimedAttrModifier(), QueryTimedAttrModifier(),
   DeleteTimedAttrModifier(),
   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c

Last modified: Tue Jul 27 20:00:20 2004 by Muadib
