RemoveFunc()

FUNKTION

int RemoveFunc(object ruest, int info, object user);

DEFINIERT IN

eigenen Objekten (fuer /std/clothing/wear)

ARGUMENTE

ruest (object)
     Die Ruestung/Kleidung, die ausgezogen werden soll.
info (int)
     Bei (info&M_SILENT) wird keine Meldung ueber das Ausziehen
     ausgegeben.
     Bei (info&M_NOCHECK) wird die Kleidung ausgezogen, egal was diese
     Funktion zurueckgibt. Dies tritt insbesondere dann auf, wenn der
     Spieler, der die Ruestung traegt, stirbt und die Ruestung in
     die Leiche bewegt wird.
user (object)
     Das Lebewesen, welches die Ruestung/Kleidung gerade traegt und sie
     ausziehen will.

BESCHREIBUNG

Mit dieser Funktion kann man pruefen, ob sich das Kleidungsstueck bzw.
Ruestung <ruest> von this_player() ausziehen laesst oder nicht.
Kann die Ruestung ausgezogen werden, so muss ein Wert ungleich 0
zurueckgegeben werden.



Diese Funktion meldet nur einen _Wunsch_ an. Dieser kann ignoriert
werden (z.B. bei bestimmten Bewegungen, Tod des Spielers etc.).
Unabhaengig vom Wert dieser Funktion kann das Ausziehen noch Scheitern
oder Erzwungen werden.
Wenn ihr sicher sein wollt, dass der Spieler ein Objekt angezogen hat,
benutzt bitte InformUnwear().

RUeCKGABEWERT

0, wenn sich die Ruestung nicht ausziehen laesst, ansonsten ungleich 0.

BEMERKUNGEN

Verfluchte Ruestungen, die sich erst nach Entfernung des Fluches wieder
ausziehen lassen, sollte man besser mit P_CURSED realisieren (man spart
die RemoveFunc() ein).
Bitte nicht drauf verlassen, dass this_player() das ausziehende Lebewesen
ist.
Die Reihenfolge der Argumente ist etwas unschoen, aber leider wurde <user>
erheblich spaeter hinzugefuegt und es war unmoeglich, einige hundert
Objekte zu aendern.

BEISPIELE

Ein Umhang, den man nur mit guter Einstellung wieder ausziehen kann:

inherit "std/armour.c";

#include <properties.h>
#include <moving.h>

create()
{
  ::create();

  SetProp(P_ARMOUR_TYPE, AT_CLOAK);
  /* zig weitere SetProp's, um den Umhang zu konfigurieren */

  /* RemoveFunc() ist im Umhang selbst zu finden */
  SetProp(P_REMOVE_FUNC, this_object());
}

int RemoveFunc(object me, int info, object user)
{
  if (user->QueryProp(P_ALIGN) >= 0 || (info&M_NOCHECK))
    return 1;   /* gute Charaktere koennen den Umhang ausziehen */

  /* Ansonsten geben wir evtl. einen entsprechenden Hinweis aus: */
  if (!(info&M_SILENT))
      write( "Der Umhang wird von Deiner Bosheit so sehr "
            +"angezogen, dass Du ihn\nnicht mehr ausziehen kannst!\n");
  return 0;
}

SIEHE AUCH

P_WEAR_MSG, P_UNWEAR_MSG, P_WIELD_MSG, P_UNWIELD_MSG
DoUnwear(), DoWear(), InformWear(), InformUnwear()
/std/clothing/wear.c

02.07.2013, Zesstra