InformUnwear()
==============

FUNKTION
--------
::

	protected void InformUnwear(object pl, int silent, int all)

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

        /std/clothing/wear.c

ARGUMENTE
---------
::

	pl
          Das Lebewesen, das die Ruestung ausgezogen hat.
        silent
          Flag, ob Meldungen unterdruckt werden sollen.
        all
          Flag, ob die Ruestung mit "ziehe alles aus"/
          "ziehe alle ruestungen aus" ausgezogen wurde.

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

        Diese Funktion wird aufgerufen, wenn die Ruestung erfolgreich
        ausgezogen wurde.

RUeCKGABEWERT
-------------
::

	keiner

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

        InformUnwield(), InformWield(), InformWear()


06.10.2007, Zesstra

