FreeHands()
***********


FUNKTION
========

   public varargs int FreeHands(object ob)


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

   /std/living/combat.c


ARGUMENTE
=========

   ob - das Objekt, dessen Handnutzung vorbei ist
      - kann 0 sein, dann wird PO benutzt


RUECKGABEWERT
=============

   0, wenn kein Objekt uebergeben wurde oder kein PO existiert
   1, sonst


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

   Befreit die Haende eines Livings von ein bestimmten Objekt.
   Es werden _alle_ Haende wieder freigegeben.


BEISPIELE
=========

   > halte seil fest
   ...
   this_player()->UseHands(this_object(),2);
   ...

   > lasse seil los
   ...
   this_player()->FreeHands(this_object());
   ...


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

   P_HANDS, P_HANDS_USED_BY
   P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
   UseHands

1.Feb.2004 Gloinson
