UnwieldFunc()
*************


FUNKTION
========

   int UnwieldFunc(object weapon, int info, object user);


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

   eigenen Objekten, fuer /std/weapon/combat.c


ARGUMENTE
=========

   weapon (object)
        Die Waffe, die weggesteckt werden soll.
   info (int)
        Bei (info&M_SILENT) wird keine Meldung ueber das Wegstecken
        ausgegeben.
        Bei (info&M_NOCHECK) wird die Waffe auch weggesteckt, wenn
        sie verflucht ist. Die tritt insbesondere dann auf, wenn der
        Spieler, der die Waffe benutzt, stirbt und die Waffe in
        die Leiche bewegt wird.
   user (object)
        Das Lebewesen, welches die Waffe gerade gezueckt hat und sie nun
        ausziehen will.


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

   Hier koennen zusaetzliche Abfragen vorgenommen werden, ob sich die
   Waffe <weapon> wegstecken laesst oder nicht.


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

   0, wenn sich die Waffe nicht wegstecken laesst, ansonsten ungleich 0.


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

   Verfluchte Waffen, die sich erst nach Entfernung des Fluches wegstecken
   lassen, sollte man besser mit P_CURSED realisieren.
   Selbst wenn man einen Wert ungleich Null zurueckgibt, ist das noch
   keine Garantie, dass sich die Waffe auch wirklich zuecken laesst! Der
   Spieler koennte zum Beispiel noch eine Waffe gezueckt haben, die sich
   nicht wegstecken laesst, etc.
   Wenn ihr sicher sein wollt, dass der Spieler ein Objekt gezueckt hat,
   benutzt bitte InformWear().
   Bitte nicht drauf verlassen, dass this_player() das Lebewesen ist,
   welches die Waffe gezueckt und wegstecken will.
   Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
   erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
   Objekte zu aendern.


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

   P_WIELD_MSG, P_UNWIELD_MSG, P_WEAR_MSG, P_UNWEAR_MSG
   DoWield(), DoUnwield(), InformWield(), InformUnwield(),
   UnwieldFunc, WieldFunc()
   /std/weapon/combat.c

02.02.2009, Zesstra
