TestAttributeLock()
*******************

********************* OBSOLETE LFUN
*********************************** TestAttributeLock()


FUNKTION
========

   string TestAttributeLock(mapping check)


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

   /std/living/attributes.c


PARAMETER
=========

   check      - Mapping mit Attributen: ([<attr>:<wert>])


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

   Prueft, ob eines der im Mapping enthaltenen Attribute blockiert
   ist (bereits durch einen anderen Modifier belegt wurde).



   Da Modifier nicht mehr direkt blockieren ist diese Funktion obsolet
   und in Livings inzwischen nicht mehr existent.


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

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

11.05.2007, Zesstra
