deregister_modifier()
=====================

FUNKTION
--------
::

     void deregister_modifier(object modifier)

DEFINIERT IN
------------
::

     /std/living/attributes.c

PARAMETER
---------
::

     modifier	- Objekt mit P_X_ATTR_MOD oder P_M_ATTR_MOD

BESCHREIBUNG
------------
::

     Meldet einen Modifier im Spieler ab. Wird durch RemoveSensitiveObject
     beziehungsweise beim Ausziehen oder Wegstecken gerufen.
     Muss nicht direkt gerufen werden. Bei Veraenderungen von Modifikatoren
     sollte stattdessen UpdateAttributes gerufen werden.     

SIEHE AUCH
----------
::

     QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
     SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
     register_modifier(),P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, 
     P_ATTRIBUTES_MODIFIER, P_X_ATTR_MOD, P_M_ATTR_MOD, 
     /std/living/attributes.c

13.Jun.2004, Muadib

