RemoveExtraLook()

int RemoveExtraLook(string look);

DEFINIERT IN:
   /std/living/description.c

BESCHREIBUNG:
   Der Extralook erscheint in der Langbeschreibung des Lebewesens.
   Eintraege koennen mit dieser Funktion (vorzeitig) wieder entfernt werden.

ARGUMENTE:
  - string look:
    Schluesselwort, unter dem der Eintrag, den man entfernen moechte, von
    AddExtraLook() registriert wurde.

RUECKGABEWERTE:
  > 0, falls der Eintrag erfolgreich entfernt wurde.
  < 0 sonst.
    -1: keinen (gueltigen) <key> uebergeben.
    -2: kein Eintrag fuer <key> gefunden.

BEMERKUNGEN:
  Beim Entfernen mit dieser Funktion wird die "Endemeldung" des entfernten
  Eintrages nicht ausgegeben.

BEISPIELE:
  # Extralook registrieren.
  living->AddExtraLook("@WER1 wird von einer Horde Daemonen verfolgt.",
                       "ennox_daemonenhordenverfolgerlook");
  # Nun kann der Eintrag auch wieder entfernt werden:
  living->RemoveExtraLook("ennox_daemonenhordenverfolgerlook");

SIEHE AUCH:
   AddExtraLook(),
   P_INTERNAL_EXTRA_LOOK

14.05.2007, Zesstra

