
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
