DoWear()

FUNKTION:
     varargs int DoWear(int silent, int all);

DEFINIERT IN:
     /std/armour/combat.c

ARGUMENTE:
     silent
          Falls ungleich 0, so werden keine Meldungen ausgegeben.
     all
          Ungleich 0, wenn DoWear() aus einem "ziehe alles an" heraus
          aufgerufen wurde.

BESCHREIBUNG:
     Es wird versucht, die Ruestung anzuziehen. Dabei wird eine eventuell
     vorhandene WearFunc() mit beruecksichtigt.

RUeCKGABEWERT:
     0, wenn man die Ruestung gar nicht bei sich hat oder sie schon an hat,
     ansonsten 1.

BEMERKUNGEN:
     Auch wenn eine 1 zurueckgegeben wird, muss das nicht heissen, dass die
     Ruestung erfolgreich angezogen wurde!

     Gruende fuer ein Fehlschlagen des Anziehens koennen sein:
        o Man hat die Ruestung nicht bei sich.
        o Man hat die Ruestung schon an.
        o Man hat schon eine Ruestung des gleichen Typs an.
        o Der Typ der Ruestung oder die Ruestungsklasse ist illegal.
        o Falls definiert: WearFunc() gab 0 zurueck.
        o Falls es sich um einen Schild handelt: Man hat keine Hand mehr
          frei.

SIEHE AUCH:
     DoUnwear(), WearFunc(), InformWear(), P_EQUIP_TIME, 
     /std/armour/combat.c, P_UNWEAR_MSG, P_WEAR_MSG

----------------------------------------------------------------------------
Last modified: Sun Jun 27 22:22:00 1999 by Paracelsus
