QueryAttributeOffset()
**********************


FUNKTION
========

   int QueryAttributeOffset(string attr)


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

   /std/living/attributes.c


ARGUMENTE
=========

   attr       -       gesuchter AttributOffset


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

   Die Offsets des Attributs (inklusive Modifier) werden zurueckgegeben.


BEISPIELE
=========

   if(this_player()->QueryAttributeOffset(A_STR)<0)
    write("Du bist geschwaecht.\n");


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
