
WearArmour()
************


FUNKTION
========

   public int WearArmour(object ob)


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

   /std/living/clothing.c


ARGUMENTE
=========

   object ob
     Die Ruestung, die angezogen wird.


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

   Das Lebewesen, in dem diese Funktion gerufen wird, zieht die Ruestung
   <ob> an.
   ABER: 'Anziehen' bedeutet in diesem Kontext lediglich, dass die
   Ruestung/Kleidung in P_ARMOURS eingetragen wird. Es finden zur Zeit keine
   Pruefungen statt, ob das Lebewesen den Gegenstand ueberhaupt anziehen
   kann. Genausowenig werden Funktionen wie InformWear() gerufen oder
   etwaige Stat-Boni aktiviert.
   Die Funktion ist nur dazu gedacht, im Zuge des Anziehens eines Objekts
   von diesem im Lebewesen gerufen zu werden.


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

   1, wenn das Anziehen erfolgreich war.
   0 sonst.


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

   Nicht von Hand aufrufen, es sei denn man weiss genau, was man tut. Und am
   besten auch dann nicht.


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

   Wear(), WearClothing(), Unwear(), UnwearArmour(), UnwearClothing()
   P_CLOTHING, P_ARMOURS
   FilterClothing(), FilterArmours()


ZULETZT GEAeNDERT
=================

14.03.2009, Zesstra
